Skip to content
Docs
Providers

List providers

List providers

zones.providers.list(strzone_id, ProviderListParams**kwargs) -> ProviderListResponse
GET/zones/{zoneId}/providers

Returns a list of providers in the specified zone. Pass filter[id] (repeatable, max 100) to restrict results to a known set of provider IDs; unknown or malformed IDs are silently omitted.

ParametersExpand Collapse
zone_id: str
after: Optional[str]

Cursor for forward pagination

minLength1
maxLength255
before: Optional[str]

Cursor for backward pagination

minLength1
maxLength255
cursor: Optional[str]
expand: Optional[Union[Literal["total_count"], List[Literal["total_count"]]]]
Accepts one of the following:
Literal["total_count"]
List[Literal["total_count"]]
filter_id: Optional[Union[str, SequenceNotStr[str]]]

Restrict results to providers with this ID. Repeatable, max 100.

Accepts one of the following:
str

Restrict results to providers with this ID. Repeatable, max 100.

SequenceNotStr[str]
identifier: Optional[str]
limit: Optional[int]

Maximum number of items to return

minimum1
maximum100
slug: Optional[str]
type: Optional[Literal["external", "keycard-vault", "keycard-sts"]]
Accepts one of the following:
"external"
"keycard-vault"
"keycard-sts"
ReturnsExpand Collapse
class ProviderListResponse:
items: List[Provider]
id: str

Unique identifier of the provider

created_at: datetime

Entity creation timestamp

formatdate-time
identifier: str

User specified identifier, unique within the zone

minLength1
maxLength2048
name: str

Human-readable name

minLength1
maxLength255
organization_id: str

Organization that owns this provider

owner_type: Literal["platform", "customer"]

Who owns this provider. Platform-owned providers cannot be modified via API.

Accepts one of the following:
"platform"
"customer"
slug: str

URL-safe identifier, unique within the zone

minLength1
maxLength63
updated_at: datetime

Entity update timestamp

formatdate-time
zone_id: str

Zone this provider belongs to

client_id: Optional[str]

OAuth 2.0 client identifier

client_secret_set: Optional[bool]

Indicates whether a client secret is configured

description: Optional[str]

Human-readable description

maxLength2048
metadata: Optional[Metadata]

Provider metadata

icon_url: Optional[str]

Icon URL

formaturi
maxLength2048
protocols: Optional[Protocols]

Protocol-specific configuration

oauth2: Optional[ProtocolsOauth2]

OAuth 2.0 protocol configuration

issuer: str

OIDC issuer URL used for discovery and token validation.

formaturi
authorization_endpoint: Optional[str]
formaturi
authorization_parameters: Optional[Dict[str, str]]

Custom query parameters appended to authorization redirect URLs. Use for non-standard providers (e.g. Google prompt=consent, access_type=offline).

authorization_resource_enabled: Optional[bool]

Whether to include the resource parameter in authorization requests.

authorization_resource_parameter: Optional[str]

The resource parameter value to include in authorization requests. Defaults to "resource" when authorization_resource_enabled is true.

code_challenge_methods_supported: Optional[List[str]]
jwks_uri: Optional[str]
formaturi
registration_endpoint: Optional[str]
formaturi
scope_parameter: Optional[str]

The query parameter name for scopes in authorization requests. Defaults to "scope". Slack v2 uses "user_scope".

scope_separator: Optional[str]

The separator character for scope values. Defaults to " " (space). Slack v2 uses ",".

scopes_supported: Optional[List[str]]
token_endpoint: Optional[str]
formaturi
token_response_access_token_pointer: Optional[str]

Dot-separated path to the access token in the token response body. Defaults to "access_token". Slack v2 uses "authed_user.access_token".

openid: Optional[ProtocolsOpenid]

OpenID Connect protocol configuration

external_id_claim: Optional[str]

Name of the OIDC claim carrying the stable external id used to correlate logins with externally provisioned (SCIM) users. Defaults to "sub". Set to "oid" for Entra, whose pairwise "sub" differs from the SCIM externalId.

scopes: Optional[List[str]]

Additional OIDC scopes to request from this provider during authentication (e.g. "groups"). Merged with the default scopes (openid, profile, email).

single_logout_enabled: Optional[bool]

When true, logging out of the zone propagates the logout to this provider's end_session_endpoint (RP-initiated logout). Defaults to false.

