エラーレスポンス

BASE API のエラー(4xx / 5xx)は、すべて RFC 9457 (Problem Details for HTTP APIs) に沿った application/problem+json のレスポンスボディで返します。 クライアントはステータスコードと type の値でエラーを判別できます。

レスポンスの構造

例: 存在しない商品を指定した場合のレスポンス。

HTTP/1.1 404 Not Found
Content-Type: application/problem+json

{
  "type": "/errors/items/not-found",
  "title": "Item not found",
  "status": 404,
  "detail": "The item is not found."
}

エラー種別(type)

type は /errors/{リソース}/{理由} 形式の安定した識別子です。 同じステータスコードに複数のエラー種別が対応することがあるため、プログラムでの分岐には ステータスコードではなく type を使ってください。title は type ごとに固定の英語文言で、detail は発生した事象に応じて変わります。

すべてのエンドポイントが返すエラー

認証されていない場合、要求スコープを満たさない場合、予期しない内部エラーが発生した場合に返します。

ステータスtype説明
401 /errors/auth/unauthenticated 認証に失敗した、または認証情報が指定されていない場合に返します。
403 /errors/auth/forbidden アクセストークンにこのエンドポイントで必要なスコープが含まれていない場合に返します。
500 /errors/internal/unexpected サーバー内部で予期しないエラーが発生した場合に返します。

エンドポイントごとに宣言されたエラー

リクエストの形式、リソースの状態、業務ルール、上流サービスの結果などに応じて返します。 発生条件と説明は各エンドポイントページの「エラー」に記載しています。この表は、受け取った type からエンドポイントを逆引きするための索引です。

