メインコンテンツまでスキップ
バージョン: 0.9.0 (最新)

🔍 製品スキーマ

製品スキーマは、Nodeblocksアプリケーションにおける製品データ検証のためのJSON Schema定義を提供します。これらのスキーマは、データの整合性を確保し、製品関連のAPIエンドポイントの明確なコントラクトを提供します。


🎯 概要

製品スキーマは以下の目的で設計されています:

  • 処理前に製品データを検証
  • メタデータと型検証を含む製品画像をサポート
  • 自動ベースエンティティ割り当てを含む画像配列を処理
  • 一括製品管理のためのバッチ操作をサポート
  • 製品の複製とコピーワークフローを有効化
  • 製品検索とフィルタリング機能を処理
  • さまざまなユースケースのための柔軟な製品構造を提供
  • 効率的な一括更新と削除をサポート

📋 製品スキーマタイプ

ベース製品スキーマ

他のスキーマの基礎として使用されるコア製品構造。

製品画像スキーマ

objectIdとtypeフィールドを含む製品画像検証のためのスキーマ。

製品作成スキーマ

画像を含む必須フィールド検証付き製品作成のためのスキーマ。

製品更新スキーマ

オプションフィールド検証付き製品変更のためのスキーマ。

製品バッチ操作スキーマ

画像サポート付きバッチ作成、更新、削除、複製のためのスキーマ。

製品クエリスキーマ

製品フィルタリングとページネーションパラメータのためのスキーマ。


🔧 利用可能な製品スキーマ

productSchema

製品データの構造を定義するベース製品スキーマ。

目的: 他のスキーマ間で再利用するための基本的な製品構造を定義

スキーマ詳細:

  • Type: object
  • 必須フィールド: None (base schema)
  • Additional Properties: false (strict validation)
  • Properties:
    • name?: string - 製品名
    • description?: string - 製品説明

使用例:

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

const { productSchema } = schemas;

const validate = ajv.compile(productSchema as SchemaDefinition);
const isValid = validate({ name: 'Product Name', description: 'Description' });

productImageSchema

画像管理のためのメタデータ検証付き製品画像スキーマ。

目的: オブジェクト識別子とタイプ情報を含む製品画像の構造を定義

スキーマ詳細:

  • Type: object
  • 必須フィールド: None (base schema)
  • Additional Properties: false (strict validation)
  • Properties:
    • objectId?: string - 画像ファイルを参照するUUID形式のオブジェクト識別子
    • type?: string - 画像タイプ分類(例:'image/png'、'image/jpeg')

使用例:

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

// Used in product creation:
const productImage = {
objectId: '550e8400-e29b-41d4-a716-446655440000',
type: 'image/png'
};

createProductImageSchema

必須フィールド検証付き製品画像作成スキーマ。

目的: 作成リクエスト用の製品画像データを検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: objectId, type
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • リクエストボディ: required

使用例:

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

const { createProductImageSchema } = schemas;

const schema = createProductImageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
objectId: '550e8400-e29b-41d4-a716-446655440000',
type: 'image/png'
});

imageIdPathParameter

製品画像操作のための画像IDパスパラメータスキーマ。

目的: 画像固有のルートで使用されるimageIdパスパラメータを定義

パラメータ詳細:

  • Location: path (URL path)
  • Name: imageId
  • Required: true
  • Type: string

使用例:

// Used in route definitions:
const getImageRoute = withRoute({
path: '/products/:productId/images/:imageId',
parameters: [imageIdPathParameter]
});

deleteProductImageSchema

パスパラメータ検証付き製品画像削除スキーマ。

目的: 製品画像を削除するためのDELETEリクエストを検証

スキーマ詳細:

  • パラメータ: productId (パスパラメータ、必須), imageId (パスパラメータ、必須)
  • 目的: リクエストパスに製品IDと画像IDの両方が存在することを検証

使用例:

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

const { deleteProductImageSchema } = schemas;

// Applied in feature composition:
export const deleteProductImageFeature = compose(
deleteProductImageSchema,
deleteProductImageRoute
);

パスパラメータ:

ParameterTypeRequiredDescription
productIdstring製品識別子
imageIdstring削除する画像識別子

