☰ Meniu · Idempotență
Idempotență
Rețeaua poate cădea în mijlocul unui apel. Orice scriere poate fi reîncercată în siguranță, așa că un oaspete nu primește niciodată de două ori cashback pentru același bon.
Bonuri și vizite: external_id
POST /v1/transactions și POST /v1/visits cer external_id: id-ul tău al bonului sau al vizitei. Aplicăm fiecare external_id o singură dată per local. Dacă îl trimiți din nou, primești 200 cu rezultatul salvat în loc de 201, iar pe card nu se schimbă nimic. Regula este permanentă, nu doar pentru o zi, așa că poți retrimite în siguranță un schimb întreg după ce casa a fost offline.
Restul: Idempotency-Key
Pentru celelalte scrieri (înscrierea unui membru, acordarea unei recompense, crearea unui preparat) trimite antetul Idempotency-Key cu o valoare unică, de exemplu un UUID generat înainte de prima încercare. Păstrăm răspunsul 24 de ore. O reîncercare cu aceeași cheie și același corp primește acel răspuns, cu antetul Idempotent-Replayed: true. Aceeași cheie cu alt corp este refuzată cu 409 idempotency_key_reused.
curl https://loyaltyfy.io/api/v1/members \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 3f6d1c0a-9b0e-4d2b-8e57-enrol-77" \
-d '{ "phone": "+37366791102", "first_name": "Ion", "consent": true }'
# repeat the same call: same body, same status, plus the header
# Idempotent-Replayed: trueCum reîncerci
- Reîncearcă la erori de rețea, timeout,
429,500,502și503. Nu reîncerca alte4xx; răspunsul nu se va schimba. - Așteaptă înainte de fiecare reîncercare, de fiecare dată mai mult, de exemplu 1, 2, 4, 8 secunde.
- Păstrează același
external_idsauIdempotency-Keyla toate reîncercările aceleiași operații. O valoare nouă înseamnă o operație nouă.