List identity providers configured for the tenant
const url = 'https://example.com/v1/auth/providers';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/v1/auth/providers \ --header 'Authorization: Bearer <token>'Returns the tenant’s identity providers (OIDC, SAML), each with signIn when the deployment sets it. Secrets appear only as REFERENCES (clientSecretRef, spSigningKeyRef…); a plaintext secret is never on the wire.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Page of provider configs.
object
An OpenID Connect identity provider people sign in with. The endpoints come from the issuer’s discovery document when absent, and are returned once the deployment has them.
object
The name a sign-in page shows (“Sign in with …”). Default: providerId.
The email domains whose people sign in with this provider (lowercase, e.g. acme.com): how an email-first sign-in page finds it.
Who may sign in the first time: invite (default) only people a tenant admin added; domain also anyone from one of domains, once the deployment has verified them.
object
Opaque reference resolved server-side. Never a plaintext secret.
Default openid email profile.
Per-provider claim mapping. All fields optional; closer to OIDC defaults (sub/email/name) → fewer overrides needed.
object
Claim path + optional delimiter for extracting Kindgi OAuth scopes from provider claims. When absent, scopes come from the token response scope field instead.
object
A SAML 2.0 identity provider people sign in with: its metadata XML, or its entity ID, single sign-on URL and signing certificates. Keys are given as references, never as keys.
object
The name a sign-in page shows (“Sign in with …”). Default: providerId.
The email domains whose people sign in with this provider (lowercase, e.g. acme.com): how an email-first sign-in page finds it.
Who may sign in the first time: invite (default) only people a tenant admin added; domain also anyone from one of domains, once the deployment has verified them.
object
The IdP’s single sign-on URL (HTTP-Redirect binding).
The IdP’s signing certificates (PEM); several during a rollover.
Opaque reference to the service provider’s signing key, for IdPs that require signed AuthnRequests. Never a plaintext key.
Opaque reference to the key that decrypts encrypted assertions. Never a plaintext key.
Require signed assertions. Default true.
Assertion attribute names. Defaults: userId = the NameID, email = email.
object
Always false: the list comes whole. Absent from older servers.
Who may add, change and remove the providers here: tenant, its admins; operator, only the deployment’s own token, because the operator manages sign-in (KINDGI_AUTH_TENANT_PROVIDERS=off). The providers there sign people in either way. Absent from older servers: read it as tenant.
Example
{ "data": [ { "join": "invite", "kind": "oidc" } ], "changes": "tenant"}Missing / malformed / expired / revoked bearer token.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}See also
POST /v1/auth/providers: Register an identity provider (OIDC or SAML)GET /v1/auth/providers/{providerId}: Get one identity providerPATCH /v1/auth/providers/{providerId}: Change an identity provider, keeping its sign-in URLsGET /v1/auth/providers/{providerId}/sign-in: What to give the identity provider, before or after registering- Every error code