Idempotency key reused
Identifiers
Section titled “Identifiers”| Field | Value |
|---|---|
| Type URI | https://echo.labstack.com/pro/problems/idempotency-key-reused |
| Code | idempotency_key_reused |
| HTTP status | 422 |
| HTTP status | English title |
|---|---|
| 422 | Unprocessable Entity |
When it occurs
Section titled “When it occurs”The key already belongs to another request. This request’s fingerprint differs from the first recorded request.
Client handling
Section titled “Client handling”Do not change a request while you retry it under the same key. To get the original operation’s answer, resend the original request with that key. Use a new key only for a new, different operation.
Example response
Section titled “Example response”If your application installs a custom handler, the body may differ.
HTTP/1.1 422 Unprocessable EntityContent-Type: application/problem+jsonCache-Control: no-store
{ "code": "idempotency_key_reused", "operation_ref": "", "operation_state": "", "safe_new_key": false, "status": 422, "title": "Unprocessable Entity", "type": "https://echo.labstack.com/pro/problems/idempotency-key-reused"}Server correction
Section titled “Server correction”Check which request fields FingerprintSpec includes. Keep fields that change business behavior in the fingerprint.
Response fields
Section titled “Response fields”Execution middleware
Section titled “Execution middleware”type(string, always): The exact type URI above.title(string, always): The HTTP status text.status(integer, always): The HTTP status of the response.code(string, always): The stable code above.operation_ref(string, always): An opaque reference to the operation. It is set only afterReplayCheckallows the request, and is empty when no operation was found. Use it to look up the operation; it does not grant access.operation_state(string, always):started,uncertain,completedorfailed; empty when no operation was found.safe_new_key(boolean, always):trueonly when the client may retry with a new key. It is alwaysfalsewhenoperation_refandoperation_stateare empty.
Headers:
Cache-Control(always):no-storeon every execution problem.
Notes:
- Execution removes any
Idempotent-Replayedheader from problem responses.
Related behavior
Section titled “Related behavior”See execution for operation state and replay rules.