Skip to Content
MuoCeon Docs

Overview

How the API docs are organised (overview → version → context → endpoint group), the version list, and the request/response conventions shared across versions.

This section documents the external HTTP API. It is organised in four levels — overview → version → context → endpoint group — and this page is the first: the overall structure first, then the conventions that apply to every version.

How it is organised

LevelContentWhere
OverviewStructure, version list, shared conventionsThis page
VersionOne independent contract, the /v1 or /v2 in the pathv1, v2
ContextA bounded context on the server, which is also a token audienceThe context pages inside a version
Endpoint groupA set of endpoints sharing a path prefixThe group tables inside a context page

The four levels are not a documentation convention but the implementation structure: the version prefix sits on the route root, the context is the next path segment, and the endpoint group the one after. The URL is the table of contents — /v1/oauth/grants maps to "v1 → oauth → grants".

Versions

VersionStatusNotes
v1In useThe only usable version today; three contexts: auth / oauth / account
v2UnreleasedPlaceholder. New versions exist only for breaking changes; v2 defines no endpoints yet

Contexts and audiences

ContextBase pathAudienceMain consumers
auth{origin}/v1/authauthAccount UI, consent UI; third parties reading user info
oauth{issuer} (i.e. {origin}/v1/oauth)oauthThird-party authorization and tokens, consent-internal endpoints
account{origin}/v1/accountaccountAccount profile

Contexts share no data and tokens do not cross them: an auth-audience token cannot read account data, even when the scope looks sufficient.

Addresses and versioning

  • The version lives in the path (/v1/), not in a header; there is no Accept-Version negotiation.
  • Within a version only compatible changes happen: new endpoints, new optional fields, new error code values. Existing field semantics and required-ness do not change.
  • Breaking changes always come with a new version; the old version runs in parallel for a while and is retired with notice. Behaviour never changes silently on the same path.
  • Always read endpoint addresses from discovery; do not hardcode domains.

Authentication

ScenarioMethod
Resource endpoints (UserInfo, account management)Authorization: Bearer <access_token>
Token endpoints (token / revoke / introspect)Client authentication: client_secret_basic or client_secret_post; public clients send client_id only

Unsupported authentication methods return 401 outright. There is no "best-effort" fallback — a fallback attempt only disguises an authentication failure as a parameter error.

Request formats

  • Token endpoints: Content-Type: application/x-www-form-urlencoded.
  • Consent UI and internal endpoints: Content-Type: application/json, POST only.
  • Resource endpoints: GET with no body; write operations use a JSON body.

Response formats

Two coexist, split by endpoint. Clients must parse both:

Endpoint classSuccess responseError response
Protocol endpoints (token / revoke / introspect)Flat JSON (access_token, expires_in, …)RFC 6749 §5.2: { "error": "...", "error_description": "..." }
Resource and management endpointsFlat JSONUnified envelope: { success, code, message, details?, timestamp }

The full code list is in Error codes.

Rate limits

  • Each endpoint counts independently, alongside a global limit.
  • Exceeding a limit returns 429 with Retry-After (seconds).
  • Honour Retry-After; use randomised backoff in batch scenarios, not fixed-interval retries.

Caching

ResponseCache header
Token endpointsCache-Control: no-store — must not be cached
jwksCacheable for 5 minutes; match keys by kid
Resource endpointsUser data is never cacheable

Time and identifiers

  • Times are Unix seconds (auth_time, iat, exp) or ISO 8601 UTC strings (timestamp).
  • User identity uses sub: globally stable and unpredictable. Do not key accounts on email or nickname.
  • Paginated endpoints use cursor or page parameters; see the individual endpoint page.

Where third parties start

Field-level docs are being filled in per version and context; until then, the four pages above cover everything third-party integration needs.

On this page