Who the bearer token belongs to. [`Caller`] does the work: it demands a real session (not open in public-dashboard mode, since an anonymous visitor has no identity to report).
const url = 'https://example.com/api/v1/auth/me';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/auth/me \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”The bearer holder’s role and username
The caller’s own identity.
object
How this account signs in. The WebUI draws “Change my password” only for local, and for
oidc/ldap says where the password actually lives — one fact on the wire, so the UI holds
no copy of the rule (ADR-122 decision 5).
null means this core has no user store to ask (skeleton mode). Read it as “not local” —
every consumer fails closed, because the alternative is drawing a control whose write path
does not exist here.
Predefined roles, ordered least → most privileged.
Example
{ "kind": "local", "role": "viewer", "scope": "All"}No valid bearer token — closed even on a public dashboard
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}