Démarrer
Idempotence
Envoie une Idempotency-Key avec tes POST. Si la requête est rejouée (timeout, CI relancée), Rustine renvoie la première réponse au lieu de refaire l'action.
Un réseau coupe, un job de CI est relancé, ton script part en timeout : tu ne sais pas si l’action a eu lieu. Avec une clé d’idempotence, tu peux renvoyer la même requête sans risque.
Comment faire
Ajoute l’en-tête Idempotency-Key à tes requêtes POST, avec une valeur unique pour l’action (1 à 255 caractères imprimables) : l’identifiant de ton déploiement, de ton job, ou un UUID.
Idempotency-Key: deploy-4f9c2e1
- Même clé, même requête, dans les 24 heures : Rustine renvoie la première réponse, avec l’en-tête
Idempotent-Replayed: true. Rien n’est refait, rien n’est décompté une seconde fois. - Même clé, autre requête (méthode, chemin ou corps) :
409 idempotency_conflict. Une nouvelle action prend une nouvelle clé. - Même clé pendant que la première requête tourne encore :
409 idempotency_in_progress. Réessaie dans un instant. - Une clé mal formée :
400 idempotency_key_invalid.
Les GET et le PATCH d’un problème sont déjà sans effet en double : pas besoin de clé.
À quoi ça sert le plus
- Débloquer un correctif : le rejouer ne décompte jamais deux correctifs.
- Lancer un scan depuis la CI : un job relancé ne lance pas un second scan. (Sans clé, un scan du même type sur le même site dans l’heure renvoie déjà le résultat récent, avec
reused: true.) - Créer un projet ou ajouter un site : pas de doublon si la première réponse s’est perdue.
- Après une
500ou une503: renvoie la même requête avec la même clé.