メインコンテンツまでスキップ
バージョン: 0.6.0 (Latest)

🔍 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 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 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 });