TypeScript型

ProductImage

製品画像データ構造の型定義。

type ProductImage = {
objectId: string; // UUID format object identifier
type: string; // Image MIME type (e.g., 'image/png', 'image/jpeg')
};

使用例:

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

const productImage: ProductImage = {
objectId: '550e8400-e29b-41d4-a716-446655440000',
type: 'image/png'
};

NormalizedProductImage

URL付き正規化製品画像の型定義。

type NormalizedProductImage = {
url: string; // Full URL to the image resource
type: string; // Image MIME type
};

使用例:

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

const normalizedImage: NormalizedProductImage = {
url: 'https://storage.example.com/images/product123.png',
type: 'image/png'
};

createProductSchema

新しい製品のための必須フィールド付き製品作成スキーマ。

目的: 作成時の製品データを検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: name, description
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • リクエストボディ: required

使用例:

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

製品変更のためのオプションフィールド付き製品更新スキーマ。

目的: 部分的な製品データの更新を検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: None (all fields optional)
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • パラメータ: productId (パスパラメータ)
  • リクエストボディ: required

使用例:

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

一度に複数の製品を作成するための製品バッチ作成スキーマ。

目的: 一括作成用の製品データ配列を検証

スキーマ詳細:

  • Type: array
  • 必須フィールド: name, description (各アイテムに対して)
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • リクエストボディ: required

使用例:

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

同じデータで複数の製品を更新するための製品バッチ更新スキーマ。

目的: 製品IDと更新データを含む一括製品更新を検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: ids, data
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • リクエストボディ: required

使用例:

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

IDで複数の製品を削除するための製品バッチ削除スキーマ。

目的: 一括削除用の製品ID配列を検証

スキーマ詳細:

  • Type: array
  • Items: string (product IDs)
  • Content-Type: application/json
  • リクエストボディ: required

使用例:

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

IDで複数の製品を複製するための製品バッチコピースキーマ。

目的: 一括複製用の製品ID配列を検証

スキーマ詳細:

  • Type: array
  • Items: string (product IDs)
  • Content-Type: application/json
  • リクエストボディ: required

使用例:

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

IDで単一の製品を取得するための製品取得スキーマ。

目的: 特定の製品を取得するためのリクエストを検証

スキーマ詳細:

  • パラメータ: productId (パスパラメータ)
  • 目的: 特定の製品を取得するためのリクエストを検証

使用例:

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

IDで製品を削除するための製品削除スキーマ。

目的: 特定の製品を削除するためのリクエストを検証

スキーマ詳細:

  • パラメータ: productId (パスパラメータ)
  • 目的: 特定の製品を削除するためのリクエストを検証

使用例:

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

IDで製品を複製するための製品コピースキーマ。

目的: 特定の製品を複製するためのリクエストを検証

スキーマ詳細:

  • パラメータ: productId (パスパラメータ)
  • 目的: 特定の製品を複製するためのリクエストを検証

使用例:

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

オプションのフィルタリングとページネーション付きで製品を検索するための製品検索スキーマ。

目的: 製品の検索とページネーションのリクエストを検証

スキーマ詳細:

  • クエリパラメータ:
    • name?: string - 製品名でフィルタ
    • description?: string - 製品説明でフィルタ
    • page?: number - ページネーションのページ番号
    • limit?: number - ページネーションの制限
  • 目的: 製品の検索とページネーションのリクエストを検証

使用例:

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

createProductVariantSchema

必須タイトルとオプションバリアントフィールド付き製品バリアント作成スキーマ。

目的: 価格設定と画像サポートを含む作成時の製品バリアントデータを検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: title
  • オプションフィールド: description, sku, imageIds, price
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • パラメータ: productId (パスパラメータ)
  • リクエストボディ: required

価格オブジェクト構造:

{
"amount": "number (optional)",
"currency": "string (optional)",
"taxIncluded": "boolean (optional)",
"taxable": "boolean (optional)"
}

使用例:

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

const { createProductVariantSchema } = schemas;

