API
冪等性
再試行を安全にする。
仕組み
Idempotency-Key は POST /emails、POST /emails/batch、POST /templates/{id}/send で送れます。他のルートはこれを読みません。最初の呼び出しが実際の処理を行い、同じキーでの繰り返しは同一のメッセージを返します。POST /emails は Idempotency-Replayed: true も設定し、バッチは項目ごとに replayed を報告し、テンプレート送信はボディでそれを報告して 202 ではなく 200 を返します。この主張はデータベースへの挿入そのものとして扱われるため、同じキーで競合した 2 つのリクエストが両方とも勝つことはありません。
Idempotency-Key: invoice-8812異なるボディで同じキーを再利用すると、黙って再生されるのではなく 422 idempotency_key_reuse になります。これはたいてい、キーが十分に一意でないものから導出されていることを意味し、送っていないメッセージを誰かに再生してしまうことは、拒否するより悪いからです。
バッチではキーが項目ごとに拡張されるため、100 通に 1 つのキーを付けても、それらが最初の 1 通にまとめられることはありません。