PUBLIC
- Written for
- + Written for
- Deprecated
- + Deprecated
- Applies to
- + Applies to
AdminUpdated Sep 12, 2026
GET
https://{apiHost}/metrics§15.3 Prometheus exposition. Guarded by METRICS_TOKEN; 404s when unset, since it reports per-instance sign-in volume.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/metrics"GET
https://{apiHost}/v1/healthLiveness probe. Does not touch the database.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/health"GET
https://{apiHost}/v1/health/readyReadiness probe including a database check.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/health/ready"GET
https://{apiHost}/hosted/sign-inHosted sign-in page with instance branding. Zero-integration path.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/hosted/sign-in"GET
https://{apiHost}/hosted/sign-upHosted sign-up page with instance branding.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/hosted/sign-up"GET
https://{apiHost}/hosted/userHosted account management page with instance branding.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/hosted/user"GET
https://{apiHost}/hosted/app.jsClient script for the hosted pages; drives the sign-in flow.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/hosted/app.js"GET
https://{apiHost}/hosted/sso-setupAccount-less hosted SSO self-service setup page, authenticated only by a scoped one-time ticket token.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/hosted/sso-setup"GET
https://{apiHost}/hosted/sso-setup.jsClient script for the hosted SSO self-service setup page.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/hosted/sso-setup.js"POST
https://{apiHost}/hosted/sso-setup/saveCreate or edit ONLY the ticket-bound connection for ONLY the ticket-bound organization. Client-supplied org/connection ids are ignored; secrets are write-only.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/hosted/sso-setup/save"POST
https://{apiHost}/hosted/sso-setup/completeMark a self-service onboarding ticket completed so it can no longer be used.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/hosted/sso-setup/complete"POST
https://{apiHost}/hosted/sso-setup/scim-tokenMint a SCIM directory-sync bearer token scoped to the ticket-bound organization (only when the profile allows SCIM). Shown once; never read back.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/hosted/sso-setup/scim-token"POST
https://{apiHost}/hosted/sso-setup/domainsClaim an email domain for the ticket-bound organization; returns the DNS TXT record to publish.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/hosted/sso-setup/domains"POST
https://{apiHost}/hosted/sso-setup/domains/verifyRun the DNS-TXT verification for one of the ticket-bound organization’s claimed domains.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/hosted/sso-setup/domains/verify"GET
https://{apiHost}/embed.jsServes the built @atlas/embed IIFE bundle so a tenant can drop in <script src=".../embed.js"> with no build step.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/embed.js"GET
https://{apiHost}/.well-known/jwks.jsonPublic JWKS for the instance on this host. The §7.3 documented path.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/.well-known/jwks.json"GET
https://{apiHost}/instances/{instanceId}/.well-known/jwks.jsonPublic JWKS for local token verification. Cacheable, stale-if-error.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
instanceId | path | string | yes |
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/instances/{instanceId}/.well-known/jwks.json"GET
https://{apiHost}/.well-known/openid-configurationOpenID Provider discovery document for this instance. Host-based issuer, S256 PKCE, RS256.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/.well-known/openid-configuration"GET
https://{apiHost}/v1/saml/idp/metadataAtlas-as-SAML-IdP metadata (pk-resolved): entityId, signing certificate and SSO bindings for a downstream SP to import.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/saml/idp/metadata"GET
https://{apiHost}/v1/oauth/callback/itchioitch.io implicit-flow landing page. Serves a page that reads the fragment token in the browser and posts it to /v1/oauth/itchio.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/oauth/callback/itchio"POST
https://{apiHost}/v1/oauth/itchioitch.io token post-back: resolve the instance from state, exchange the implicit token for the profile, and complete the sign-in (MFA gate). Returns the continuation URL.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/v1/oauth/itchio"GET
https://{apiHost}/v1/oauth/callback/lastfm/{state}Last.fm callback (state in the path). Exchanges the approval token for a session via an MD5-signed auth.getSession and redirects back with a one-time ticket.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
state | path | string | yes |
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/oauth/callback/lastfm/{state}"GET
https://{apiHost}/v1/oauth/bluesky/client-metadata.jsonAT Protocol OAuth client metadata document. Its URL is the Bluesky client_id; the authorization server fetches it during PAR to learn redirect URIs and scopes.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/oauth/bluesky/client-metadata.json"GET
https://{apiHost}/v1/oauth/callback/{provider}Provider redirect target. Redirects back with a one-time ticket, never a token.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
provider | path | string | yes |
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/oauth/callback/{provider}"POST
https://{apiHost}/v1/oauth/callback/{provider}Provider form_post callback (Apple).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
provider | path | string | yes |
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/v1/oauth/callback/{provider}"GET
https://{apiHost}/v1/sso/callbackEnterprise SSO IdP redirect target. Verifies the OIDC id_token, JIT-provisions org membership, and redirects back with a one-time ticket.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/sso/callback"POST
https://{apiHost}/v1/sso/saml/acsSAML Assertion Consumer Service. Verifies the signed assertion (audience, timestamps, XSW-hardened), JIT-provisions org membership, and redirects back with a one-time ticket.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/v1/sso/saml/acs"GET
https://{apiHost}/v1/sso/saml/{connectionId}/metadataSAML SP metadata XML for a connection: the entityID and ACS URL the operator registers with their IdP.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
connectionId | path | string | yes |
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/v1/sso/saml/{connectionId}/metadata"GET
https://{apiHost}/lti/loginLTI 1.3 OIDC login initiation. Looks up the platform by (iss, client_id) and 302s to its authorization endpoint with a state+nonce (response_type=id_token, response_mode=form_post, prompt=none).
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X GET "https://{apiHost}/lti/login"POST
https://{apiHost}/lti/loginLTI 1.3 OIDC login initiation (form-post variant of GET /lti/login).
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/lti/login"POST
https://{apiHost}/lti/launchLTI 1.3 launch callback. Verifies the platform id_token (JWKS signature, iss, aud=client_id, single-use nonce), enforces the deployment_id allowlist and LtiResourceLinkRequest/1.3.0, JITs the user, and lands them on target_link_uri with SameSite=None session cookies for the LMS iframe.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/lti/launch"POST
https://{apiHost}/stripe/webhookStripe webhook. Verifies the signature over the raw body, then moves the account plan free↔pro on checkout.session.completed and customer.subscription.updated/deleted. The only writer of plan; a bad signature is a 400 that changes nothing.
Responses
200 Success
400 Validation failed
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}401 Unauthenticated
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}403 Forbidden or missing scope
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}404 Not found
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}409 Conflict
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}429 Rate limited
{
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "string",
"param": "string",
"meta": {}
}
]
}Example request
curl -X POST "https://{apiHost}/stripe/webhook"Was this page helpful?