Every Versola HTTP API is described by an OpenAPI 3.1 file that lives next to the code it describes, in the versola repository on the main branch. The files are the contract: open them in any OpenAPI viewer, or feed them to a client generator.
Auth: the OAuth 2.0 / OpenID Connect server
Public endpoints of the auth service. One file per endpoint group, in auth/open-api/.
| Spec | Endpoints | Background |
|---|---|---|
authorize.yaml | GET and POST /authorize | RFC 6749, PKCE, JAR, JARM |
par.yaml | POST /par | RFC 9126 |
token.yaml | POST /token | RFC 6749, DPoP |
introspect.yaml | POST /introspect | RFC 7662 |
revoke.yaml | POST /revoke | RFC 7009 |
userinfo.yaml | GET and POST /userinfo | OIDC Core |
logout.yaml | GET and POST /logout | Front-channel and back-channel logout |
jwks.yaml | GET /.well-known/jwks.json | RFC 7517 |
metadata.yaml | GET /.well-known/openid-configuration, GET /.well-known/oauth-authorization-server | RFC 8414 |
The endpoints behave differently per tenant security profile: the specs describe both, so read the profile notes in each file.
Central: the control plane
central/open-api/central.yaml describes the admin API the admin console is built on: tenants, clients, resources, scopes, permissions, roles, users, challenges, forms, locales, themes, JWKS, edges and system settings. The same file is rendered in the browser on the Central API page.
Edge: the traffic plane
edge/open-api/edge.yaml describes the browser login routes, the proxy route /resources/{resourceId}/{path}, /permissions/me and the /native/* endpoints used by mobile apps. See Edge overview for how they fit together.
Known gaps in the specs
The OpenAPI files lag the code in a few places. When a spec and observed behaviour disagree, the behaviour is the bug or the spec is: report it on GitHub.
authorize.yamldoes not listresponse_modeorrequest.token.yamlandintrospect.yamldo not describeclient_assertionor mutual-TLS client authentication.introspect.yamldoes not listcnfin the response.central.yamldoes not listPOST /configuration/clients/edge-certificate/renew,POST /configuration/jwks/generate,GET /configuration/jwks/keysandPOST /users/registrations.- The
info.licensefields in some specs name a licence other than the Versola Community License.