Rustine docs
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.

Ouvrir dans ClaudeOuvrir dans ChatGPT

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 500 ou une 503 : renvoie la même requête avec la même clé.

↵ Entrée pour ouvrir, Échap pour fermer