Skip to content

Failed precondition

failed_preconditionHTTP 400Retrying the same request will not help

The request is valid, but the data is not in the state the operation needs.

Why it happens

  • VersionConflict: a command sent ifVersion (or If-Match) and the entity has changed since. The error carries the current entity, and HTTP bindings answer 412 Precondition Failed.
  • DependencyFailed: an operation used $ref to read an earlier operation's result, and that operation failed.

What to do

  • For a version conflict, show the user the current entity from the error's data, then send the change again with the new version.
  • For a failed dependency, look at the error of the operation it depended on: that one is the real cause.

What it looks like

Inside a batch, the operation's frame carries it:

json
{
  "id": 1,
  "error": {
    "code": "failed_precondition",
    "message": "Review:r1 is at version 4, not 3"
  },
  "fin": true
}

When the whole request is refused over HTTP, the answer is a problem document:

json
{
  "type": "https://eddyboutros.github.io/rayfold/errors/failed_precondition",
  "title": "failed precondition",
  "status": 400,
  "detail": "Review:r1 is at version 4, not 3",
  "code": "failed_precondition"
}

See also all error types and the errors chapter of the specification.

Released under the Apache-2.0 license.