Ana içeriğe geç

List OIDC Providers

Endpoint

GET /apiops/projects/{projectName}/oidc-providers/

Authentication

Requires a Personal API Access Token.

Authorization: Bearer YOUR_TOKEN

Request

Headers

HeaderValueRequired
AuthorizationBearer {token}Yes

Path Parameters

ParameterTypeRequiredDescription
projectNamestringYesProject name

Query Parameters

None.

Response

Success Response (200 OK)

The response body is a raw JSON array (not wrapped in a status/resultList envelope).

[
{
"name": "keycloak-main",
"description": "Primary Keycloak realm for customer-facing APIs",
"vendorType": "KEYCLOAK",
"issuerUrl": "https://keycloak.example.com/realms/acme",
"discoveryUrl": null,
"autoDiscover": true,
"tokenEndpoint": "https://keycloak.example.com/realms/acme/protocol/openid-connect/token",
"introspectionEndpoint": "https://keycloak.example.com/realms/acme/protocol/openid-connect/token/introspect",
"userInfoEndpoint": "https://keycloak.example.com/realms/acme/protocol/openid-connect/userinfo",
"jwksEndpoint": "https://keycloak.example.com/realms/acme/protocol/openid-connect/certs",
"endSessionEndpoint": "https://keycloak.example.com/realms/acme/protocol/openid-connect/logout",
"clientId": "apinizer-gateway",
"clientSecretSet": true,
"clientAuthMethod": "CLIENT_SECRET_BASIC",
"validationMode": "OFFLINE",
"jwksSourceMode": "DISCOVERY",
"staticJwksJson": null,
"certificateName": null,
"jwksCacheTimeoutSeconds": 3600,
"allowedSignatureAlgorithms": ["RS256", "RS384", "RS512", "ES256"],
"validateIssuer": true,
"expectedIssuer": null,
"validateAudience": true,
"expectedAudience": [],
"maxClockSkewSeconds": 30,
"connectionTimeoutSeconds": 10,
"readTimeoutSeconds": 10,
"usernameClaimPath": "preferred_username",
"emailClaimPath": "email",
"fullNameClaimPath": "name",
"rolesClaimPath": null,
"groupsClaimPath": null,
"requireMatchingCredential": true,
"roleSource": "SYNCED_CREDENTIAL",
"syncEnabled": true,
"realm": "acme",
"adminBaseUrl": "https://keycloak.example.com",
"syncPageSize": 250,
"groupSyncEnabled": true,
"roleSyncSource": "REALM_ROLES",
"syncClientId": "apinizer-sync"
}
]

OIDC Provider Object

FieldTypeDescription
namestringProvider name (unique within the project)
descriptionstringDescription
vendorTypestringGENERIC or KEYCLOAK
issuerUrlstringOIDC issuer (iss) URL
discoveryUrlstring|nullOverrides the default {issuerUrl}/.well-known/openid-configuration address
autoDiscoverbooleanWhether endpoints are kept in sync with the discovery document
tokenEndpointstring|nullToken endpoint URL
introspectionEndpointstring|nullIntrospection endpoint URL (RFC 7662)
userInfoEndpointstring|nullUserInfo endpoint URL
jwksEndpointstring|nullJWKS endpoint URL
endSessionEndpointstring|nullLogout/end-session endpoint URL
clientIdstringOAuth/OIDC client identifier
clientSecretSetbooleantrue if a client secret is currently configured. The secret itself is never returned.
clientAuthMethodstringCLIENT_SECRET_BASIC, CLIENT_SECRET_POST, or PRIVATE_KEY_JWT
validationModestringOFFLINE, ONLINE, or HYBRID
jwksSourceModestringDISCOVERY or STATIC
staticJwksJsonstring|nullPasted JWKS document, when jwksSourceMode=STATIC
certificateNamestring|nullName of a Certificate used for signature verification, when jwksSourceMode=STATIC
jwksCacheTimeoutSecondsintegerJWKS cache TTL, in seconds
allowedSignatureAlgorithmsarray[string]Accepted JWT signature algorithms
validateIssuerbooleanWhether the iss claim is validated
expectedIssuerstring|nullExpected issuer; falls back to issuerUrl when empty
validateAudiencebooleanWhether the aud claim is validated
expectedAudiencearray[string]Expected audience values; falls back to [clientId] when empty
maxClockSkewSecondsintegerClock skew tolerance, in seconds
connectionTimeoutSecondsintegerConnect timeout, in seconds
readTimeoutSecondsintegerRead timeout, in seconds
usernameClaimPathstringClaim resolved as the username. Default: preferred_username
emailClaimPathstringClaim resolved as the email. Default: email
fullNameClaimPathstringClaim resolved as the full name. Default: name
rolesClaimPathstring|nullClaim resolved as roles, when roleSource reads from the token
groupsClaimPathstring|nullClaim resolved as group memberships, when roleSource reads from the token
requireMatchingCredentialbooleanWhen true, a validated token without a matching Credential is rejected
roleSourcestringTOKEN_CLAIM, SYNCED_CREDENTIAL, or BOTH
syncEnabledbooleanWhether Keycloak identity synchronization is enabled
realmstring|nullKeycloak realm (Keycloak vendor only)
adminBaseUrlstring|nullKeycloak Admin REST API base URL (Keycloak vendor only)
syncPageSizeintegerPage size used when paging Keycloak's user list. Default: 250
groupSyncEnabledbooleanWhether the Keycloak group tree is synchronized
roleSyncSourcestringREALM_ROLES, CLIENT_ROLES, or GROUPS
syncClientIdstring|nullKeycloak service-account client used for Admin API calls

Notes

  • clientSecret and staticJwksJson content are handled write-only for secrets — clientSecret is never present in the response body; only clientSecretSet indicates its presence.
  • identitySyncProfile (cron schedule, deactivation mode, last-run counters) is not yet surfaced on this endpoint. See Credential Sync for that data in the Manager UI.
  • An empty array ([]) is returned when the project has no OIDC providers.

Error Response (400 Bad Request)

{
"type": "https://apinizer.com/problem-with-message",
"title": "Bad Request",
"status": 400,
"detail": "Project (MyProject) is not found!",
"path": "/apiops/projects/MyProject/oidc-providers/",
"message": "error.http.400"
}

cURL Example

curl -X GET \
"https://demo.apinizer.com/apiops/projects/MyProject/oidc-providers/" \
-H "Authorization: Bearer YOUR_TOKEN"

Permissions

  • User must have IDENTITY + VIEW permission in the project.