Idempotence
Réessayez un achat en toute sécurité, sans acheter deux fois.
Après une erreur réseau, vous ne savez pas toujours si un achat a abouti. C’est pourquoi chaque requête POST /offsets exige un en-tête Idempotency-Key : une valeur unique par achat, par exemple un UUID.
Idempotency-Key: 7f8d0c6e-2b1a-4e9f-9d3c-5a6b7c8d9e0f
Ce qui se passe en cas de nouvelle tentative
| Vous envoyez | Vous recevez |
|---|---|
| Une nouvelle clé | Un nouvel achat (201). |
| La même clé et le même corps | Le premier achat, à nouveau (201), avec Idempotent-Replayed: true. Rien n’est acheté deux fois. |
| La même clé et un corps différent | 409 idempotency_key_reused. Utilisez une nouvelle clé pour un nouvel achat. |
La réponse rejouée renvoie l’achat dans son état actuel : son status peut donc être passé de processing à placed.
Bon à savoir
- Une clé compte de 1 à 255 caractères ASCII imprimables. Nous conservons les clés définitivement, pour chaque mode.
- L’ordre des clés et les espaces dans le corps n’ont pas d’importance :
{"kg":1,"reference":"a"}et{ "reference": "a", "kg": 1 }sont la même requête. - Un achat qui échoue (par exemple avec
402 insufficient_balanceou une erreur de validation) n’enregistre rien. Après avoir approvisionné votre solde, vous pouvez réessayer avec la même clé. - Deux requêtes simultanées avec la même clé ne posent aucun problème : l’une effectue l’achat, l’autre reçoit la réponse rejouée.