Auth API
Session authentication for the portal and API: local and Entra ID/OIDC sign-in and sign-out flows, plus pre-login status, session, and role reads. The sign-in endpoints and pre-login reads are deliberately auth-exempt.
14 routes
Response metadata: x-api-version, x-request-id, and traceresponse apply to normal routed responses and are omitted from the per-operation header tables below.
GET/api/auth/entra/authorize-url
public accessno bearer auth required
Begins a browser sign-in.
Persists (state, nonce, pkce_verifier, binding) via the single-use oidc_login_states store, then returns the tenant authorize URL plus the per-browser binding as JSON. The binding is ALSO set as the HttpOnly mode-selected binding cookie for direct same-origin browser callers; the portal server function (which cannot forward upstream Set-Cookie headers) reads the JSON field and sets an identical cookie on its own response. The binding value never reaches page JavaScript either way. Mandatory shared source/global admission precedes PostgreSQL; serialized DB-time cleanup and provider/global quotas precede entropy generation. A 429 carries a bounded Retry-After response header.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
GET https://<your-host>/api/auth/entra/authorize-url
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
200 response body
Structure: Value.
| Name | Type | Requirement | Description |
|---|---|---|---|
authorize_url | JSON value | Required | Value of authorize_url returned in the response body. |
binding | JSON value | Required | Value of binding returned in the response body. |
200 response headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Set-Cookie | string | Optional | Authentication/session cookie emitted on the successful branch that establishes or clears browser state. |
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
'https://<your-host>/api/auth/entra/authorize-url'
Schematic response body
Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.
Success status: 200
{
"authorize_url": null,
"binding": null
}
GET/api/auth/entra/callback
public accessno bearer auth required
Completes a browser sign-in.
Flow (mirrors the generic OIDC callback): 1. Gate on auth mode + SSO config, then on DB availability. 2. If the IdP returned ?error=, redirect to /?auth_error=1 (the error text is never forwarded). 3. Require code and state. 4. Consume the state row (single-use, expiry-checked) and verify the per-browser binding cookie. 5. Exchange the code (PKCE public client — no secret). 6. Validate the id_token (RS256 sig + iss/aud/exp/nbf + nonce) and extract identity + roles. 7. Mint the SAME persisted session shape local login mints (aligned row-expiry and cookie Max-Age), set the mode-selected session cookie, and 302-redirect to / (hardcoded — no open-redirect surface).
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
GET https://<your-host>/api/auth/entra/callback
Path parameters
This operation has no path parameters.
Query parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
code | string | Optional | Authorization code returned by the identity provider; required together
with state on the successful callback path. |
state | string | Optional | Single-use state returned by the identity provider; required together
with code on the successful callback path. |
error | string | Optional | Identity-provider error code. When present, the callback follows the sanitized error-redirect path instead of the code-exchange path. |
error_description | string | Optional | Optional provider error detail. It is accepted for protocol compatibility but is never forwarded to the browser. |
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Cookie | string | Optional | Required on the successful code + state callback path: the browser must return the HttpOnly __Host-entra_login_csrf binding cookie set by login initiation. The provider-error redirect path does not require it. Explicit loopback HTTP uses the compatibility name entra_login_csrf. |
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
302 | Found | No response body |
302 response headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Cache-Control | string | Required | The handler directly marks this response no-store, preventing persistence or idempotency replay of the returned value. |
Location | string | Required | Redirect target selected by the authentication flow. |
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
--header 'Cookie: __Host-entra_login_csrf=<browser-binding>' \
'https://<your-host>/api/auth/entra/callback?code=<code>&state=<state>'
GET/api/auth/local/decision
request access
Auth local decision.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
request | An authenticated session or API bearer token is required. | The access class is enforced first; site and environment scopes narrow resources on scoped operations. |
HTTP request
GET https://<your-host>/api/auth/local/decision
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Authorization | string | Optional | Human credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed. |
X-Ryuki-Session-Id | string | Optional | Opaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request. |
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
200 response body
Structure: Value.
| Name | Type | Requirement | Description |
|---|---|---|---|
authenticationMode | string | Required | Value of authenticationMode returned in the response body. |
configuredForProduction | boolean | Required | Value of configuredForProduction returned in the response body. |
entraGroupsConfigured | boolean | Required | Value of entraGroupsConfigured returned in the response body. |
requiredProductionProvider | string | Required | Value of requiredProductionProvider returned in the response body. |
role | JSON value | Required | Value of role returned in the response body. |
action | string | Required | Value of action returned in the response body. |
allowed | boolean | Required | Value of allowed returned in the response body. |
decision | string | Required | Value of decision returned in the response body. |
reason | string | Required | Value of reason returned in the response body. |
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
--header 'Authorization: Bearer <token>' \
'https://<your-host>/api/auth/local/decision'
Schematic response body
Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.
Success status: 200
{
"authenticationMode": "<string>",
"configuredForProduction": false,
"entraGroupsConfigured": false,
"requiredProductionProvider": "<string>",
"role": null,
"action": "<string>",
"allowed": false,
"decision": "<string>",
"reason": "<string>"
}
POST/api/auth/local/login
public accessno bearer auth required
Auth local login.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
POST https://<your-host>/api/auth/local/login
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Content-Type | string | Required | Required by the resolved Axum Json<T> request extractor; send application/json. |
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
JSON structure: LocalLoginRequest.
| Name | Type | Requirement | Description |
|---|---|---|---|
username | string | Required | Value of username in the JSON request body. |
password | string | Required | Value of password in the JSON request body. |
Response
No successful response schema was extracted for this operation.
Error responses use the platform ApiError body (error, message, optional detail).
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request POST \
--header 'Content-Type: application/json' \
--data '{"username":"<string>","password":"<string>"}' \
'https://<your-host>/api/auth/local/login'
POST/api/auth/local/logout
public accessno bearer auth required
Auth local logout.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
POST https://<your-host>/api/auth/local/logout
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
No successful response schema was extracted for this operation.
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request POST \
'https://<your-host>/api/auth/local/logout'
GET/api/auth/local/me
request access
Auth local me.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
request | An authenticated session or API bearer token is required. | The access class is enforced first; site and environment scopes narrow resources on scoped operations. |
HTTP request
GET https://<your-host>/api/auth/local/me
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Authorization | string | Optional | Human credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed. |
X-Ryuki-Session-Id | string | Optional | Opaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request. |
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.
Error responses use the platform ApiError body (error, message, optional detail).
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
--header 'Authorization: Bearer <token>' \
'https://<your-host>/api/auth/local/me'
GET/api/auth/local/roles
request access
Auth local roles.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
request | An authenticated session or API bearer token is required. | The access class is enforced first; site and environment scopes narrow resources on scoped operations. |
HTTP request
GET https://<your-host>/api/auth/local/roles
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Authorization | string | Optional | Human credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed. |
X-Ryuki-Session-Id | string | Optional | Opaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request. |
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
200 response body
Structure: Value.
| Name | Type | Requirement | Description |
|---|---|---|---|
authenticationMode | string | Required | Value of authenticationMode returned in the response body. |
configuredForProduction | boolean | Required | Value of configuredForProduction returned in the response body. |
entraGroupsConfigured | boolean | Required | Value of entraGroupsConfigured returned in the response body. |
requiredProductionProvider | string | Required | Value of requiredProductionProvider returned in the response body. |
actions | array<JSON value> | Required | Value of actions returned in the response body. |
capabilityPolicy | string | Required | Value of capabilityPolicy returned in the response body. |
roles | JSON value | Required | Value of roles returned in the response body. |
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
--header 'Authorization: Bearer <token>' \
'https://<your-host>/api/auth/local/roles'
Schematic response body
Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.
Success status: 200
{
"authenticationMode": "<string>",
"configuredForProduction": false,
"entraGroupsConfigured": false,
"requiredProductionProvider": "<string>",
"actions": [],
"capabilityPolicy": "<string>",
"roles": null
}
POST/api/auth/login
public accessno bearer auth required
Auth login.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
POST https://<your-host>/api/auth/login
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.
Error responses use the platform ApiError body (error, message, optional detail).
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request POST \
'https://<your-host>/api/auth/login'
POST/api/auth/logout
public accessno bearer auth required
The Entra/mock logout path.
B4: takes ONLY the request headers (no Json(body)), so a client-supplied session_id can never terminate a victim's session. The caller's own id is resolved from their credential surface and only that session is deleted. Idempotent: an expired/missing session still returns 200.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
POST https://<your-host>/api/auth/logout
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
No successful response schema was extracted for this operation.
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request POST \
'https://<your-host>/api/auth/logout'
GET/api/auth/oidc/callback
public accessno bearer auth required
OIDC authorization-code callback handler.
Full flow (matches the spec):
- Gate on
oidc.enabled. - Gate on DB availability.
- If the IdP returned
?error=, redirect to/?auth_error=1. - Require
codeandstate. - Consume the state row (single-use, expiry-checked).
- Exchange the code for an id_token.
- Validate the id_token (sig + claims + nonce).
- Mint a session row.
- Set the session cookie and redirect to
/.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
GET https://<your-host>/api/auth/oidc/callback
Path parameters
This operation has no path parameters.
Query parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
code | string | Optional | Authorization code returned by the identity provider; required together
with state on the successful callback path. |
state | string | Optional | Single-use state returned by the identity provider; required together
with code on the successful callback path. |
error | string | Optional | Identity-provider error code. When present, the callback follows the sanitized error-redirect path instead of the code-exchange path. |
error_description | string | Optional | Optional provider error detail. It is accepted for protocol compatibility but is never forwarded to the browser. |
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Cookie | string | Optional | Required on the successful code + state callback path: the browser must return the HttpOnly __Host-oidc_login_csrf binding cookie set by login initiation. The provider-error redirect path does not require it. Explicit loopback HTTP uses the compatibility name oidc_login_csrf. |
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
302 | Found | No response body |
302 response headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Cache-Control | string | Required | The handler directly marks this response no-store, preventing persistence or idempotency replay of the returned value. |
Location | string | Required | Redirect target selected by the authentication flow. |
Set-Cookie | string | Optional | Authentication/session cookie emitted on the successful branch that establishes or clears browser state. |
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
--header 'Cookie: __Host-oidc_login_csrf=<browser-binding>' \
'https://<your-host>/api/auth/oidc/callback?code=<code>&state=<state>'
GET/api/auth/oidc/login
public accessno bearer auth required
Initiate oidc login.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
GET https://<your-host>/api/auth/oidc/login
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
302 | Found | No response body |
302 response headers
| Name | Type | Requirement | Description |
|---|---|---|---|
Location | string | Required | Redirect target selected by the authentication flow. |
Set-Cookie | string | Optional | Authentication/session cookie emitted on the successful branch that establishes or clears browser state. |
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
'https://<your-host>/api/auth/oidc/login'
GET/api/auth/roles
public accessno bearer auth required
Auth roles.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
GET https://<your-host>/api/auth/roles
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
'https://<your-host>/api/auth/roles'
GET/api/auth/session
public accessno bearer auth required
Auth session.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
GET https://<your-host>/api/auth/session
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
'https://<your-host>/api/auth/session'
GET/api/auth/status
public accessno bearer auth required
Auth status.
Permissions
| Access class | Credential | Scoping |
|---|---|---|
public | No user or agent bearer token is required. Operation-specific proof, when present, is documented below. | No authenticated-principal scope is applied to this operation. |
HTTP request
GET https://<your-host>/api/auth/status
Path parameters
This operation has no path parameters.
Query parameters
This operation has no query parameters.
Request headers
| Name | Type | Requirement | Description |
|---|---|---|---|
traceparent | string | Optional | Optional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation. |
Request body
This operation does not accept a request body.
Response
| Status | Description | Body |
|---|---|---|
200 | OK | Value |
200 response body
Structure: Value.
| Name | Type | Requirement | Description |
|---|---|---|---|
tenant_configured | JSON value | Required | Value of tenant_configured returned in the response body. |
client_configured | JSON value | Required | Value of client_configured returned in the response body. |
enabled | JSON value | Required | Value of enabled returned in the response body. |
instance | JSON value | Required | Value of instance returned in the response body. |
Errors
JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.
Examples
Request
curl --silent --show-error --globoff \
--request GET \
'https://<your-host>/api/auth/status'
Schematic response body
Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.
Success status: 200
{
"tenant_configured": null,
"client_configured": null,
"enabled": null,
"instance": null
}