List Oauth Providers
const url = 'https://example.com/settings/oauth-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/settings/oauth-providers/ \ --header 'Authorization: Bearer <token>'List all OAuth providers (admin only).
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”Successful Response
Response schema for OAuth/SAML provider.
Write-only credentials are never exposed:
client_secret_encrypted(OAuth client secret) — excluded.idp_certificate(SAML IdP signing cert, Fernet-encrypted at rest) — excluded.
The 3 non-secret SAML fields (idp_entity_id, idp_sso_url,
sp_entity_id) ARE exposed so the admin UI can display them.
Pitfall 11 interaction: those 3 fields are declared with deferred=True
on the OAuth ORM model so community DBs (which lack the columns) do not
crash on SELECT. Pydantic’s from_attributes=True would normally trigger
an implicit deferred load on attribute access, which fails under FastAPI’s
async context with MissingGreenlet. The model_validator(mode="before")
below reads the SAML fields directly from obj.__dict__ so unloaded
attributes default to None instead of triggering IO. SAML admin endpoints
that need the values must use undefer_group("saml") at query time.
object
Timestamp the provider was created.
Default role assigned to new users.
Label shown on the login page button.
Whether the provider button appears on the login page.
Unique provider identifier.
Provider type: ‘google’, ‘microsoft’, ‘oidc’, or ‘saml’.
Space-separated OAuth scopes.
URL-safe identifier used in the callback URL.
Timestamp the provider was last updated.
Example generated
[ { "authorize_url": "example", "client_id": "example", "created_at": "2026-04-15T12:00:00Z", "default_role": "example", "discovery_url": "example", "display_name": "example", "enabled": true, "group_claim": "example", "group_role_mapping": {}, "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "idp_entity_id": "example", "idp_sso_url": "example", "provider_type": "example", "scopes": "example", "slug": "example", "sp_entity_id": "example", "token_url": "example", "updated_at": "2026-04-15T12:00:00Z", "userinfo_url": "example" }]Bad request — invalid query parameters or payload
Unauthorized — missing or invalid credentials
Forbidden — caller lacks access to this resource
Not found
Validation error
Too many requests — retry after the advertised interval
Headers
Section titled “Headers ”Seconds until the request may be retried
Internal server error
Service unavailable — the database could not serve the request