エラーレスポンス
BASE API のエラー(4xx / 5xx)は、すべて
RFC 9457 (Problem Details for HTTP APIs)
に沿った application/problem+json のレスポンスボディで返します。
クライアントはステータスコードと type の値でエラーを判別できます。
レスポンスの構造
- typestring必須エラー種別の識別子(
/errors/{domain}/{error}形式の相対パス) - titlestring必須エラー種別の短い要約(英語)。
typeごとに固定の文言です。 - statusinteger必須≥ 400 / ≤ 599HTTP ステータスコード
- detailstring任意この発生事象に固有の開発者向け説明(英語)
- instancestring任意この発生事象を識別する URI 参照
- errorsProblemFieldError[]任意バリデーションエラー時のフィールド単位の詳細
- detailstring必須該当フィールドのエラー内容(英語)
- pointerstring必須リクエストボディ内の該当箇所を指す JSON Pointer(RFC 6901、例: #/title)
例: 存在しない商品を指定した場合のレスポンス。
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 からエンドポイントを逆引きするための索引です。
バリデーションエラー
リクエストボディやパラメータがエンドポイントのスキーマを満たさない場合は 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"
}
]
}