Skip to main content

Error Responses

All services return the standard DxErrorResponse envelope:

{
"type": "urn:dx:acl:Forbidden",
"title": "Forbidden",
"detail": "Access Denied: Not owner or org_admin of same organisation"
}

Error types

HTTPURN suffixMeaning
400ValidationMalformed input (bad UUID, missing field, invalid enum)
401UnauthorizedMissing/invalid/expired token
403ForbiddenAuthenticated but not allowed (ownership, role, APD scope)
404NotFoundResource/policy does not exist
409ConflictDuplicate (e.g. overlapping ACTIVE policy for same accessType)
410ExpiredResource (e.g. policy) has expired
429TooManyRequestsRate limit exceeded
500InternalErrorUnexpected server error — check service logs
502BadGatewayUpstream dependency failed (gRPC/DB/MQ)

Handling guidance

  • 4xx — fix the request; the detail field states exactly what failed.
  • 409 on policy create — list existing policies first; see Debugging Policy Creation.
  • 5xx — retry with backoff; if persistent, check /healthz/ready of the service and its dependencies.