Idempotenza
Le richieste di scrittura accettano un header Idempotency-Key così che una richiesta ripetuta non venga mai applicata due volte.
curl -X POST https://api.fabhub.app/v1/items \
-H "X-API-Key: $FABHUB_API_KEY" \
-H "Idempotency-Key: 0b9c4a2e-2f1d-4c7a-9b3e-2a1f5c8d7e6b" \
-H "Content-Type: application/json" \
-d '{"name":"Widget","itemType":"product"}'
Regole
- Genera una chiave univoca per ogni scrittura logica (un UUID funziona bene).
- Riutilizza la stessa chiave solo per ritentativi esatti di quella scrittura.
- Non riutilizzare una chiave tra payload diversi - ciò restituisce
409concode: "CONFLICT". - Le chiavi sono valide per 24 ore.
Dove si applica
Idempotency-Key è obbligatorio per ogni operazione di scrittura POST e PATCH relativa ad articoli, ordini, contatti, documenti di magazzino e webhook. Le operazioni DELETE sono naturalmente idempotenti e non richiedono l'header.
Con l'SDK
L'SDK accetta un'opzione idempotencyKey su ogni metodo di scrittura:
await fabhub.createItem(
{ name: 'Widget', itemType: 'product' },
{ idempotencyKey: crypto.randomUUID() },
);