Deutsche Telekom Clients API

The Clients API from Deutsche Telekom — 24 operation(s) for clients.

Operations 32

GET /{realm}/clients Get clients belonging to the realm Returns a list of clients belonging to the realm
POST /{realm}/clients Create a new client Client’s client_id must be unique!
GET /{realm}/clients/{id} Get representation of the client
PUT /{realm}/clients/{id} Update the client
DELETE /{realm}/clients/{id} Delete the client
GET /{realm}/clients/{id}/client-secret Get the client secret
POST /{realm}/clients/{id}/client-secret Generate a new secret for the client
GET /{realm}/clients/{id}/client-secret/rotated Get the rotated client secret
DELETE /{realm}/clients/{id}/client-secret/rotated Invalidate the rotated secret for the client
GET /{realm}/clients/{id}/default-client-scopes Get default client scopes.
PUT /{realm}/clients/{id}/default-client-scopes/{clientScopeId}
DELETE /{realm}/clients/{id}/default-client-scopes/{clientScopeId}
GET /{realm}/clients/{id}/evaluate-scopes/generate-example-access-token Create JSON with payload of example access token
GET /{realm}/clients/{id}/evaluate-scopes/protocol-mappers Return list of all protocol mappers, which will be used when generating tokens issued for particular client.
GET /{realm}/clients/{id}/evaluate-scopes/scope-mappings/{roleContainerId}/granted Get effective scope mapping of all roles of particular role container, which this client is defacto allowed to have in the accessToken issued for him.
GET /{realm}/clients/{id}/evaluate-scopes/scope-mappings/{roleContainerId}/not-granted Get roles, which this client doesn’t have scope for and can’t have them in the accessToken issued for him.
GET /{realm}/clients/{id}/installation/providers/{providerId}
GET /{realm}/clients/{id}/management/permissions Return object stating whether client Authorization permissions have been initialized or not and a reference
PUT /{realm}/clients/{id}/management/permissions Return object stating whether client Authorization permissions have been initialized or not and a reference
POST /{realm}/clients/{id}/nodes Register a cluster node with the client Manually register cluster node to this client - usually it’s not needed to call this directly as adapter should handle by sending registrati
DELETE /{realm}/clients/{id}/nodes/{node} Unregister a cluster node from the client
GET /{realm}/clients/{id}/offline-session-count Get application offline session count Returns a number of offline user sessions associated with this client { "count": number }
GET /{realm}/clients/{id}/offline-sessions Get offline sessions for client Returns a list of offline user sessions associated with this client
GET /{realm}/clients/{id}/optional-client-scopes Get optional client scopes.
PUT /{realm}/clients/{id}/optional-client-scopes/{clientScopeId}
DELETE /{realm}/clients/{id}/optional-client-scopes/{clientScopeId}
POST /{realm}/clients/{id}/push-revocation Push the client’s revocation policy to its admin URL If the client has an admin URL, push revocation policy to it.
POST /{realm}/clients/{id}/registration-access-token Generate a new registration access token for the client
GET /{realm}/clients/{id}/service-account-user Get a user dedicated to the service account
GET /{realm}/clients/{id}/session-count Get application session count Returns a number of user sessions associated with this client { "count": number }
GET /{realm}/clients/{id}/test-nodes-available Test if registered cluster nodes are available Tests availability by sending 'ping' request to all cluster nodes.
GET /{realm}/clients/{id}/user-sessions Get user sessions for client Returns a list of user sessions associated with this client

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/deutsche-telekom-clients-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

deutsche-telekom-clients-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Keycloak Admin REST Clients API
  description: This is a REST API reference for the Keycloak Admin
  version: '1'