ステータスtype返すエンドポイント
400 /errors/files/invalid-body POST /api/files
400 /errors/item_categories/invalid-body POST /api/item_categories
POST /api/item_categories/{id}
PUT /api/item_categories/{id}/list_order
400 /errors/items/invalid-body POST /api/items
POST /api/items/{id}
POST /api/items/{id}/images
PUT /api/items/{id}/images
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
400 /errors/orders/invalid-body PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
POST /api/orders/search
400 /errors/request/invalid-params DELETE /api/item_categories/{id}
GET /api/item_categories/{id}
POST /api/item_categories/{id}
DELETE /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/list_order
DELETE /api/items/{id}
GET /api/items/{id}
POST /api/items/{id}
GET /api/items/{id}/images
POST /api/items/{id}/images
PUT /api/items/{id}/images
DELETE /api/items/{id}/images/{image_id}
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
GET /api/items/{id}/variations
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
DELETE /api/items/{id}/variations/{variation_id}
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
GET /api/orders/{unique_key}
PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
400 /errors/request/invalid-query GET /api/items
400 /errors/request/malformed-body POST /api/files
POST /api/item_categories
POST /api/item_categories/{id}
PUT /api/item_categories/{id}/list_order
POST /api/items
POST /api/items/{id}
POST /api/items/{id}/images
PUT /api/items/{id}/images
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
POST /api/orders/search
404 /errors/item_categories/not-found DELETE /api/item_categories/{id}
GET /api/item_categories/{id}
POST /api/item_categories/{id}
DELETE /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/list_order
404 /errors/items/image-not-found PUT /api/items/{id}/images
DELETE /api/items/{id}/images/{image_id}
404 /errors/items/not-found DELETE /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/items/{item_id}
DELETE /api/items/{id}
GET /api/items/{id}
POST /api/items/{id}
GET /api/items/{id}/images
POST /api/items/{id}/images
PUT /api/items/{id}/images
DELETE /api/items/{id}/images/{image_id}
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
GET /api/items/{id}/variations
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
DELETE /api/items/{id}/variations/{variation_id}
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
404 /errors/items/variation-not-found PUT /api/items/{id}/stock
PUT /api/items/{id}/variations
DELETE /api/items/{id}/variations/{variation_id}
POST /api/items/{id}/variations/{variation_id}
404 /errors/orders/not-found GET /api/orders/{unique_key}
PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
404 /errors/user/not-found GET /api/user
413 /errors/request/body-too-large POST /api/files
POST /api/item_categories
POST /api/item_categories/{id}
PUT /api/item_categories/{id}/list_order
POST /api/items
POST /api/items/{id}
POST /api/items/{id}/images
PUT /api/items/{id}/images
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
POST /api/orders/search
415 /errors/request/unsupported-media-type POST /api/files
POST /api/item_categories
POST /api/item_categories/{id}
PUT /api/item_categories/{id}/list_order
POST /api/items
POST /api/items/{id}
POST /api/items/{id}/images
PUT /api/items/{id}/images
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
POST /api/orders/search
422 /errors/item_categories/invalid-list-order PUT /api/item_categories/{id}/list_order
422 /errors/item_categories/write-rejected POST /api/item_categories
POST /api/item_categories/{id}
DELETE /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/list_order
422 /errors/items/file-content-mismatch POST /api/items/{id}/images
422 /errors/items/file-not-uploaded POST /api/items/{id}/images
422 /errors/items/image-limit-exceeded POST /api/items/{id}/images
422 /errors/items/invalid-file-id POST /api/items/{id}/images
422 /errors/items/invalid-image-order PUT /api/items/{id}/images
422 /errors/items/invalid-list-order PUT /api/items/{id}/list_order
422 /errors/items/invalid-variation-order PUT /api/items/{id}/variations
422 /errors/items/lottery-not-deletable DELETE /api/items/{id}
422 /errors/items/variation-id-required PUT /api/items/{id}/stock
422 /errors/items/write-rejected POST /api/items
DELETE /api/items/{id}
POST /api/items/{id}
POST /api/items/{id}/images
PUT /api/items/{id}/images
DELETE /api/items/{id}/images/{image_id}
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
DELETE /api/items/{id}/variations/{variation_id}
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
422 /errors/orders/cancel-rejected POST /api/orders/{unique_key}/cancel
422 /errors/orders/dispatch-rejected POST /api/orders/{unique_key}/dispatch
422 /errors/orders/dispatch-suspended POST /api/orders/{unique_key}/dispatch
422 /errors/orders/invalid-delivery POST /api/orders/{unique_key}/dispatch
422 /errors/orders/invalid-order-lines POST /api/orders/{unique_key}/cancel
POST /api/orders/{unique_key}/dispatch
422 /errors/orders/kantan-delivery-not-dispatchable POST /api/orders/{unique_key}/dispatch
422 /errors/orders/not-cancellable POST /api/orders/{unique_key}/cancel
422 /errors/orders/not-dispatchable POST /api/orders/{unique_key}/dispatch
422 /errors/orders/payment-maintenance POST /api/orders/{unique_key}/cancel
POST /api/orders/{unique_key}/dispatch
422 /errors/orders/update-rejected PUT /api/orders/{unique_key}
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
502 /errors/internal/bad-gateway POST /api/files
POST /api/item_categories
DELETE /api/item_categories/{id}
POST /api/item_categories/{id}
DELETE /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/list_order
POST /api/items
DELETE /api/items/{id}
POST /api/items/{id}
POST /api/items/{id}/images
PUT /api/items/{id}/images
DELETE /api/items/{id}/images/{image_id}
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
DELETE /api/items/{id}/variations/{variation_id}
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
POST /api/orders/search
504 /errors/internal/gateway-timeout POST /api/files
POST /api/item_categories
DELETE /api/item_categories/{id}
POST /api/item_categories/{id}
DELETE /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/items/{item_id}
PUT /api/item_categories/{id}/list_order
POST /api/items
DELETE /api/items/{id}
POST /api/items/{id}
POST /api/items/{id}/images
PUT /api/items/{id}/images
DELETE /api/items/{id}/images/{image_id}
PUT /api/items/{id}/list_order
PUT /api/items/{id}/stock
POST /api/items/{id}/variations
PUT /api/items/{id}/variations
DELETE /api/items/{id}/variations/{variation_id}
POST /api/items/{id}/variations/{variation_id}
PUT /api/items/{id}/visibility
PUT /api/orders/{unique_key}
POST /api/orders/{unique_key}/cancel
PUT /api/orders/{unique_key}/customer
PUT /api/orders/{unique_key}/delivery
POST /api/orders/{unique_key}/dispatch
PUT /api/orders/{unique_key}/shipping
PUT /api/orders/{unique_key}/shop_memo
POST /api/orders/search

バリデーションエラー

リクエストボディやパラメータがエンドポイントのスキーマを満たさない場合は 400 を返し、 errors 配列にフィールド単位の内訳を含めます。各要素の pointer は 問題のあったフィールドを指す JSON Pointer(RFC 6901)です。

HTTP/1.1 400 Bad Request
Content-Type: application/problem+json

{
  "type": "/errors/items/invalid-body",
  "title": "Request body validation failed",
  "status": 400,
  "errors": [
    {
      "detail": "Invalid input: expected string, received undefined",
      "pointer": "#/name"
    }
  ]
}