Idempotence
Rendre un réessai sans risque.
Comment cela fonctionne
Envoyez Idempotency-Key sur POST /emails, POST /emails/batch ou POST /templates/{id}/send. Aucune autre route ne le lit. Le premier appel fait le travail, et une répétition avec la même clé renvoie le message identique. POST /emails définit en outre Idempotency-Replayed: true, tandis que le lot signale replayed sur chaque élément et que l'envoi de modèle le signale sur le corps et répond 200 au lieu de 202. La réservation est prise au moment même de l'insertion en base de données, de sorte que deux requêtes concurrentes portant la même clé ne peuvent pas gagner toutes les deux.
Idempotency-Key: invoice-8812Réutiliser une clé avec un corps différent donne un 422 idempotency_key_reuse plutôt qu'un rejeu silencieux. Cela signifie presque toujours que la clé a été dérivée de quelque chose d'insuffisamment unique, et rejouer auprès de quelqu'un un message qu'il n'a pas envoyé est pire qu'un refus.
Dans un lot, la clé est étendue par élément, de sorte qu'une seule clé sur cent messages ne les réduit pas tous au premier.