エラーが発生した場合、DPA は HTTP ステータス コードと HTTP レスポンスを返すことが想定されています。HTTP レスポンスには、エラーに関する詳細情報を含む JSON オブジェクトを含める必要があります。エラー レスポンスの本文には、ErrorResponse のインスタンスが含まれていなければなりません。
{
"errorMessage": string,
"cause": enum(ErrorCause)
}
DPA エラー レスポンスは、次のものに対応していなければなりません。
- ユーザーは現在ローミング中で、このユーザーに対して DPA クエリが無効になっています。DPA は、エラー原因として USER_ROAMING を含む 403 エラーを返します。
- DPA は、ユーザーキーが無効(存在しないユーザーキー)であることを GTAF に示す 404 NOT_FOUND エラーコードを INVALID_NUMBER で返します。
- DPA は、エラー原因として BAD_CPID を含む 410 GONE エラーコードを返します。これは、key_type=CPID で CPID の有効期限が切れている場合、クライアントが新しいユーザーキーを取得する必要があることを GTAF に示します。
- DPA は、SERVICE_UNAVAILABLE エラー原因でこの呼び出しをサポートしていないことを示す 501 NOT_IMPLEMENTED エラーコードを返します。
- DPA は、TOO_MANY_REQUESTS エラー原因とともに 429 TOO MANY REQUESTS を返し、GTAF が DPA に過剰なリクエストを行っていることを示す Retry-After ヘッダーを返します。
- DPA は、DPA の現在の状態との競合によりリクエストを完了できないことを示す 409 CONFLICT エラーを返します。
- サービスを一時的に利用できません。DPA は、新しいリクエストを試行できるタイミングを示す Retry-After ヘッダーとともに 503 SERVICE UNAVAILABLE を返します。
- DPA は、他のすべての未指定のエラー ERROR_CAUSE_UNSPECIFIED に対して、エラー原因として 500 INTERNAL SERVER ERROR エラーコードを返します。
購入中にエラーが発生した場合、次のエラーコードは取引の失敗を表します。
- DPA は、購入したプラン ID が無効であることを GTAF に示す 400 BAD REQUEST エラーコードを返します。
- DPA は 402 PAYMENT REQUIRED エラーコードを返し、GTAF にユーザーの残高が購入を完了するのに十分でないことを示します。
- DPA は 409 CONFLICT エラーコードを返し、購入するプランがユーザーの現在のプロダクト ミックスと互換性がないことを GTAF に示します。たとえば、携帯通信会社のデータプラン ポリシーで後払いプランと前払いプランの組み合わせが禁止されている場合、後払いユーザーが前払いプランを購入しようとすると、409 CONFLICT エラーが発生します。
- DPA は 403 FORBIDDEN エラーコードを返し、現在の取引が以前に発行された取引の重複であることを GTAF に示します。DPA は、レスポンスで次のエラー原因を返す必要があります。
- 前のトランザクションが失敗した場合、失敗の理由を示すエラー原因。
- 前のトランザクションが成功した場合は、DUPLICATE_TRANSACTION。
- 前のトランザクションがまだキューにある場合は、REQUEST_QUEUED。