security:
- access_token: []
tags:
- name: Clients
paths:
  /{realm}/clients:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get clients belonging to the realm   Returns a list of clients belonging to the realm
      parameters:
      - in: query
        name: clientId
        description: filter by clientId
        schema:
          type: string
        style: form
      - in: query
        name: first
        description: the first result
        schema:
          type: integer
          format: int32
        style: form
      - in: query
        name: max
        description: the max results to return
        schema:
          type: integer
          format: int32
        style: form
      - in: query
        name: search
        description: whether this is a search query or a getClientById query
        schema:
          type: boolean
        style: form
      - in: query
        name: viewableOnly
        description: filter clients that cannot be viewed in full by admin
        schema:
          type: boolean
        style: form
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientRepresentation'
    post:
      tags:
      - Clients
      summary: Create a new client   Client’s client_id must be unique!
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientRepresentation'
        required: true
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get representation of the client
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientRepresentation'
    put:
      tags:
      - Clients
      summary: Update the client
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientRepresentation'
        required: true
      responses:
        2XX:
          description: success
    delete:
      tags:
      - Clients
      summary: Delete the client
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}/client-secret:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get the client secret
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialRepresentation'
    post:
      tags:
      - Clients
      summary: Generate a new secret for the client
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialRepresentation'
  /{realm}/clients/{id}/client-secret/rotated:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get the rotated client secret
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialRepresentation'
    delete:
      tags:
      - Clients
      summary: Invalidate the rotated secret for the client
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}/default-client-scopes:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get default client scopes.
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientScopeRepresentation'
  /{realm}/clients/{id}/default-client-scopes/{clientScopeId}:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: clientScopeId
      required: true
      schema:
        type: string
      style: simple
    put:
      tags:
      - Clients
      responses:
        2XX:
          description: success
    delete:
      tags:
      - Clients
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}/evaluate-scopes/generate-example-access-token:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Create JSON with payload of example access token
      parameters:
      - in: query
        name: scope
        schema:
          type: string
        style: form
      - in: query
        name: userId
        schema:
          type: string
        style: form
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
  /{realm}/clients/{id}/evaluate-scopes/protocol-mappers:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Return list of all protocol mappers, which will be used when generating tokens issued for particular client.
      parameters:
      - in: query
        name: scope
        schema:
          type: string
        style: form
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientScopeEvaluateResource-ProtocolMapperEvaluationRepresentation'
  /{realm}/clients/{id}/evaluate-scopes/scope-mappings/{roleContainerId}/granted:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: roleContainerId
      description: either realm name OR client UUID
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get effective scope mapping of all roles of particular role container, which this client is defacto allowed to have in the accessToken issued for him.
      parameters:
      - in: query
        name: scope
        schema:
          type: string
        style: form
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RoleRepresentation'
  /{realm}/clients/{id}/evaluate-scopes/scope-mappings/{roleContainerId}/not-granted:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: roleContainerId
      description: either realm name OR client UUID
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get roles, which this client doesn’t have scope for and can’t have them in the accessToken issued for him.
      parameters:
      - in: query
        name: scope
        schema:
          type: string
        style: form
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RoleRepresentation'
  /{realm}/clients/{id}/installation/providers/{providerId}:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: providerId
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}/management/permissions:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Return object stating whether client Authorization permissions have been initialized or not and a reference
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagementPermissionReference'
    put:
      tags:
      - Clients
      summary: Return object stating whether client Authorization permissions have been initialized or not and a reference
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManagementPermissionReference'
        required: true
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagementPermissionReference'
  /{realm}/clients/{id}/nodes:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    post:
      tags:
      - Clients
      summary: Register a cluster node with the client   Manually register cluster node to this client - usually it’s not needed to call this directly as adapter should handle  by sending registration request to Keycloak
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
        required: true
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}/nodes/{node}:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: node
      required: true
      schema:
        type: string
      style: simple
    delete:
      tags:
      - Clients
      summary: Unregister a cluster node from the client
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}/offline-session-count:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: 'Get application offline session count   Returns a number of offline user sessions associated with this client   {      "count": number  }'
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
  /{realm}/clients/{id}/offline-sessions:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get offline sessions for client   Returns a list of offline user sessions associated with this client
      parameters:
      - in: query
        name: first
        description: Paging offset
        schema:
          type: integer
          format: int32
        style: form
      - in: query
        name: max
        description: Maximum results size (defaults to 100)
        schema:
          type: integer
          format: int32
        style: form
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserSessionRepresentation'
  /{realm}/clients/{id}/optional-client-scopes:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get optional client scopes.
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientScopeRepresentation'
  /{realm}/clients/{id}/optional-client-scopes/{clientScopeId}:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: clientScopeId
      required: true
      schema:
        type: string
      style: simple
    put:
      tags:
      - Clients
      responses:
        2XX:
          description: success
    delete:
      tags:
      - Clients
      responses:
        2XX:
          description: success
  /{realm}/clients/{id}/push-revocation:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    post:
      tags:
      - Clients
      summary: Push the client’s revocation policy to its admin URL   If the client has an admin URL, push revocation policy to it.
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlobalRequestResult'
  /{realm}/clients/{id}/registration-access-token:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    post:
      tags:
      - Clients
      summary: Generate a new registration access token for the client
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientRepresentation'
  /{realm}/clients/{id}/service-account-user:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get a user dedicated to the service account
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserRepresentation'
  /{realm}/clients/{id}/session-count:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: 'Get application session count   Returns a number of user sessions associated with this client   {      "count": number  }'
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
  /{realm}/clients/{id}/test-nodes-available:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Test if registered cluster nodes are available   Tests availability by sending 'ping' request to all cluster nodes.
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlobalRequestResult'
  /{realm}/clients/{id}/user-sessions:
    parameters:
    - in: path
      name: realm
      description: realm name (not id!)
      required: true
      schema:
        type: string
      style: simple
    - in: path
      name: id
      description: id of client (not client-id)
      required: true
      schema:
        type: string
      style: simple
    get:
      tags:
      - Clients
      summary: Get user sessions for client   Returns a list of user sessions associated with this client
      parameters:
      - in: query
        name: first
        description: Paging offset
        schema:
          type: integer
          format: int32
        style: form
      - in: query
        name: max
        description: Maximum results size (defaults to 100)
        schema:
          type: integer
          format: int32
        style: form
      responses:
        2XX:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserSessionRepresentation'
