Skip to content
TastePolicy.Open workspace

DEVELOPER REFERENCE

Typed failures, explicit stops.

Use stable error codes and HTTP status. Missing evidence must not become a negative preference.

Error catalog

  • AUTH_REQUIRED
    {
      "http": 401,
      "retryable": false,
      "message": "A valid developer credential is required."
    }
  • ACCESS_DENIED
    {
      "http": 403,
      "retryable": false,
      "message": "This credential or grant does not permit the operation."
    }
  • GRANT_REQUIRED
    {
      "http": 403,
      "retryable": false,
      "message": "An active grant from the Passport owner is required."
    }
  • GRANT_EXPIRED
    {
      "http": 403,
      "retryable": false,
      "message": "The grant has expired."
    }
  • GRANT_REVOKED
    {
      "http": 403,
      "retryable": false,
      "message": "The grant has been revoked."
    }
  • CREDENTIAL_REVOKED
    {
      "http": 403,
      "retryable": false,
      "message": "The credential has been revoked."
    }
  • CREDENTIAL_EXPIRED
    {
      "http": 403,
      "retryable": false,
      "message": "The credential has expired."
    }
  • RECENT_AUTH_REQUIRED
    {
      "http": 403,
      "retryable": false,
      "message": "A fresh browser sign-in is required."
    }
  • INTEGRITY_ERROR
    {
      "http": 403,
      "retryable": false,
      "message": "Recorded evidence failed an integrity check."
    }
  • PASSPORT_NOT_FOUND
    {
      "http": 404,
      "retryable": false,
      "message": "No such Passport or evaluation is available to this caller."
    }
  • LEASE_NOT_FOUND
    {
      "http": 404,
      "retryable": false,
      "message": "No such lease is available to this caller."
    }
  • LEASE_NOT_PERMITTED
    {
      "http": 403,
      "retryable": false,
      "message": "This decision cannot be leased."
    }
  • LEGACY_AUTHORITY_NOT_PORTABLE
    {
      "http": 409,
      "retryable": false,
      "message": "Legacy authority without candidate and context commitments cannot be issued as a portable proof. Evaluate the current choice again."
    }
  • CLARIFICATION_REQUIRED
    {
      "http": 409,
      "retryable": false,
      "message": "A fact is missing. Capture it and evaluate again; approving cannot supply it."
    }
  • COMMITMENT_REQUIRED
    {
      "http": 428,
      "retryable": false,
      "message": "This lease is bound to a candidate and a situation. Present both as they are now (or their commitments) to rely on it."
    }
  • COMMITMENT_MISMATCH
    {
      "http": 409,
      "retryable": false,
      "message": "The candidate or context you presented is not the one this authority was evaluated for. Evaluate the current choice again."
    }
  • LEASE_STATE_CONFLICT
    {
      "http": 409,
      "retryable": false,
      "message": "The lease changed or is not in a state that allows this."
    }
  • INVALID_INPUT
    {
      "http": 400,
      "retryable": false,
      "message": "The request does not match the contract."
    }
  • STATE_VERSION_CONFLICT
    {
      "http": 409,
      "retryable": false,
      "message": "The Passport state version has changed; read it again."
    }
  • IDEMPOTENCY_KEY_CONFLICT
    {
      "http": 409,
      "retryable": false,
      "message": "The idempotency key was used with a different payload."
    }
  • BODY_TOO_LARGE
    {
      "http": 413,
      "retryable": false,
      "message": "The request body is too large."
    }
  • BODY_READ_TIMEOUT
    {
      "http": 408,
      "retryable": true,
      "message": "The request body was not received in time."
    }
  • RATE_LIMITED
    {
      "http": 429,
      "retryable": true,
      "message": "Rate limit reached; retry later."
    }
  • NOT_CONFIGURED
    {
      "http": 503,
      "retryable": true,
      "message": "The service is not configured."
    }
  • PROVIDER_UNAVAILABLE
    {
      "http": 503,
      "retryable": true,
      "message": "A required provider is unavailable."
    }
  • INTERNAL_ERROR
    {
      "http": 500,
      "retryable": true,
      "message": "An internal error occurred."
    }