HTTP ステータスコードとエラー
エラーや特殊なケースへの対応に役立つように、B2C Commerce API (SCAPI) は HTTP ステータスコードとエラーメッセージを返します。
次の表に、HTTP ステータスコードと一般的なユースケースを示します。
成功ステータスコード
HTTP ステータスコード ユースケース 200 (OK) GET、PUT、または POST リクエストが正常に完了しました。 201 (Created) POST または PUT リクエストが新しいリソースまたはリレーションシップリソースを正常に作成しました。 204 (No Content) リクエストは正常に完了し、返されるコンテンツはありません。 207 (Multi-Status) リクエストは正常に完了し、サブ操作ごとに複数のステータス結果が返されました。たとえば、バッチレスポンスや部分レスポンスなどです。
エラーステータスコード
HTTP ステータスコード ユースケース 400 (Bad Request) リクエストに無効な情報が含まれています。たとえば、不正な形式のパラメーター、不正な形式のヘッダー値、不正な形式のボディなどです。 401 (Unauthorized) リクエストは、処理を許可されていません。 403 (Forbidden) リクエストはサーバーによって拒否されました。 404 (Not Found) リクエストされたリソースは存在しません。 405 (Method Not Allowed) リソースは、指定された HTTP メソッドをサポートしていません。 409 (Conflict) リクエストは、リソースの現在の状態との競合により完了できませんでした。 412 (Precondition Failed) PATCH リクエストで、古い最終既知のベースポイントが指定されました。これは、リソースがサーバー上で変更されており、同時実行中の別のリクエストによって変更された可能性があることを意味します。 415 (Unsupported Media Type) “format” リクエストパラメーター (または Accept ヘッダー) で指定されたメディアタイプはサポートされていません。 500 (Internal Server Error) サーバー上の予期しない状態により、リクエストを処理できません。
HTTP ステータスコード別の一般的な SCAPI エラーメッセージ
すべての B2C Commerce API には、どの API からも返される可能性のある共通のエラーメッセージがいくつかあります。
API レベルのドキュメントでは、API 固有のエラーメッセージに重点を置いています。
400 (Bad Request)
タイプ 詳細 missing-query-parameter 必須クエリパラメータが不足しています: ‘{missingParams}‘ undefined-query-parameter クエリパラメーター ‘{undefinedParam}’ は、この API では定義されていません。 value-constraint-violation パラメーター ‘{parameterName}’ の値が、API 制約 ‘{constraintName}’ に違反しています。 constraint-violation ’{parameterName}’ の値が制約に違反しています。想定値は ‘(x..y)’ の範囲内です。 adhoc-logging-not-supported この API は、sdfc-log-level や sfdc-verbose headers をサポートしていません。これらを削除してください。 incorrect-preflight プリフライトリクエストの形式が不正であるか、不完全です: {detail}
401 (Unauthorized)
タイプ 詳細 unauthorized 認証されていないリクエストです。
403 (Forbidden)
タイプ 詳細 forbidden リクエストされたリソースへのアクセスは禁止されています。
404 (Not Found)
タイプ 詳細 resource-not-found リクエストされたリソースが見つかりませんでした。 organization-not-found organizationId ‘{organizationId}’ に対応する組織が見つかりませんでした。
405 (Method Not Allowed)
タイプ 詳細 追加情報 method-not-allowed リクエストされたリソースでは、このリクエストメソッドは許可されていません。 custom-apis-options カスタム API では、OPTIONS メソッドはサポートされていません。 カスタム API のトラブルシューティング
413 (Payload Too Large)
タイプ 詳細 request-uri-too-long リクエスト URL の長さの上限を超えています。
414 (Payload Too Large)
タイプ 詳細 追加情報 payload-too-large リクエストペイロードまたはリクエストヘッダーのサイズが大きすぎるため、処理できません。 リクエストとレスポンスの制約
415 (Unsupported Media Type)
タイプ 詳細 missing-content-type Content-Type ヘッダーがありません。想定値: ‘{expected}‘ unsupported-content-type Content-Type ヘッダー内のメディアタイプはサポートされていません。想定値: ‘{expected}‘ unsupported-content-type Content-Type ヘッダー内の文字セットはサポートされていません。想定値: ‘{expected}‘
429 (Too Many Requests)
タイプ 詳細 too-many-requests 短時間に、アドホックロギング付きのリクエストを実行しすぎています。
500 (Internal Server Error)
タイプ 詳細 internal-server-error 内部サーバーエラー
503 (Service Unavailable)
タイプ 詳細 追加情報 service-unavailable 現時点ではリクエストを処理できません。 service-unavailable サーバー側でのリソース消費が高いため、リクエストはスロットリングされました。詳細については、‘sfdc_load’ ヘッダーを参照してください。 system-under-maintenance システムが現在メンテナンス中のため、リクエストを処理できませんでした。 メンテナンスレスポンスコード site-under-maintenance サイトが現在メンテナンス中のため、リクエストを処理できませんでした。 メンテナンスレスポンスコード
504 (Request Timeout)
SCAPI リクエストへのレスポンスに時間がかかりすぎる場合は、HTTP 504 ステータスコードが返されます。
1 {
2 "type" : "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/request-timeout" ,
3 "title" : "Request Timeout" ,
4 "detail" : "The request could not be processed by the system within the timeout threshold."
5 }
Shopper API と Custom API は 10 秒以内にレスポンスする必要があり、SCAPI Admin API リクエストは 60 秒以内にレスポンスする必要があります。SCAPI リクエストへのレスポンスがタイムアウトしきい値を超えると、HTTP 504 ステータスコードが返されます。
タイムアウトの問題が発生した場合は、フック実装の最適化を検討してください。
SLAS や Omnichannel Inventory (OCI) などの一部の API ファミリーには、ゲートウェイのタイムアウトがありません。
エラーレスポンス形式
ステータスコードが 400 以上の場合、API は RFC 7807 Problem Details 形式に従ったエラーレスポンスを返します。例:
1 {
2 "title" : "You do not have enough credit" ,
3 "type" : "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/not-enough-money" ,
4 "detail" : "Your current balance is 30, but that costs 50" ,
5 "instance" : "/account/12345/msgs/abc"
6 }
エラーレスポンスには、次のプロパティが含まれます。
title: 問題タイプに関する、人が読んで理解できる簡潔な要約。これは、ローカライズを目的とする場合を除き、問題が発生するたびに変わることはありません。
type: 問題タイプを識別する URI 参照。参照先を解決すると、その問題タイプに関する人が読んで理解できるドキュメントが提供される必要があります。このメンバーが存在しない場合、その値は “about:blank” と見なされます。
detail: この問題の発生事象に固有の、人が読んで理解できる説明。
instance: この問題の特定の発生事象を識別する URI 参照。参照先を解決した場合に追加情報が得られることもあれば、得られないこともあります。
エラー処理のベストプラクティス
アプリケーションで SCAPI エラーを処理する場合は、次のベストプラクティスに従ってください。
常に、HTTP レスポンスメッセージではなく、HTTP レスポンスのステータスコードに基づいて実装してください。
さまざまなエラーシナリオをプログラムで処理するには、type フィールドの最後のセグメントを使用してください。
503 エラーは、通常、一時的なサーバー側の問題であるため、再試行ロジックの実装を検討してください。
400 エラーを最小限に抑えるために、クライアント側で入力を検証してください。
根本原因が不明な 500 エラーが発生した場合は、次の点を確認してください。
カスタマイズヘッダー (sfdc_customization_error) を確認してください。値が「1」の場合、フックの実行中にエラーが発生しています。
根本原因を突き止めたり、サポートケースを開いたりするために、sfdc_correlation_id レスポンスヘッダーの値をコピーしてください。