🔍 注文スキーマ
注文スキーマは、Nodeblocksアプリケーションで注文データ検証用のJSON Schema定義を提供します。これらのスキーマはデータ整合性を確保し、注文関連APIエンドポイント用の明確なコントラクトを提供します。
🎯 概要
注文スキーマは以下の目的で設計されています:
- 注文データを検証 - 処理前に
- 複雑な注文構造をサポート - ラインアイテムと価格設定を含む
- 複数通貨を処理 - 税計算を含む
- 注文ステータスを追跡 - さまざまなライフサイクル状態を通じて
- 注文検索を有効化 - フィルタリング機能を含む
- 組織とユーザーの関連付けをサポート
📋 注文スキーマタイプ
ベース注文スキーマ
他のスキーマの基盤として使用されるコア注文構造。
注文作成スキーマ
必須フィールド検証を含む注文作成用のスキーマ。
注文更新スキーマ
オプションフィールド検証を含む注文変更用のスキーマ。
注文クエリスキーマ
注文フィルタリングとページネーションパラメータ用のスキーマ。
🔧 利用可能な注文スキーマ
orderSchema
注文データの構造を定義するベース注文スキーマ。
目的: ラインアイテムを含む注文データの構造を定義します
スキーマ詳細:
- Type:
object - 必須フィールド: なし(ベーススキーマ)
- Additional Properties:
false(厳密な検証) - Properties:
currency?: string- 注文通貨items?: Array<{productId: string, quantity: number, price: number}>- 注文ラインアイテムorganizationId?: string- 組織ID(UUID形式)status?: string- 注文ステータスsubtotal?: number- 注文小計(最小値0)tax?: number- 税額(最小値0)total?: number- 合計額(最小値0)identityId?: string- アイデンティティID(UUID形式)
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { orderSchema } = schemas;
const validate = ajv.compile(orderSchema as SchemaDefinition);
const isValid = validate({
currency: 'USD',
items: [{ productId: '123e4567-e89b-12d3-a456-426614174000', quantity: 2, price: 29.99 }],
total: 59.98
});
createOrderSchema
新しい注文用の必須フィールドを含む注文作成スキーマ。
目的: 作成中の注文データを検証します
スキーマ詳細:
- Type:
object - 必須フィールド:
identityId、items、total - オプションフィールド:
currency、organizationId、status、subtotal、tax - Additional Properties:
false(厳密な検証) - Content-Type:
application/json - Request Body:
required
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { createOrderSchema } = schemas;
const orderSchema = createOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
items: [{ productId: '123e4567-e89b-12d3-a456-426614174000', quantity: 2, price: 29.99 }],
total: 59.98,
currency: 'USD'
});
updateOrderSchema
注文変更用のオプションフィールドを含む注文更新スキーマ。
目的: 部分的な注文データ更新を検証します
スキーマ詳細:
- Type:
object - 必須フィールド: なし(すべてのフィールドがオプション)
- Additional Properties:
false(厳密な検証) - Content-Type:
application/json - パラメータ:
orderId(パスパラメータ) - Request Body:
required
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateOrderSchema } = schemas;
const orderSchema = updateOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
status: 'shipped',
total: 65.98
});
getOrderSchema
単一の注文を取得するための注文取得スキーマ。
目的: 特定の注文を取得するリクエストを検証します
スキーマ詳細:
- パラメータ:
orderId(パスパラメータ)
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { getOrderSchema } = schemas;
const orderSchema = getOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
orderId: 'order123'
});
deleteOrderSchema
注文を削除するための注文削除スキーマ。
目的: 特定の注文を削除するリクエストを検証します
スキーマ詳細:
- パラメータ:
orderId(パスパラメータ)
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteOrderSchema } = schemas;
const orderSchema = deleteOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
orderId: 'order123'
});
findOrdersSchema
フィルタリングとページネーションを含む注文を検索するための注文検索スキーマ。
目的: 注文の検索とページネーションのリクエストを検証します
スキーマ詳細:
- クエリパラメータ:
currency?: string- 通貨でフィルタorganizationId?: string- 組織でフィルタstatus?: string- ステータスでフィルタsubtotal?: number- 小計でフィルタ(最小値0)tax?: number- 税額でフィルタ(最小値0)total?: number- 合計額でフィルタ(最小値0)identityId?: string- アイデンティティでフィルタpage?: number- ページネーションのページ番号limit?: number- ページネーションの制限
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { findOrdersSchema } = schemas;
const ordersSchema = findOrdersSchema({});
const validate = ajv.compile(ordersSchema.schemas as SchemaDefinition);
const isValid = validate({
status: 'pending',
currency: 'USD',
page: 1,
limit: 10
});
🔗 関連ドキュメント
- 注文ドメイン概要 - 注文ドメイン概要