const schema = createProductVariantSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
title: 'Blue Baseball Cap',
description: 'Premium baseball cap in blue color',
sku: 'BBC-BLUE',
imageIds: ['img-456', 'img-789'],
price: {
amount: 2999,
currency: 'USD',
taxIncluded: false,
taxable: true
}
});

スキーマ構造:

{
productId: string; // required - path parameter for parent product
}

// Request body structure:
{
title: string; // required - variant title/name
description?: string; // optional - variant description
sku?: string; // optional - stock keeping unit
imageIds?: string[]; // optional - array of image identifiers
price?: { // optional - pricing information
amount?: number; // optional - price amount
currency?: string; // optional - ISO currency code
taxIncluded?: boolean; // optional - whether tax is included
taxable?: boolean; // optional - whether variant is taxable
};
}

主な機能:

  • 必須タイトル: すべてのバリアントには説明的なタイトルが必要です
  • 柔軟な価格設定: 将来の更新のためにすべての価格フィールドはオプションです
  • 画像参照: 既存の製品画像へのリンクをサポートします
  • SKUサポート: 在庫管理のためのオプションの在庫管理単位
  • 親製品コンテキスト: 親製品に関連付けるためにproductIdパスパラメータが必要です

検証ルール:

  • 追加のプロパティは許可されません(厳密なスキーマ)
  • タイトルは空でない文字列である必要があります
  • 画像IDは提供されている場合、有効な文字列である必要があります
  • 価格金額は提供されている場合、数値である必要があります

createProductVariantBulkSchema

配列検証とサイズ制限付き製品バリアント一括作成スキーマ。

目的: パスパラメータによる製品関連付けと包括的な制約を含む単一操作で複数の製品バリアントを作成するリクエストを検証

スキーマ詳細:

  • Type: array
  • 必須フィールド: title (各アイテムに対して)
  • オプションフィールド: description, sku, price, imageIds, isActive (各アイテムに対して)
  • Additional Properties: false (strict validation per item)
  • Content-Type: application/json
  • リクエストボディ: required
  • パスパラメータ: productId (required - URLパスからの製品識別子)

配列制約:

  • 最小アイテム数: 1(少なくとも1つのバリアントが必要)
  • 最大アイテム数: 100(過度に大きな一括操作を防ぐ)
  • 一意のアイテム: 強制されない(バリアントは類似していても可)

アイテムスキーマ構造:

{
title: string; // required - variant display name
description?: string; // optional - variant description
sku?: string; // optional - stock keeping unit
price?: { // optional - pricing information
amount?: number; // optional - price amount
currency?: string; // optional - ISO currency code
};
imageIds?: string[]; // optional - array of image identifiers
isActive?: boolean; // optional - availability status
}

主な機能:

  • 一括検証: 単一操作でバリアント配列全体を検証します
  • 個別要件: 各バリアントにはtitleフィールドが必要です
  • パスパラメータ検証: URLパスパラメータを介して製品IDが提供されます
  • 柔軟なフィールド: バッチ作成の柔軟性のためにほとんどのフィールドがオプションです
  • サイズ制限: 非常に大きな一括操作を防ぎます
  • 製品関連付け: すべてのバリアントがパスパラメータを介して製品にリンクされます

使用例:

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

const { createProductVariantBulkSchema } = schemas;

const schema = createProductVariantBulkSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate([
{
title: 'Small - Red',
sku: 'S-RED',
price: { amount: 1999, currency: 'USD' }
},
{
title: 'Medium - Blue',
sku: 'M-BLUE',
price: { amount: 2099, currency: 'USD' }
}
]);

検証ルール:

  • 配列は1〜100個のアイテムを含む必要があります
  • 各アイテムにはtitleフィールドが必要です
  • パスパラメータproductIdは必須です
  • 個別のアイテムに追加のプロパティは許可されません
  • 価格オブジェクト構造は標準の価格設定スキーマに従います
  • 画像IDは提供されている場合、有効な文字列である必要があります
  • SKUは提供されている場合、文字列である必要があります

一般的な検証エラー:

  • バリアントアイテムに必須のtitleフィールドが欠落しています
  • パスパラメータproductIdが欠落しているか無効です
  • 配列サイズが1〜100の範囲外です
  • オプションフィールドのデータ型が無効です
  • リクエストアイテムに追加のプロパティが含まれています

