冪等性
`Idempotency-Key` ヘッダーが不安定ネットワークでのリトライにおける二重課金を防ぐ仕組み。
なぜ重要か
ネットワークはリクエスト途中で失敗します。POST /v1/activations を実行して、レスポンスを受信する前に接続が切れた場合、アクティベーションが作成されたかどうかわかりません。素朴なリトライは二重課金につながる可能性があります。
Idempotency-Key ヘッダーはこれを解決します:リトライ時に同じキーを送信すれば、同じ結果が得られます。
使い方
論理操作ごとにUUIDを生成し、同じ操作のリトライごとに送信します:
KEY=$(uuidgen)
curl -X POST https://api.eveses.com/v1/activations \
-H "Authorization: Bearer $EVESES_API_KEY" \
-H "Idempotency-Key: $KEY" \
-d '{"country":"ua", "service":"telegram"}'
同じ Idempotency-Key で同じ呼び出しを再実行すると、元のレスポンスが返ります——2回目のアクティベーションも、2回目の課金もありません。
TTL
キーは 24時間 記憶されます。その後スロットは解放され、同じキーを新規として再利用できます。
適用範囲
作成または課金する POST /v1/* のすべてのエンドポイント:アクティベーション、レンタル、入金、延長。読み取りエンドポイント(GET)はすでに冪等であり、ヘッダーを無視します。
競合
同じキーを異なるbodyで再利用すると、APIは409 idempotency_conflict を返します。リトライ時はbodyを同一に保つか、新しいキーを生成してください。
SDKの動作
公式SDKは各createコールに対して冪等性キーを自動生成し、自動リトライで再利用します。必要に応じて明示的なキーで上書きできます。