Idempotencia
Cómo hacer que un reintento sea seguro.
Cómo funciona
Envía Idempotency-Key en POST /emails, POST /emails/batch o POST /templates/{id}/send. Ninguna otra ruta lo lee. La primera llamada hace el trabajo, y una repetición con la misma clave devuelve el mensaje idéntico. POST /emails además establece Idempotency-Replayed: true, mientras que el envío por lotes informa de replayed en cada elemento y el envío desde plantilla lo informa en el cuerpo y responde 200 en lugar de 202. La reserva se toma con la propia inserción en la base de datos, así que dos solicitudes que compitan con la misma clave no pueden ganar ambas.
Idempotency-Key: invoice-8812Reutilizar una clave con un cuerpo distinto es un 422 idempotency_key_reuse y no una repetición silenciosa. Casi siempre significa que la clave se derivó de algo que no era lo bastante único, y reproducirle a alguien un mensaje que no envió es peor que rechazar la solicitud.
En un envío por lotes la clave se extiende por elemento, así que una sola clave sobre cien mensajes no los colapsa todos en el primero.