Documentation Index
Fetch the complete documentation index at: https://docs.waspytech.com/llms.txt
Use this file to discover all available pages before exploring further.
¿Qué es?
La idempotencia garantiza que una request repetida no genere efectos duplicados. Si tu sistema reintenta un envío (por timeout, error de red, etc.), el mismo mensaje no se envía dos veces.Endpoints que soportan idempotencia
| Endpoint | Idempotencia |
|---|---|
POST /messages | Soportada (header Idempotency-Key) |
| Otros endpoints | No aplica |
Cómo usarla
Incluí el headerIdempotency-Key con un valor único por operación:
Comportamiento
| Situación | Resultado |
|---|---|
| Primera request con la key | Se procesa normalmente, respuesta 201 |
| Request repetida con la misma key (después de la 1ra exitosa) | Devuelve la respuesta original cacheada con header Idempotency-Replayed: true |
| Request concurrente con la misma key (1ra todavía procesando) | Devuelve 409 IDEMPOTENCY_CONFLICT |
| Request repetida después de un 503/error transitorio | Si la 1ra alcanzó a insertar el mensaje, recibís la response cacheada con el mismo data.id. Si nunca llegó a insertarse, se procesa como nueva. Esto es exactamente lo que querés para hacer retry seguro. |
| Request repetida después de 5xx que NO completó | El lock expira a los 30s. Pasados esos 30s el retry se procesa como nueva request. |
Respuesta repetida (replay)
Conflicto concurrente
Detalles técnicos
- TTL: 24 horas. Después de 24hs, la misma key se puede reutilizar.
- Largo máximo: 256 caracteres.
- Scope: La key es única por cuenta (tenant). Dos cuentas pueden usar la misma key sin conflicto.
- Comparación: string equality, no hash. No hay riesgo de “colisión de hash” —
Idempotency-Key: AyIdempotency-Key: Bsiempre se tratan como distintas. Cualquier string ≤256 chars es válido. - Política ante mismo body con misma key: se devuelve la respuesta original cacheada (replay).
- Política ante body distinto con misma key: Waspy NO valida que el body sea idéntico. Devuelve la respuesta original. Es responsabilidad del integrador no reutilizar la misma key para envíos diferentes — usar identificadores únicos del lado tuyo (ej.
orden-1847-confirmacion).
Buenas prácticas
- Usá un identificador de tu sistema como key (ej:
orden-1847-confirmacion,pago-uuid-notify). - No uses valores aleatorios (eso anula el propósito).
- Si recibís un timeout, reintentá con la misma key — la respuesta original se va a devolver.