updateProductVariantBulkSchema

一括操作検証付き製品バリアント一括更新スキーマ。

目的: 包括的な制約とデータ検証を含む単一操作で複数の製品バリアントを更新するリクエストを検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: ids, data (リクエストボディ), productId (パスパラメータ)
  • オプションフィールド: dataオブジェクト内のさまざまな製品バリアントフィールド
  • Content-Type: application/json
  • リクエストボディ: required
  • パスパラメータ: productId (required - URLパスからの製品識別子)

スキーマ構造:

{
parameters: [{ productId: string }]; // required - product ID path parameter
requestBody: { // required - bulk update payload
content: {
'application/json': {
schema: {
ids: string[]; // required - array of variant IDs (1-100 items)
data: { // required - variant update data
description?: string; // optional - variant description
imageIds?: string[]; // optional - array of image IDs
price?: { // optional - pricing information
amount: number; // required - price amount
currency: string; // required - currency code
taxIncluded: boolean; // required - whether tax is included
taxable: boolean; // required - whether item is taxable
};
sku?: string; // optional - stock keeping unit
title?: string; // optional - variant title
};
required: ['ids', 'data'] // required fields in request body
}
}
}
}
}

主な機能:

  • 一括検証: 単一操作で一括更新ペイロード全体を検証します
  • サイズ制限: パフォーマンスのためにID配列を1〜100アイテムに制限します
  • 柔軟な更新: 更新データ内のすべての製品バリアントフィールドがオプションです
  • パスパラメータ検証: URLパスにproductIdが提供されることを保証します
  • 型安全性: ネストされたオブジェクトと配列の包括的な検証

使用例:

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

const { updateProductVariantBulkSchema } = schemas;

const schema = updateProductVariantBulkSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [{ productId: 'prod-123' }],
requestBody: {
content: {
'application/json': {
schema: {
ids: ['var-123', 'var-456'],
data: {
description: 'Updated description',
price: { amount: 2999, currency: 'USD', taxIncluded: true, taxable: true }
}
}
}
}
}
});

検証ルール:

  • productIdパスパラメータは必須で、有効な文字列である必要があります
  • ids配列は1〜100個のバリアントID文字列を含む必要があります
  • dataオブジェクトは存在し、有効な製品バリアントフィールドを含む必要があります
  • data内のすべてのフィールドはオプションです(部分更新用)
  • 価格オブジェクト構造は提供されている場合、標準の価格設定スキーマに従います
  • 画像IDは提供されている場合、有効な文字列である必要があります
  • リクエストボディに追加のプロパティは許可されません

一般的な検証エラー:

  • 必須のproductIdパスパラメータが欠落しています
  • リクエストボディに必須のidsまたはdataフィールドが欠落しています
  • ID配列サイズが1〜100の範囲外です
  • オプションフィールドのデータ型が無効です
  • リクエストボディに追加のプロパティが含まれています
  • 無効なネストされたオブジェクト構造(例:不正な価格オブジェクト)

deleteProductVariantBulkSchema

バリアントID配列検証付き製品バリアント一括削除スキーマ。

目的: 包括的な制約とサイズ制限を含む製品バリアントの一括削除リクエストを検証

スキーマ詳細:

  • Type: array
  • 必須フィールド: 文字列の配列 (バリアントID), productId (パスパラメータ)
  • Content-Type: application/json
  • リクエストボディ: required
  • パスパラメータ: productId (required - URLパスからの製品識別子)

スキーマ構造:

{
parameters: [{ productId: string }]; // required - product ID path parameter
requestBody: {
content: {
'application/json': {
schema: string[]; // required - array of variant IDs (1-100 items)
};
};
required: true;
};
}

主な機能:

  • 配列検証: バリアントID文字列の配列全体を検証します
  • サイズ制限: パフォーマンスのために配列を1〜100アイテムに制限します
  • パスパラメータ検証: URLパスにproductIdが提供されることを保証します
  • 型安全性: 配列構造と文字列型の包括的な検証

使用例:

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

const { deleteProductVariantBulkSchema } = schemas;

const schema = deleteProductVariantBulkSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [{ productId: 'prod-123' }],
requestBody: {
content: {
'application/json': {
schema: ['var-123', 'var-456', 'var-789']
}
}
}
});

検証ルール:

  • productIdパスパラメータは必須で、有効な文字列である必要があります
  • リクエストボディは文字列の配列である必要があります
  • 配列は1〜100個のバリアントID文字列を含む必要があります
  • リクエストボディに追加のプロパティは許可されません

一般的な検証エラー:

  • 必須のproductIdパスパラメータが欠落しています
  • リクエストボディが配列ではありません
  • 配列に1未満または100を超えるアイテムが含まれています
  • 配列に非文字列値が含まれています
  • リクエストボディに追加のプロパティが含まれています

getProductVariantSchema

必須パスパラメータ検証付き製品バリアント取得スキーマ。

目的: IDによる個別の製品バリアントを取得するリクエストを検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: productId, productVariantId (両方ともパスパラメータ)
  • Additional Properties: false (strict validation)

スキーマ構造:

{
productId: string; // required - 親製品識別子 (path)
productVariantId: string; // required - 製品バリアント識別子 (path)
}

主な機能:

  • パスパラメータ検証: 製品IDとバリアントIDの両方が提供されることを保証します
  • 厳密な検証: 追加のプロパティは許可されません
  • シンプルな構造: 必要なパスパラメータのみを検証します

使用例:

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

const { getProductVariantSchema } = schemas;

const schema = getProductVariantSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
productId: 'prod-123',
productVariantId: 'var-456'
});

検証ルール:

  • productIdは有効な文字列である必要があります(必須)
  • productVariantIdは有効な文字列である必要があります(必須)
  • リクエストに追加のプロパティは許可されません

updateProductVariantSchema

オプションフィールド検証付き製品バリアント更新スキーマ。

目的: すべてのフィールドがオプションの既存の製品バリアントへの部分更新を検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: None (すべてのフィールドがオプション)
  • オプションフィールド: title, description, sku, imageIds, price
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • パラメータ: productId, productVariantId (両方とも必須パスパラメータ)
  • リクエストボディ: required(ただし、no-op更新の場合は空のオブジェクトでも可)

スキーマ構造:

{
productId: string; // required - 親製品識別子 (path)
productVariantId: string; // required - 製品バリアント識別子 (path)
}

// Request body structure (all fields optional):
{
title?: string; // optional - product variant title
description?: string; // optional - variant description
sku?: string; // optional - stock keeping unit
imageIds?: string[]; // optional - array of image identifiers
price?: { // optional - pricing information
amount?: number; // optional - price amount
currency?: string; // optional - ISO currency code
taxIncluded?: boolean; // optional - whether tax is included
taxable?: boolean; // optional - whether variant is taxable
};
}

主な機能:

  • 部分更新: すべてのフィールドがオプションで、対象を絞った更新が可能です
  • 柔軟な価格設定: 価格オブジェクトフィールドはすべてオプションで、段階的な更新に対応します
  • 画像管理: 他のフィールドに影響を与えずに画像参照を更新できます
  • パスパラメータ検証: 製品IDとバリアントIDの両方が提供されることを保証します
  • 厳密な検証: 追加のプロパティは許可されません

使用例:

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

const { updateProductVariantSchema } = schemas;

const schema = updateProductVariantSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
productId: 'prod-123',
productVariantId: 'var-456'
}, {
price: {
amount: 2999,
currency: 'USD'
}
});

検証ルール:

  • パスパラメータproductIdproductVariantIdは必須です
  • リクエストボディは空のオブジェクトでも可能です(no-op更新)
  • すべてのリクエストボディフィールドはオプションです
  • imageIdsは提供されている場合、文字列の配列である必要があります
  • 価格オブジェクト構造は定義されたスキーマに従います
  • リクエストボディに追加のプロパティは許可されません

deleteProductVariantSchema

必須パスパラメータ検証付き製品バリアント削除スキーマ。

目的: IDによる個別の製品バリアントを削除するリクエストを検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: productId, productVariantId (両方ともパスパラメータ)
  • Additional Properties: false (strict validation)