components:
  schemas:
    AccessToken-Access:
      type: object
      properties:
        roles:
          type: array
          items:
            type: string
        verify_caller:
          type: boolean
    ClientScopeRepresentation:
      type: object
      properties:
        attributes:
          type: object
          additionalProperties: true
        description:
          type: string
        id:
          type: string
        name:
          type: string
        protocol:
          type: string
        protocolMappers:
          type: array
          items:
            $ref: '#/components/schemas/ProtocolMapperRepresentation'
    AddressClaimSet:
      type: object
      properties:
        country:
          type: string
        formatted:
          type: string
        locality:
          type: string
        postal_code:
          type: string
        region:
          type: string
        street_address:
          type: string
    CredentialRepresentation:
      type: object
      properties:
        createdDate:
          type: integer
          format: int64
        credentialData:
          type: string
        id:
          type: string
        priority:
          type: integer
          format: int32
        secretData:
          type: string
        temporary:
          type: boolean
        type:
          type: string
        userLabel:
          type: string
        value:
          type: string
    ManagementPermissionReference:
      type: object
      properties:
        enabled:
          type: boolean
        resource:
          type: string
        scopePermissions:
          type: object
          additionalProperties: true
    Permission:
      type: object
      properties:
        claims:
          type: object
          additionalProperties: true
        rsid:
          type: string
        rsname:
          type: string
        scopes:
          type: array
          items:
            type: string
    ClientRepresentation:
      type: object
      properties:
        access:
          type: object
          additionalProperties: true
        adminUrl:
          type: string
        alwaysDisplayInConsole:
          type: boolean
        attributes:
          type: object
          additionalProperties: true
        authenticationFlowBindingOverrides:
          type: object
          additionalProperties: true
        authorizationServicesEnabled:
          type: boolean
        authorizationSettings:
          $ref: '#/components/schemas/ResourceServerRepresentation'
        baseUrl:
          type: string
        bearerOnly:
          type: boolean
        clientAuthenticatorType:
          type: string
        clientId:
          type: string
        consentRequired:
          type: boolean
        defaultClientScopes:
          type: array
          items:
            type: string
        defaultRoles:
          type: array
          items:
            type: string
        description:
          type: string
        directAccessGrantsEnabled:
          type: boolean
        enabled:
          type: boolean
        frontchannelLogout:
          type: boolean
        fullScopeAllowed:
          type: boolean
        id:
          type: string
        implicitFlowEnabled:
          type: boolean
        name:
          type: string
        nodeReRegistrationTimeout:
          type: integer
          format: int32
        notBefore:
          type: integer
          format: int32
        optionalClientScopes:
          type: array
          items:
            type: string
        origin:
          type: string
        protocol:
          type: string
        protocolMappers:
          type: array
          items:
            $ref: '#/components/schemas/ProtocolMapperRepresentation'
        publicClient:
          type: boolean
        redirectUris:
          type: array
          items:
            type: string
        registeredNodes:
          type: object
          additionalProperties: true
        registrationAccessToken:
          type: string
        rootUrl:
          type: string
        secret:
          type: string
        serviceAccountsEnabled:
          type: boolean
        standardFlowEnabled:
          type: boolean
        surrogateAuthRequired:
          type: boolean
        webOrigins:
          type: array
          items:
            type: string
    RoleRepresentation-Composites:
      type: object
      properties:
        client:
          type: object
          additionalProperties: true
        realm:
          type: array
          items:
            type: string
    UserSessionRepresentation:
      type: object
      properties:
        clients:
          type: object
          additionalProperties: true
        id:
          type: string
        ipAddress:
          type: string
        lastAccess:
          type: integer
          format: int64
        start:
          type: integer
          format: int64
        userId:
          type: string
        username:
          type: string
    ResourceRepresentation:
      type: object
      properties:
        id:
          type: string
        attributes:
          type: object
          additionalProperties: true
        displayName:
          type: string
        icon_uri:
          type: string
        name:
          type: string
        ownerManagedAccess:
          type: boolean
        scopes:
          type: array
          items:
            $ref: '#/components/schemas/ScopeRepresentation'
        type:
          type: string
        uris:
          type: array
          items:
            type: string
    ResourceServerRepresentation:
      type: object
      properties:
        allowRemoteResourceManagement:
          type: boolean
        clientId:
          type: string
        decisionStrategy:
          type: string
          enum:
          - AFFIRMATIVE
          - UNANIMOUS
          - CONSENSUS
        id:
          type: string
        name:
          type: string
        policies:
          type: array
          items:
            $ref: '#/components/schemas/PolicyRepresentation'
        policyEnforcementMode:
          type: string
          enum:
          - ENFORCING
          - PERMISSIVE
          - DISABLED
        resources:
          type: array
          items:
            $ref: '#/components/schemas/ResourceRepresentation'
        scopes:
          type: array
          items:
            $ref: '#/components/schemas/ScopeRepresentation'
    PolicyRepresentation:
      type: object
      properties:
        config:
          type: object
          additionalProperties: true
        decisionStrategy:
          type: string
          enum:
          - AFFIRMATIVE
          - UNANIMOUS
          - CONSENSUS
        description:
          type: string
        id:
          type: string
        logic:
          type: string
          enum:
          - POSITIVE
          - NEGATIVE
        name:
          type: string
        owner:
          type: string
        policies:
          type: array
          items:
            type: string
        resources:
          type: array
          items:
            type: string
        resourcesData:
          type: array
          items:
            $ref: '#/components/schemas/ResourceRepresentation'
        scopes:
          type: array
          items:
            type: string
        scopesData:
          type: array
          items:
            $ref: '#/components/schemas/ScopeRepresentation'
        type:
          type: string
    UserRepresentation:
      type: object
      properties:
        access:
          type: object
          additionalProperties: true
        attributes:
          type: object
          additionalProperties: true
        clientConsents:
          type: array
          items:
            $ref: '#/components/schemas/UserConsentRepresentation'
        clientRoles:
          type: object
          additionalProperties: true
        createdTimestamp:
          type: integer
          format: int64
        credentials:
          type: array
          items:
            $ref: '#/components/schemas/CredentialRepresentation'
        disableableCredentialTypes:
          type: array
          items:
            type: string
        email:
          type: string
        emailVerified:
          type: boolean
        enabled:
          type: boolean
        federatedIdentities:
          type: array
          items:
            $ref: '#/components/schemas/FederatedIdentityRepresentation'
        federationLink:
          type: string
        firstName:
          type: string
        groups:
          type: array
          items:
            type: string
        id:
          type: string
        lastName:
          type: string
        notBefore:
          type: integer
          format: int32
        origin:
          type: string
        realmRoles:
          type: array
          items:
            type: string
        requiredActions:
          type: array
          items:
            type: string
        self:
          type: string
        serviceAccountClientId:
          type: string
        username:
          type: string
    UserConsentRepresentation:
      type: object
      properties:
        clientId:
          type: string
        createdDate:
          type: integer
          format: int64
        grantedClientScopes:
          type: array
          items:
            type: string
        lastUpdatedDate:
          type: integer
          format: int64
    AccessToken:
      type: object
      properties:
        acr:
          type: string
        address:
          $ref: '#/components/schemas/AddressClaimSet'
        allowed-origins:
          type: array
          items:
            type: string
        at_hash:
          type: string
        auth_time:
          type: integer
          format: int64
        authorization:
          $ref: '#/components/schemas/AccessToken-Authorization'
        azp:
          type: string
        birthdate:
          type: string
        c_hash:
          type: string
        category:
          type: string
          enum:
          - INTERNAL
          - ACCESS
          - ID
          - ADMIN
          - USERINFO
        claims_locales:
          type: string
        cnf:
          $ref: '#/components/schemas/AccessToken-CertConf'
        email:
          type: string
        email_verified:
          type: boolean
        exp:
          type: integer
          format: int64
        family_name:
          type: string
        gender:
          type: string
        given_name:
          type: string
        iat:
          type: integer
          format: int64
        iss:
          type: string
        jti:
          type: string
        locale:
          type: string
        middle_name:
          type: string
        name:
          type: string
        nbf:
          type: integer
          format: int64
        nickname:
          type: string
        nonce:
          type: string
        otherClaims:
          type: object
          additionalProperties: true
        phone_number:
          type: string
        phone_number_verified:
          type: boolean
        pic

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/deutsche-telekom/refs/heads/main/openapi/deutsche-telekom-clients-api-openapi.yml