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

🔍 Order スキーマブロック

Order スキーマブロックは、NodeBlocks アプリケーションの注文データ検証のための JSON Schema 定義を提供します。これらのスキーマはデータ整合性を確保し、注文関連の API エンドポイントのための明確な契約を提供します。


🎯 概要

Order スキーマブロックは次のことを目的として設計されています:

  • 処理前に注文データを検証する
  • ラインアイテムと価格設定を使用した複雑な注文構造をサポートする
  • 複数の通貨と税計算を処理する
  • さまざまなライフサイクル状態を通じて注文ステータスを追跡する
  • 注文検索とフィルタリング機能を有効にする
  • 組織とユーザーの関連付けをサポートする

📋 Order スキーマタイプ

ベース注文スキーマ

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

注文作成スキーマ

必須フィールド検証を使用した注文作成のためのスキーマ。

注文更新スキーマ

オプションのフィールド検証を使用した注文変更のためのスキーマ。

注文クエリスクーマ

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


🔧 利用可能な Order スキーマ

orderSchema

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

目的: ラインアイテムを使用した注文データの構造を定義します

Schema Details:

  • Type: object
  • Required Fields: なし(ベーススキーマ)
  • 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

新規注文のための必須フィールドを使用した注文作成スキーマ。

目的: 作成時の注文データを検証します

Schema Details:

  • Type: object
  • Required Fields: identityId, items, total
  • Optional Fields: 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

注文変更のためのオプションのフィールドを使用した注文更新スキーマ。

目的: 部分的な注文データ更新を検証します

Schema Details:

  • Type: object
  • Required Fields: なし(すべてのフィールドがオプション)
  • Additional Properties: false(厳密な検証)
  • Content-Type: application/json
  • Parameters: 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

単一の注文を取得するための注文取得スキーマ。

目的: 特定の注文を取得するためのリクエストを検証します

Schema Details:

  • Parameters: orderId(パスパラメーター)
  • Purpose: 特定の注文を取得するためのリクエストを検証します

使用法:

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

注文を削除するための注文削除スキーマ。

目的: 特定の注文を削除するためのリクエストを検証します

Schema Details:

  • Parameters: orderId(パスパラメーター)
  • Purpose: 特定の注文を削除するためのリクエストを検証します

使用法:

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

フィルタリングとページネーションを使用して注文を検索するための注文検索スキーマ。

目的: 注文の検索とページネーションのためのリクエストを検証します

Schema Details:

  • Query Parameters:
    • currency?: string - 通貨でフィルター
    • organizationId?: string - 組織でフィルター
    • status?: string - ステータスでフィルター
    • subtotal?: number - 小計でフィルター(最小値 0)
    • tax?: number - 税額でフィルター(最小値 0)
    • total?: number - 合計金額でフィルター(最小値 0)
    • identityId?: string - アイデンティティでフィルター
    • page?: number - ページネーションページ番号
    • limit?: number - ページネーション制限
  • Purpose: 注文の検索とページネーションのためのリクエストを検証します

使用法:

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

🔗 関連ドキュメント