Répondez 2xx dès réception et traitez en asynchrone. Nous abandonnons un envoi au bout de dix secondes : un traitement synchrone plus lent est compté en échec et déclenche une relance, donc un doublon chez vous alors que votre premier traitement s'est peut-être terminé.
Toutes les erreurs ne sont pas rejouées, et c'est délibéré. Nous relançons sur 408, 429, 500, 502, 503 et 504. Les autres réponses 4xx ne le sont pas : un 400 dit que la charge utile ne convient pas, un 404 que l'adresse est fausse, et ni l'une ni l'autre ne deviendra juste à la cinquième tentative. Corrigez le flux, puis renvoyez depuis le journal.
Pour écarter les doublons, servez-vous d'un champ de la charge utile que vous maîtrisez, l'identifiant du lead par exemple : c'est votre gabarit qui décide de ce qui est envoyé. Aucun en-tête d'idempotence n'est ajouté de notre côté.