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

🔍 注文スキーマ

注文スキーマは、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
  • 必須フィールド: identityIditemstotal
  • オプションフィールド: currencyorganizationIdstatussubtotaltax
  • 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
});

🔗 関連ドキュメント