Idempotencia
Las peticiones de escritura aceptan una cabecera Idempotency-Key para que una petición reintentada nunca se aplique dos veces.
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"}'
Reglas
- Genera una key única por cada escritura lógica (un UUID funciona bien).
- Reutiliza la misma key solo para reintentos exactos de esa escritura.
- No reutilices una key entre cuerpos diferentes - eso devuelve
409concode: "CONFLICT". - Las keys se respetan durante 24 horas.
Dónde aplica
Idempotency-Key es obligatoria en todas las operaciones de escritura POST y PATCH de artículos, pedidos, contactos, documentos de existencias y webhooks. Las operaciones DELETE son idempotentes por naturaleza y no requieren la cabecera.
Con el SDK
El SDK acepta una opción idempotencyKey en cada método de escritura:
await fabhub.createItem(
{ name: 'Widget', itemType: 'product' },
{ idempotencyKey: crypto.randomUUID() },
);