PUSH API · v1a
エラーと再試行
エラーレスポンスを読む
{
"error": {
"code": "FIELD_REQUIRED",
"message": "A required field is missing.",
"request_id": "req_EXAMPLE_ONLY",
"retryable": false,
"field_errors": [
{
"field": "target",
"code": "FIELD_REQUIRED",
"message": "target is required."
}
],
"docs_url": "https://docs.example.com/errors/field-required"
}
}例のmessageは説明用です。プログラムの分岐には人向けの文言ではなくerror.codeを使い、field_errorsで修正する入力を確認します。
安全な再試行の手順
- 実際のerror.retryableを確認します。falseなら、同じリクエストを無条件に繰り返さず、入力・権限・古くなった状態を先に修正してください。
- Retry-Afterがある場合は、少なくとも指定された時間だけ待ちます。短い間隔で無限に繰り返さず、回数に上限を設け、待ち時間を徐々に長くしてください。
- 同じ論理的な操作の再試行では、本文と冪等性キーを維持します。タイムアウトで結果が不明なときに新しいキーで送ると、操作が重複する場合があります。
- IDEMPOTENCY_KEY_REUSEDは異なる入力に同じキーを使った競合です。以前の結果と意図した操作を確認してください。IDEMPOTENCY_IN_PROGRESSは処理中を示すため、Retry-Afterのあとに同じリクエストを再試行します。
- SDKのQueuedはサーバー側の成功ではありません。SDKが永続的な再試行を管理するため、アプリ側に別の無限ネットワークループを追加しないでください。
サポートに問い合わせるとき
発生時刻とタイムゾーン・APIのパスとメソッド・HTTPステータス・error.code・request_id・SDKのバージョンとプラットフォームを伝えてください。個人情報・メッセージ本文全体・パスワード・APIキー・端末やプッシュ通知のトークン・招待や再設定のリンクは含めないでください。
すべてのエラーコードを見る