🔍 Product Schema Blocks
Product schema blocks provide JSON Schema definitions for product data validation in Nodeblocks applications. These schemas ensure data integrity and provide clear contracts for product-related API endpoints.
🎯 Overview
Product schema blocks are designed to:
- Validate product data before processing
- Support batch operations for bulk product management
- Enable product duplication and copying workflows
- Handle product search and filtering capabilities
- Provide flexible product structures for various use cases
- Support efficient bulk updates and deletions
📋 Product Schema Types
Base Product Schemas
Core product structures used as foundations for other schemas.
Product Creation Schemas
Schemas for product creation with required field validation.
Product Update Schemas
Schemas for product modifications with optional field validation.
Product Batch Operation Schemas
Schemas for batch creation, update, deletion, and duplication.
Product Query Schemas
Schemas for product filtering and pagination parameters.
🔧 Available Product Schemas
productSchema
Base product schema defining the structure for product data.
Purpose: Defines basic product structure for reuse across other schemas
Schema Details:
- Type:
object
- Required Fields: None (base schema)
- Additional Properties:
false
(strict validation) - Properties:
name?: string
- Product namedescription?: string
- Product description
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { productSchema } = schemas;
const validate = ajv.compile(productSchema as SchemaDefinition);
const isValid = validate({ name: 'Product Name', description: 'Description' });
createProductSchema
Product creation schema with required fields for new products.
Purpose: Validates product data during creation
Schema Details:
- Type:
object
- Required Fields:
name
,description
- Additional Properties:
false
(strict validation) - Content-Type:
application/json
- Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { createProductSchema } = schemas;
const schema = createProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: 'Product Name', description: 'Description' });
updateProductSchema
Product update schema with optional fields for product modifications.
Purpose: Validates partial product data updates
Schema Details:
- Type:
object
- Required Fields: None (all fields optional)
- Additional Properties:
false
(strict validation) - Content-Type:
application/json
- Parameters:
productId
(path parameter) - Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateProductSchema } = schemas;
const schema = updateProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ description: 'Updated description' });
createProductBatchSchema
Product batch creation schema for creating multiple products at once.
Purpose: Validates arrays of product data for bulk creation
Schema Details:
- Type:
array
- Required Fields:
name
,description
(for each item) - Additional Properties:
false
(strict validation) - Content-Type:
application/json
- Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { createProductBatchSchema } = schemas;
const schema = createProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate([
{ name: 'Product 1', description: 'Desc 1' },
{ name: 'Product 2', description: 'Desc 2' }
]);
updateProductBatchSchema
Product batch update schema for updating multiple products with same data.
Purpose: Validates bulk product updates with product IDs and update data
Schema Details:
- Type:
object
- Required Fields:
ids
,data
- Additional Properties:
false
(strict validation) - Content-Type:
application/json
- Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateProductBatchSchema } = schemas;
const schema = updateProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ ids: ['id1', 'id2'], data: { name: 'Updated' } });
deleteProductBatchSchema
Product batch deletion schema for removing multiple products by IDs.
Purpose: Validates arrays of product IDs for bulk deletion
Schema Details:
- Type:
array
- Items:
string
(product IDs) - Content-Type:
application/json
- Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteProductBatchSchema } = schemas;
const schema = deleteProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate(['id1', 'id2', 'id3']);
copyProductBatchSchema
Product batch copy schema for duplicating multiple products by IDs.
Purpose: Validates arrays of product IDs for bulk duplication
Schema Details:
- Type:
array
- Items:
string
(product IDs) - Content-Type:
application/json
- Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { copyProductBatchSchema } = schemas;
const schema = copyProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate(['id1', 'id2', 'id3']);
getProductSchema
Product retrieval schema for getting single products by ID.
Purpose: Validates requests for retrieving specific products
Schema Details:
- Parameters:
productId
(path parameter) - Purpose: Validates requests for retrieving specific products
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { getProductSchema } = schemas;
const schema = getProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ productId: 'prod123' });
deleteProductSchema
Product deletion schema for removing products by ID.
Purpose: Validates requests for deleting specific products
Schema Details:
- Parameters:
productId
(path parameter) - Purpose: Validates requests for deleting specific products
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteProductSchema } = schemas;
const schema = deleteProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ productId: 'prod123' });
copyProductSchema
Product copy schema for duplicating products by ID.
Purpose: Validates requests for duplicating specific products
Schema Details:
- Parameters:
productId
(path parameter) - Purpose: Validates requests for duplicating specific products
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { copyProductSchema } = schemas;
const schema = copyProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ productId: 'prod123' });
findProductsSchema
Product search schema for finding products with optional filtering and pagination.
Purpose: Validates requests for searching and paginating products
Schema Details:
- Query Parameters:
name?: string
- Filter by product namedescription?: string
- Filter by product descriptionpage?: number
- Pagination page numberlimit?: number
- Pagination limit
- Purpose: Validates requests for searching and paginating products
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { findProductsSchema } = schemas;
const schema = findProductsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: 'Product', page: 1, limit: 10 });
🔗 Related Documentation
- Product Domain Overview - Product domain overview