Skip to content

Operation uncertain

FieldValue
Type URIhttps://echo.labstack.com/pro/problems/operation-uncertain
Codeoperation_uncertain
HTTP status409
HTTP statusEnglish title
409Conflict

The result of the operation is unknown. An external send started, but its lease expired before execution recorded the outcome. Or the handler reported the outcome as uncertain. The effect may or may not have happened.

Do not retry automatically, with either the same key or a new one. Report operation_ref to an authorized operator, who can reconcile or resolve the operation. The reference is shown only after the request passed the operation’s replay authorization.

If your application installs a custom handler, the body may differ.

HTTP/1.1 409 Conflict
Content-Type: application/problem+json
Cache-Control: no-store
{
"code": "operation_uncertain",
"operation_ref": "AAAAAAAAAAAAAAAAAAAAAAAA",
"operation_state": "uncertain",
"safe_new_key": false,
"status": 409,
"title": "Conflict",
"type": "https://echo.labstack.com/pro/problems/operation-uncertain"
}

For each send that may have applied, check the provider’s records or record a reviewed resolution. Neither a timeout nor a missing reply proves that no send happened.

  • 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 after ReplayCheck allows 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, completed or failed; empty when no operation was found.
  • safe_new_key (boolean, always): true only when the client may retry with a new key. It is always false when operation_ref and operation_state are empty.

Headers:

  • Cache-Control (always): no-store on every execution problem.

Notes:

  • Execution removes any Idempotent-Replayed header from problem responses.

See execution for operation state and replay rules. Check the provider’s records before recovery. A timeout does not prove that an effect did not occur.