Preskočiť na obsah
Sursa Developers

Idempotentné požiadavky

Požiadavka môže zlyhať až potom, ako Sursa prácu už vykonala: spojenie sa preruší alebo sa váš proces reštartuje skôr, než príde odpoveď. Ak rovnaký POST odošlete znova, môžete vytvoriť druhú kartu alebo druhý webhook. Tomu zabráni kľúč idempotencie.

S každou požiadavkou POST a PATCH odošlite hlavičku Idempotency-Key. Ak už Sursa požiadavku s týmto kľúčom videla, operáciu znova nevykoná: vráti odpoveď, ktorú si uložila prvýkrát.

curl -X POST https://api.sursa.com/v1/cards/text \
  -H "Authorization: Bearer $SURSA_API_KEY" \
  -H "Idempotency-Key: 6f1d2c9e-7b0a-4c43-9a51-0d6c1c1f8e21" \
  -H "Content-Type: application/json" \
  -d '{"title": "Refund policy", "body_markdown": "Refunds are processed within 14 days."}'

Opakovaná požiadavka dostane rovnaký stav a telo ako prvá, s jednou hlavičkou navyše:

HTTP/1.1 200 OK
Idempotency-Replayed: true
X-Request-Id: 01JB7R…

Opakovaná požiadavka má vlastné X-Request-Id.

Výber kľúča

  • Pre každú logickú operáciu použite novú náhodnú hodnotu, napríklad UUID v4: „vytvoriť túto kartu“, „zaregistrovať tento webhook“. Rovnakú hodnotu použite pri každom opakovaní tejto operácie a nikdy pri inej.
  • Dobrý kľúč je odvodený z vašich vlastných údajov, ak nejaké máte, napríklad sync-2026-10-24-record-1042. Potom aj reštartovaná úloha, ktorá stratila pamäť, odošle znova ten istý kľúč.
  • Kľúč má 1 až 255 tlačiteľných znakov ASCII. Čokoľvek iné vráti 400 s kódom api.idempotency_key_invalid.

Čo Sursa s kľúčom urobí

SituáciaOdpoveď
Prvá požiadavka s týmto kľúčomOperácia sa vykoná ako zvyčajne.
Rovnaký kľúč, rovnaká požiadavka, prvá skončila s 2xx alebo 4xxUložená odpoveď s Idempotency-Replayed: true. Operácia sa znova nevykoná.
Rovnaký kľúč, prvá požiadavka ešte prebieha409 api.idempotency_in_progress s Retry-After: 1. Počkajte a zopakujte.
Rovnaký kľúč, iná metóda, cesta, Content-Type alebo telo409 api.idempotency_mismatch. Kľúč už použila iná požiadavka.
Prvá požiadavka skončila s 5xx alebo 429Kľúč sa uvoľní: ďalšia požiadavka s ním operáciu vykoná znova.
  • Kľúč platí 24 hodín. Potom ten istý kľúč spustí novú operáciu.
  • Kľúče sú oddelené pre každú organizáciu a každého volajúceho: dva rôzne kľúče API môžu používať rovnakú hodnotu bez toho, aby sa navzájom ovplyvňovali.
  • Uloží sa aj chybová odpoveď 4xx. Požiadavka, ktorá neprešla validáciou, pri opakovaní s rovnakým kľúčom zlyhá rovnako; opravte ju a odošlite s novým kľúčom.

Ktoré požiadavky ho potrebujú

MetódaIdempotency-Key
POST, PATCHOdošlite ho. Každá operácia, ktorá si odpoveď ukladá pre opakovanie, uvádza túto hlavičku v referencii API.
GET, PUT, DELETENetreba: tieto metódy možno svojou podstatou bezpečne opakovať. Hlavička sa prijme a nemá žiadny účinok.
POST, ktorý len číta, napríklad vyhľadávanie, finančné prehľady a POST /v1/catalog/resolvePrijme sa, ale nič sa neuloží: požiadavka sa jednoducho vykoná znova.

Niektoré operácie možno bezpečne opakovať aj bez tejto hlavičky:

Bezpečné opakovanie

Kľúč kombinujte s pravidlami opakovania z návodu Chyby: kľúč vytvorte raz, pred prvým pokusom, a odošlite ho s každým pokusom o tú istú operáciu.