Skip to content

Errors

Every error this API returns carries a code. The wording of a message can change — it gets clearer, it gets translated — but the code does not, so match on the code, not on the text.

{
  "code": "ARKHE-1011",
  "message": "A request holds at most 1000 rows.",
  "detail": {"limit": 1000}
}

detail carries the values that filled the message, still structured, so a client never has to cut a number back out of a sentence.

Resolution answers in text/plain (a person reads it too), with the code first:

ARKHE-1403 ark:99999/x9tn1qkq2g8 — Check digit mismatch: the identifier looks mistranscribed.

Two places keep a different shape on purpose. /oauth/token follows RFC 6749 §5.2error and error_description, which is what OAuth client libraries read — and adds code alongside. The admin interface answers from its own catalogue, in the language of the screen (?lang= → cookie → Accept-Language); it is a browser surface, not this API.

Code Status Message
ARKHE-1001 400 Not readable as an ARK:
ARKHE-1002 400 A qualifier must begin with '/' (a part) or '.' (a variant).
ARKHE-1003 400 The qualifier does not point inside the base name:
ARKHE-1004 400 The name is {length} octets; at most {limit} are indexed (Base Name plus Qualifier, draft-kunze-ark-42 §3.1).
ARKHE-1005 400 {ark} is already registered.
ARKHE-1006 400 A target must not use a scheme a browser would execute ({schemes}).
ARKHE-1007 400 A principal with authority={authority} must name a shoulder.
ARKHE-1008 400 No such shoulder:
ARKHE-1009 400 Shoulder {shoulder} exists under more than one NAAN; name the naan as well.
ARKHE-1010 400 The organisation has no default shoulder.
ARKHE-1011 400 A request holds at most {limit} rows.
ARKHE-1012 400 Check digit mismatch: {ark} was not minted by a NOID minter, or was mistyped.
ARKHE-1013 400 The name {name} does not fall inside a shoulder of NAAN {naan}.
ARKHE-1014 400 {ark} was withdrawn before publication; that name is never assigned again.
ARKHE-1015 400 Purging a published ARK requires a reason; it is kept with the name.
ARKHE-1016 400 Send confirm with the ARK itself ({ark}) to purge it.
ARKHE-1017 400 This ARK has been published; unpublishing or deleting it requires a reason.
ARKHE-1018 400 Send confirm with the ARK itself ({ark}): it has been published.
ARKHE-1201 401 No credentials.
ARKHE-1202 401 Invalid credentials.
ARKHE-1203 404 This deployment does not issue tokens itself (see ARKHE_AUTH).
ARKHE-1204 400 Only client_credentials is supported.
ARKHE-1301 403 The token does not carry the required scope:
ARKHE-1302 403 Outside this principal's registered reach:
ARKHE-1303 403 The principal has no active organisation.
ARKHE-1304 403 Shoulder {shoulder} has status={status} and cannot be minted into.
ARKHE-1305 403 Scopes not allowed for this client:
ARKHE-1306 307 Minting for shoulder {shoulder} is delegated; go to the minter in Location.
ARKHE-1307 403 Shoulder {shoulder} has status={status}; only a delegated shoulder can be imported into.
ARKHE-1308 403 This resolver is not authoritative for NAAN {naan}; it cannot take custody of names in it.
ARKHE-1309 403 Minting for shoulder {shoulder} happens elsewhere and is not reachable from here. See {about}
ARKHE-1401 404 No such ARK in this ledger.
ARKHE-1402 404 This resolver is authoritative for the NAAN and has no such name.
ARKHE-1403 404 Check digit mismatch: the identifier looks mistranscribed.
ARKHE-1404 404 Metadata for an unknown NAAN is not held by this resolver.
ARKHE-1501 409 {ark} is published; unpublish it first (or purge it in one step).
ARKHE-1502 409 {ark} has {count} qualified name(s) under it; withdraw those first.
ARKHE-1503 409 {ark} is not published; there is nothing to withdraw from publication.
ARKHE-1504 409 {ark} has been published; a name that has been out is deleted on its own, not in a batch.
ARKHE-1601 429 Daily quota exhausted: {used} of {quota} used in the last 24 hours.