スキーマ構造:

{
productId: string; // required - 親製品識別子 (path)
productVariantId: string; // required - 製品バリアント識別子 (path)
}

主な機能:

  • パスパラメータ検証: 製品IDとバリアントIDの両方が提供されることを保証します
  • シンプルな構造: 削除に必要なパスパラメータのみを検証します
  • リクエストボディなし: DELETE操作ではリクエストボディは不要です

使用例:

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

const { deleteProductVariantSchema } = schemas;

const schema = deleteProductVariantSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
productId: 'prod-123',
productVariantId: 'var-456'
});

検証ルール:

  • productIdは有効な文字列である必要があります(必須パスパラメータ)
  • productVariantIdは有効な文字列である必要があります(必須パスパラメータ)
  • リクエストに追加のプロパティは許可されません

findProductVariantsSchema

ページネーションと製品ID検証付き製品バリアント取得スキーマ。

目的: オプションのページネーションパラメータを含む製品バリアントを取得するリクエストを検証

スキーマ詳細:

  • Type: object
  • 必須フィールド: productId (パスパラメータ)
  • オプションフィールド: page, limit, sort, order (クエリパラメータ)
  • Additional Properties: false (strict validation)

スキーマ構造:

{
productId: string; // required - パスパラメータからの製品識別子
page?: number; // optional - page number for pagination
limit?: number; // optional - number of items per page
sort?: string; // optional - sorting field
order?: "asc" | "desc"; // optional - sort order direction
}

主な機能:

  • パスパラメータ検証: URLパスに製品IDが提供されることを保証します
  • ページネーションサポート: ページナビゲーション用のオプションのクエリパラメータ
  • ソートオプション: オプションのソートフィールドと順序方向
  • 柔軟なフィルタリング: 一貫したページネーション動作のためにページネーションスキーマを拡張します

使用例:

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

const { findProductVariantsSchema } = schemas;

const schema = findProductVariantsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
productId: 'prod-123',
page: 1,
limit: 10,
sort: 'createdAt',
order: 'desc'
});

検証ルール:

  • productIdは有効な文字列である必要があります(必須パスパラメータ)
  • pageは提供されている場合、1以上の数値である必要があります
  • limitは提供されている場合、1〜100の間の数値である必要があります
  • sortは提供されている場合、文字列である必要があります
  • orderは提供されている場合、"asc"または"desc"である必要があります
  • リクエストに追加のプロパティは許可されません

getProductLikersSchema

製品IDパスパラメータ検証付き製品いいねしたユーザー取得スキーマ。

目的: ページネーションサポートを含む特定の製品をいいねしたユーザーを取得するリクエストを検証

スキーマ詳細:

  • パラメータ: productId (パスパラメータ)
  • Type: object
  • 必須フィールド: productId (パスパラメータ)
  • オプションフィールド: page, limit, sort, order (ページネーション用のクエリパラメータ)
  • Additional Properties: false (strict validation)

スキーマ構造:

{
parameters: {
productId: string; // required - いいねユーザー検索用の製品識別子
};
query?: { // optional - pagination parameters
page?: number; // optional - page number for pagination
limit?: number; // optional - number of items per page
sort?: string; // optional - field to sort by
order?: string; // optional - sort order direction
};
}

主な機能:

  • パスパラメータ検証: URLパスに製品IDが提供されることを保証します
  • ページネーションサポート: ページナビゲーションとソート用のオプションのクエリパラメータ
  • シンプルな構造: いいねユーザー取得のための製品IDパラメータの検証に焦点を当てています

使用例:

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

const { getProductLikersSchema } = schemas;

const schema = getProductLikersSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: { productId: 'prod-123' },
query: { page: 1, limit: 10 }
});

検証ルール:

  • productIdは有効な文字列である必要があります(必須パスパラメータ)
  • pageは提供されている場合、1以上の数値である必要があります
  • limitは提供されている場合、1〜100の間の数値である必要があります
  • sortは提供されている場合、文字列である必要があります
  • orderは提供されている場合、"asc"または"desc"である必要があります
  • リクエストに追加のプロパティは許可されません

🔗 関連ドキュメント