As a developer, I want to provide an idempotency key for orders, So that retries are safe and don’t create duplicates. ## Acceptance criteria - [ ] AC1: The order placement endpoint (`/api/v1/orders`) accepts an `Idempotency-Key` header. - [ ] AC2: The orchestrator checks for the existence of this key in a persistent store (SQLite/Postgres). - [ ] AC3: If the key is found, the orchestrator immediately returns the cached response from the original request without calling the adapters. - [ ] AC4: If the key is not found, the orchestrator proceeds with the request and stores the key and the final `UnifiedResponse` upon completion. - [ ] AC5: The stored keys have a configurable TTL (e.g., 24 hours). ## Definition of Done - [ ] Code implemented in a feature/fix branch - [ ] Unit / integration tests added or existing tests updated - [ ] Linting passed and code builds locally - [ ] Docs / README updated if behavior changed - [ ] PR opened and linked (`Closes #<issue-number>`) - [ ] Manual QA steps verified (if applicable)
As a developer,
I want to provide an idempotency key for orders,
So that retries are safe and don’t create duplicates.
Acceptance criteria
/api/v1/orders) accepts anIdempotency-Keyheader.UnifiedResponseupon completion.Definition of Done
Closes #<issue-number>)