Skip to main content
Version: 0.4.2 (Previous)

🔍 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 name
    • description?: string - Product description

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { productSchema } = schemas;

const schema = productSchema({});
const validate = ajv.compile(schema.schemas 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 name
    • description?: string - Filter by product description
    • page?: number - Pagination page number
    • limit?: 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 });