ADR-069: Idempotency store
Estado
Accepted — 2026-08-23
Decisión
Header Idempotency-Key (ADR-047) se persiste en Postgres:
idempotency_keys: organizationId, userId, key, method, path, requestHash, responseStatus, responseBody, createdAt, expiresAt.
- TTL: 24 h.
- Misma key + mismo hash → replay 200.
- Misma key + hash distinto → 409
CONFLICT. - Key scoped por Organization + User.
No solo Redis (se pierde). Redis puede cachear el lookup.