メインコンテンツまでスキップ

レート制限

対象

このAPIは、Roktネットワーク上に構築する統合パートナー向けです。Roktのeコマースパートナーで独自のチェックアウトに配置を統合する場合は、代わりにRokt Ecommerce開発者ドキュメントを使用してください。

Partnerships APIは、書き込みが多く回復が必要なエンドポイントの小さなセットに対して、1分あたりのリクエストを制限します。制限はパートナープリンシパルに基づいて(APIトークンから派生)、IPアドレスではなく、フリート内の複数のサーバーが1つのバケットを共有します。

エンドポイントごとの制限エンドポイントごとの制限 への直接リンク

メソッド & パス制限理由
POST /v1/accounts/register/partnership10 / 分登録は複数ステップのバックエンドオーケストレーションを開始します。これは高コストで、マーチャントのオンボーディングトラフィックは持続的ではなくバースト的です。
POST /v1/partnership/accounts/{account_id}/payout-setup10 / 分各呼び出しはStripe Connectアカウントをプロビジョニングします。
POST /v1/partnership/network-privacy-requests10 / 分消費者のプライバシーリクエストトラフィックはペースを保ち、ユーザーリクエストごとに1回提出されるべきです。
POST /v1/partnership/accounts/{account_id}/data-deletion-requests10 / 分アカウントレベルの削除はデータ削除サービスに提出され、パートナーシップ操作として追跡されます。
POST /v1/partnership/accounts/{account_id}/pages30 / 分ページ追加のプロビジョニングはコントロール書き込みよりも重いです。MCL/ステータスよりも低いキャップです。
PUT /v1/partnership/accounts/{account_id}/pages/{page_id}30 / 分レイアウトタイプの切り替えはページプロビジョニング作業です:ページ追加と同じ重さのクラスとキャップです。
PATCH /v1/partnership/accounts/{account_id}/layouts/{layout_id}60 / 分テーマPATCHはテンプレート化されたレイアウト設定を書き込みます。
PUT /v1/partnership/accounts/{account_id}/marketplacecontrolslists60 / 分マーチャントごとのコントロール書き込み;バッチ同期のための快適な余裕があります。
PUT /v1/partnership/accounts/{account_id}/offercontrolslists60 / 分マーチャントごとのオファーサイドコントロール書き込み。
PUT /v1/partnership/accounts/{account_id}/status60 / 分ページバリアント全体での一時停止/再開のカスケード。
GET /v1/partnership/operations/{operation_id}600 / 分ポーリングに適しています。フリート全体で約10ポール/秒にサイズ設定されています。
その他の読み取りエンドポイント (GET /v1/partnership/accounts, MCL, OCL, ステータス, 支払いステータス, ブロックされたドメイン)60 / 分パートナーシップ読み取りのためのパートナーごとのデフォルト。
備考

制限はパートナーごとであり、マーチャントごとではありません。1分で50のマーチャントをオンボードすると、どのマーチャントのためであっても11回目の呼び出しで登録制限に達します。バーストを分散させるか、クライアント側でキューイングしてください。

注記

POST /v1/partnership/network-privacy-requestsIdempotency-Keyを受け取らず、パートナーシップ操作を作成しません。そのエンドポイントでは、Retry-Afterを遵守し、バックオフ後に同じユーザーリクエストのみを再試行してください。アカウントレベルのデータ削除は通常のIdempotency-Key再試行契約を使用します。

制限のキー付け方法制限のキー付け方法 への直接リンク

制限はAPI資格情報にキー付けされています。同じ資格情報を使用するフリート内のすべてのサーバーが1つのカウンターを共有します。

Authorizationヘッダーが欠落している、無効である、または検証できないリクエストは、レート制限が適用される前に401で拒否されます。

429レスポンス429レスポンス への直接リンク

制限を超えると、サーバーは429 Too Many Requestsを標準のパートナーシップエンベロープで返します:

{
"status": 429,
"error": "RateLimitExceeded",
"message": "Rate limit exceeded: 10 per 1 minute. Retry after the window resets.",
"request_id": "0e3a1b9c-1234-4abc-9def-aaaabbbbcccc",
"data": null
}

レスポンスヘッダーレスポンスヘッダー への直接リンク

429レスポンスには以下が含まれます:

Retry-Afterinteger

次の呼び出しが受け入れられるまでの秒数。これを遵守してください;これは最も安価なシグナルです。

バックオフガイダンスバックオフガイダンス への直接リンク

  1. Honor Retry-After first

    429 が発生した場合、再試行の前に Retry-After の値に従って待機してください。これは残りのウィンドウからすでに計算されています。早く再試行してもメリットはなく、ウィンドウ内での再試行はクォータにカウントされます。

  2. Use the same Idempotency-Key on retry

    POST および PUT 呼び出しについては、拒否された呼び出しで使用した 同じ Idempotency-Key を使用して、24時間の重複排除ウィンドウ内で再試行してください。レート制限による拒否はサーバー側で実行されないため、キャッシュされたレスポンスは最終的な成功を示し、古い429ではありません。

  3. Cap concurrency client-side

    クライアント側でキューを作成し、Retry-Afterを尊重してください。制限を事前に回避する方が、それに反応するよりもコストが低くなります。

  4. Polling: pace your operation reads

    操作ポーリングの600/分の制限は、全体のフリートで約100msごとのポーリングに合わせて設定されています。それよりも短い間隔でポーリングしている場合、情報のない送信コストを支払っていることになります。操作はそんなに速く移行しません。推奨: 2~5秒ごとにポーリングし、最大60秒まで指数バックオフを使用してください。

警告

新しい Idempotency-Key429 の後に再試行しないでください。 元の呼び出しは実行されませんでしたが、後で同じ論理書き込みに対して異なるキーを送信すると、サーバーは重複排除する方法がなく、後続の再試行が異なる理由で2回成功した場合、重複した状態になる可能性があります。

現在レート制限されていないもの現在レート制限されていないもの への直接リンク

操作ポーリング以外のGETエンドポイント(コントロール読み取り、ステータス読み取り、支払いステータス読み取りを含む)は、現在レート制限されていません。これは変更される可能性があります。文書化された制限がないことを「現在無制限」としてではなく、「保証された無制限」として扱ってください。

本当に高い制限が必要な場合本当に高い制限が必要な場合 への直接リンク

現在の上限は、定常状態のマーチャントオンボーディングトラフィックに合わせて設定されています。ローンチ計画が持続的なスパイクを必要とする場合(例: 単一の移行ウィンドウで10,000のマーチャントをバックフィルする)、エンドポイント、予想されるRPS、および期間ウィンドウを記載して smb-partnerships@rokt.com にメールしてください。コード変更なしで事前にパートナープリンシパルの上限を引き上げることができます。

  • エラー: 429を含むステータスコードの完全なリファレンス
  • 冪等性 (Idempotency): 再試行時にデデュープウィンドウがどのように作用するか
  • 障害の処理: すべてのエラークラスにわたる広範な再試行ポリシー
この記事は役に立ちましたか?