Security settings API
6 endpoints, generated from packages/core/openapi/v1.snapshot.json (OpenAPI 3.1.0, contract version 1.0). Conventions for lists, errors, money and authentication are on the API conventions page.
POST/api/v1/security/providers
Add a single sign-on provider
Fetches and checks the discovery document before saving. Secrets are encrypted at rest and never returned.
Request body
application/json, object, required
kindenumrequiredone of "google", "entra", "singpass", "oidc"
displayNamestringmin length 1 · max length 60
clientIdstringmin length 1 · max length 500
clientSecretstringmin length 1 · max length 2000
issuerstring (uri)max length 500
tenantIdstringmax length 100
allowedDomainsarray of stringenvironmentenumone of "staging", "production"
privateJwksobjectkeysarray of objectrequiredktystringrequired
jitEnabledbooleanenabledboolean
Responses
201 Success. object
idstring (uuid)requiredkindenumrequiredone of "google", "entra", "singpass", "oidc"
displayNamestringrequiredissuerstringrequiredclientIdstringrequiredclientSecretSetbooleanrequiredprivateKeysSetbooleanrequiredtenantIdstring | nullrequiredallowedDomainsarray of stringrequiredenvironmentenum or nullrequiredone of "staging", "production"
jitEnabledbooleanrequiredenabledbooleanrequiredconfiguredbooleanrequiredlastTestOkAtstring (date-time) or nullrequiredcallbackUrlstringrequiredjwksUrlstring | nullrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required,reauth_required - 409
conflict
GET/api/v1/security/providers/{id}
Get a single sign-on provider (secrets are never returned)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Responses
200 Success. object
idstring (uuid)requiredkindenumrequiredone of "google", "entra", "singpass", "oidc"
displayNamestringrequiredissuerstringrequiredclientIdstringrequiredclientSecretSetbooleanrequiredprivateKeysSetbooleanrequiredtenantIdstring | nullrequiredallowedDomainsarray of stringrequiredenvironmentenum or nullrequiredone of "staging", "production"
jitEnabledbooleanrequiredenabledbooleanrequiredconfiguredbooleanrequiredlastTestOkAtstring (date-time) or nullrequiredcallbackUrlstringrequiredjwksUrlstring | nullrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required - 404
not_found
PATCH/api/v1/security/providers/{id}
Change a single sign-on provider
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Request body
application/json, object, required
displayNamestringmin length 1 · max length 60
clientIdstringmin length 1 · max length 500
clientSecretstringmin length 1 · max length 2000
issuerstring (uri)max length 500
tenantIdstringmax length 100
allowedDomainsarray of stringenvironmentenumone of "staging", "production"
privateJwksobjectkeysarray of objectrequiredktystringrequired
jitEnabledbooleanenabledboolean
Responses
200 Success. object
idstring (uuid)requiredkindenumrequiredone of "google", "entra", "singpass", "oidc"
displayNamestringrequiredissuerstringrequiredclientIdstringrequiredclientSecretSetbooleanrequiredprivateKeysSetbooleanrequiredtenantIdstring | nullrequiredallowedDomainsarray of stringrequiredenvironmentenum or nullrequiredone of "staging", "production"
jitEnabledbooleanrequiredenabledbooleanrequiredconfiguredbooleanrequiredlastTestOkAtstring (date-time) or nullrequiredcallbackUrlstringrequiredjwksUrlstring | nullrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required,reauth_required - 404
not_found - 409
conflict
DELETE/api/v1/security/providers/{id}
Remove a single sign-on provider
Linked identities are removed with it.
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required,reauth_required - 404
not_found - 409
conflict
GET/api/v1/security/settings
Sign-in methods, MFA policy and session timeouts
Responses
200 Success. object
passwordEnabledbooleanrequiredmfaRequiredRolesarray of enumrequiredidleTimeoutMinintegerrequiredmin -9007199254740991
absoluteTimeoutHintegerrequiredmin -9007199254740991
deviceIdleDaysintegerrequiredmin -9007199254740991
insecureTransportbooleanrequiredemailConfiguredbooleanrequireddemoModebooleanrequiredprovidersarray of objectrequiredidstring (uuid)requiredkindenumrequiredone of "google", "entra", "singpass", "oidc"
displayNamestringrequiredissuerstringrequiredclientIdstringrequiredclientSecretSetbooleanrequiredprivateKeysSetbooleanrequiredtenantIdstring | nullrequiredallowedDomainsarray of stringrequiredenvironmentenum or nullrequiredone of "staging", "production"
jitEnabledbooleanrequiredenabledbooleanrequiredconfiguredbooleanrequiredlastTestOkAtstring (date-time) or nullrequiredcallbackUrlstringrequiredjwksUrlstring | nullrequired
- 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
PATCH/api/v1/security/settings
Change security settings
Password sign-in can be turned off only once an SSO method is enabled and has passed a test sign-in. Owners keep break-glass password sign-in.
Request body
application/json, object, required
passwordEnabledbooleanmfaRequiredRolesarray of enumidleTimeoutMinintegermin 15 · max 240
absoluteTimeoutHintegermin 1 · max 24
deviceIdleDaysintegermin 1 · max 90
Responses
200 Success. object
passwordEnabledbooleanrequiredmfaRequiredRolesarray of enumrequiredidleTimeoutMinintegerrequiredmin -9007199254740991
absoluteTimeoutHintegerrequiredmin -9007199254740991
deviceIdleDaysintegerrequiredmin -9007199254740991
insecureTransportbooleanrequiredemailConfiguredbooleanrequireddemoModebooleanrequiredprovidersarray of objectrequiredidstring (uuid)requiredkindenumrequiredone of "google", "entra", "singpass", "oidc"
displayNamestringrequiredissuerstringrequiredclientIdstringrequiredclientSecretSetbooleanrequiredprivateKeysSetbooleanrequiredtenantIdstring | nullrequiredallowedDomainsarray of stringrequiredenvironmentenum or nullrequiredone of "staging", "production"
jitEnabledbooleanrequiredenabledbooleanrequiredconfiguredbooleanrequiredlastTestOkAtstring (date-time) or nullrequiredcallbackUrlstringrequiredjwksUrlstring | nullrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required,reauth_required - 409
conflict