Create an SSO or directory identity connection for the organization.
Path parameters
Request body
Email domains eligible for JIT auto-provisioning. Empty = no JIT.
OAuth client id registered with the IdP. Required for oidc.
OAuth client secret. Sealed at rest with the org DEK; never returned. Required for oidc.
Optional catch-all role for JIT members whose group claim matched no mapping. When omitted, such members are added with no role (a bare member, pending an admin grant) rather than an implicit default. Accepts a number or a stringified id (2227 or "2227").
Human-readable label for the login button / admin UI.
Whether the connection is active. Defaults to true.
Claim carrying group membership. Defaults to groups.
IdP issuer / discovery base; /.well-known/openid-configuration is fetched from here. Required for oidc; ignored for directory.
Which provider implementation drives a connection's login flow. Mirrors the kind CHECK in db/init.sql; widened additively as kinds ship (oidc first, saml later).
Stable, URL-safe handle used in the login URL (/auth/sso/{provider_key}) and the signed OAuth state. Lowercase letters/digits/hyphens; must not collide with the built-in social providers. Globally unique.
Space-separated scopes. Defaults to openid email profile.
Example request
{
"issuer": "https://acme.okta.com",
"provider_key": "acme"
}Response
Connection created
OIDC client id. null for non-OIDC kinds.
Whether a client secret is configured. The secret itself is never returned.
Catch-all role granted to JIT members with no matching group mapping. null = no catch-all role.
Read-only here: SSO enforcement isn't configurable via the API yet.
OIDC issuer. null for non-OIDC kinds (e.g. SAML), whose connection details live in kind-specific fields added when those kinds ship.