user_identifier_claim: Optional[str]

Name of a top-level string claim in this provider's ID Token to use as the user identifier on user creation. When not set, the user's Keycard ID is used.

userinfo_endpoint: Optional[str]
formaturi
type: Optional[Literal["external", "keycard-vault", "keycard-sts"]]
Accepts one of the following:
"external"
"keycard-vault"
"keycard-sts"

Pagination information

has_next_page: bool

Whether there are more items after the current page

has_previous_page: bool

Whether there are items before the current page

end_cursor: Optional[str]

Cursor pointing to the last item in the current page

start_cursor: Optional[str]

Cursor pointing to the first item in the current page

List providers

import os
from keycardai_api import KeycardAPI

client = KeycardAPI(
    api_key=os.environ.get("KEYCARD_API_API_KEY"),  # This is the default and can be omitted
)
providers = client.zones.providers.list(
    zone_id="zoneId",
)
print(providers.items)
{
  "items": [
    {
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "identifier": "x",
      "name": "x",
      "organization_id": "organization_id",
      "owner_type": "platform",
      "slug": "slug",
      "updated_at": "2019-12-27T18:11:19.117Z",
      "zone_id": "zone_id",
      "client_id": "client_id",
      "client_secret_set": true,
      "description": "description",
      "metadata": {
        "icon_url": "https://example.com"
      },
      "protocols": {
        "oauth2": {
          "issuer": "https://example.com",
          "authorization_endpoint": "https://example.com",
          "authorization_parameters": {
            "foo": "string"
          },
          "authorization_resource_enabled": true,
          "authorization_resource_parameter": "authorization_resource_parameter",
          "code_challenge_methods_supported": [
            "string"
          ],
          "jwks_uri": "https://example.com",
          "registration_endpoint": "https://example.com",
          "scope_parameter": "scope_parameter",
          "scope_separator": "scope_separator",
          "scopes_supported": [
            "string"
          ],
          "token_endpoint": "https://example.com",
          "token_response_access_token_pointer": "token_response_access_token_pointer"
        },
        "openid": {
          "external_id_claim": "external_id_claim",
          "scopes": [
            "string"
          ],
          "single_logout_enabled": true,
          "user_identifier_claim": "user_identifier_claim",
          "userinfo_endpoint": "https://example.com"
        }
      },
      "type": "external"
    }
  ],
  "page_info": {
    "has_next_page": true,
    "has_previous_page": true,
    "end_cursor": "end_cursor",
    "start_cursor": "start_cursor"
  },
  "pagination": {
    "after_cursor": "x",
    "before_cursor": "x",
    "total_count": 0
  }
}
Returns Examples
{
  "items": [
    {
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "identifier": "x",
      "name": "x",
      "organization_id": "organization_id",
      "owner_type": "platform",
      "slug": "slug",
      "updated_at": "2019-12-27T18:11:19.117Z",
      "zone_id": "zone_id",
      "client_id": "client_id",
      "client_secret_set": true,
      "description": "description",
      "metadata": {
        "icon_url": "https://example.com"
      },
      "protocols": {
        "oauth2": {
          "issuer": "https://example.com",
          "authorization_endpoint": "https://example.com",
          "authorization_parameters": {
            "foo": "string"
          },
          "authorization_resource_enabled": true,
          "authorization_resource_parameter": "authorization_resource_parameter",
          "code_challenge_methods_supported": [
            "string"
          ],
          "jwks_uri": "https://example.com",
          "registration_endpoint": "https://example.com",
          "scope_parameter": "scope_parameter",
          "scope_separator": "scope_separator",
          "scopes_supported": [
            "string"
          ],
          "token_endpoint": "https://example.com",
          "token_response_access_token_pointer": "token_response_access_token_pointer"
        },
        "openid": {
          "external_id_claim": "external_id_claim",
          "scopes": [
            "string"
          ],
          "single_logout_enabled": true,
          "user_identifier_claim": "user_identifier_claim",
          "userinfo_endpoint": "https://example.com"
        }
      },
      "type": "external"
    }
  ],
  "page_info": {
    "has_next_page": true,
    "has_previous_page": true,
    "end_cursor": "end_cursor",
    "start_cursor": "start_cursor"
  },
  "pagination": {
    "after_cursor": "x",
    "before_cursor": "x",
    "total_count": 0
  }
}