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で修正する入力を確認します。

安全な再試行の手順

  1. 実際のerror.retryableを確認します。falseなら、同じリクエストを無条件に繰り返さず、入力・権限・古くなった状態を先に修正してください。
  2. Retry-Afterがある場合は、少なくとも指定された時間だけ待ちます。短い間隔で無限に繰り返さず、回数に上限を設け、待ち時間を徐々に長くしてください。
  3. 同じ論理的な操作の再試行では、本文と冪等性キーを維持します。タイムアウトで結果が不明なときに新しいキーで送ると、操作が重複する場合があります。
  4. IDEMPOTENCY_KEY_REUSEDは異なる入力に同じキーを使った競合です。以前の結果と意図した操作を確認してください。IDEMPOTENCY_IN_PROGRESSは処理中を示すため、Retry-Afterのあとに同じリクエストを再試行します。
  5. SDKのQueuedはサーバー側の成功ではありません。SDKが永続的な再試行を管理するため、アプリ側に別の無限ネットワークループを追加しないでください。

サポートに問い合わせるとき

発生時刻とタイムゾーン・APIのパスとメソッド・HTTPステータス・error.code・request_id・SDKのバージョンとプラットフォームを伝えてください。個人情報・メッセージ本文全体・パスワード・APIキー・端末やプッシュ通知のトークン・招待や再設定のリンクは含めないでください。

すべてのエラーコードを見る