Cycloid Organization OIDC Group Mappings API

Operations for OIDC group mappings of an organization.

Operations 5

GET /organizations/{organization_canonical}/oidc-group-mappings List OIDC group mappings #
POST /organizations/{organization_canonical}/oidc-group-mappings Create OIDC group mapping #
DELETE /organizations/{organization_canonical}/oidc-group-mappings/{oidc_group_mapping_id} Delete OIDC group mapping #
GET /organizations/{organization_canonical}/oidc-organization-settings Get OIDC organization settings #
PUT /organizations/{organization_canonical}/oidc-organization-settings Update OIDC organization settings #

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/cycloid:cycloid-organization-oidc-group-mappings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

cycloid-organization-oidc-group-mappings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: This is the Cycloid's API Reference. It provides descriptions, syntax, and usage examples for each of the actions and data types available within our console.
  title: Welcome! Organization OIDC Group Mappings API
  termsOfService: https://console.cycloid.io/terms
  contact:
    name: The Great Owl
    url: https://www.cycloid.io
    email: contact@cycloid.io
  license:
    name: Cycloid @copyrights
    url: https://cycloid.io
  version: '0'
servers:
- url: https://http-api.cycloid.io
security:
- api_key: []
- api_key_query: []
tags:
- description: Operations for OIDC group mappings of an organization.
  name: Organization OIDC Group Mappings
paths:
  /organizations/{organization_canonical}/oidc-group-mappings:
    parameters:
    - $ref: '#/components/parameters/organization_canonical'
    get:
      description: Get the list of OIDC group mappings configured for the organization. Group mapping requires the IdP to include group claims in the OIDC token; configure the claim name via oidc_groups_claim_name on the OIDC authentication integration.
      tags:
      - Organization OIDC Group Mappings
      operationId: listOIDCGroupMappings
      responses:
        '200':
          description: List of OIDC group mappings for the organization.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OIDCGroupMapping'
              example:
                data:
                - created_at: 1503225026
                  group_name: FOO_OPERATOR
                  id: 1
                  team:
                    canonical: operator
                    id: 5
                    name: Operator
                    roles:
                    - canonical: project-manager
                      default: true
                      description: Can manage projects
                      id: 18
                      name: Project Manager
                      rules: null
                  updated_at: 1503225026
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: List OIDC group mappings
      x-summary-source: derived
    post:
      description: Create a new OIDC group mapping for the organization.
      tags:
      - Organization OIDC Group Mappings
      operationId: createOIDCGroupMapping
      responses:
        '200':
          description: OIDC group mapping created.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/OIDCGroupMapping'
              example:
                data:
                  created_at: 1503225026
                  group_name: FOO_OPERATOR
                  id: 1
                  team:
                    canonical: operator
                    id: 5
                    name: Operator
                    roles:
                    - canonical: project-manager
                      default: true
                      description: Can manage projects
                      id: 18
                      name: Project Manager
                      rules: null
                  updated_at: 1503225026
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        '411':
          $ref: '#/components/responses/required_content_length_header'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        default:
          $ref: '#/components/responses/unexpected_error'
      requestBody:
        content:
          application/vnd.cycloid.io.v1+json:
            schema:
              $ref: '#/components/schemas/NewOIDCGroupMapping'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/NewOIDCGroupMapping'
        description: The OIDC group mapping to create.
        required: true
      summary: Create OIDC group mapping
      x-summary-source: derived
  /organizations/{organization_canonical}/oidc-group-mappings/{oidc_group_mapping_id}:
    parameters:
    - $ref: '#/components/parameters/organization_canonical'
    - $ref: '#/components/parameters/oidc_group_mapping_id'
    delete:
      description: Delete an OIDC group mapping from the organization.
      tags:
      - Organization OIDC Group Mappings
      operationId: deleteOIDCGroupMapping
      responses:
        '204':
          description: OIDC group mapping has been deleted.
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: Delete OIDC group mapping
      x-summary-source: derived
  /organizations/{organization_canonical}/oidc-organization-settings:
    parameters:
    - $ref: '#/components/parameters/organization_canonical'
    get:
      description: Get the OIDC settings configured for the organization.
      tags:
      - Organization OIDC Group Mappings
      operationId: getOIDCOrganizationSettings
      responses:
        '200':
          description: The OIDC settings of the organization.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/OIDCOrganizationSettings'
              example:
                data:
                  default_role_canonical: member
                  oidc_configured_in_hierarchy: true
                  oidc_managed: true
                  oidc_no_match_policy: keep_membership
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: Get OIDC organization settings
      x-summary-source: derived
    put:
      description: Create or update the OIDC settings of the organization. Rejects oidc_no_match_policy='eject' when oidc_managed is false with HTTP 422.
      tags:
      - Organization OIDC Group Mappings
      operationId: updateOIDCOrganizationSettings
      responses:
        '200':
          description: The updated OIDC settings of the organization.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/OIDCOrganizationSettings'
              example:
                data:
                  default_role_canonical: member
                  oidc_configured_in_hierarchy: true
                  oidc_managed: true
                  oidc_no_match_policy: eject
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        '411':
          $ref: '#/components/responses/required_content_length_header'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        default:
          $ref: '#/components/responses/unexpected_error'
      requestBody:
        content:
          application/vnd.cycloid.io.v1+json:
            schema:
              $ref: '#/components/schemas/UpdateOIDCOrganizationSettings'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UpdateOIDCOrganizationSettings'
        description: The OIDC settings to apply to the organization.
        required: true
      summary: Update OIDC organization settings
      x-summary-source: derived
components:
  schemas:
    OIDCGroupMapping:
      description: Maps an OIDC group claim to a team within an organization. The org-level role is driven by the per-organization OIDC settings (default_role), not by the mapping. Requires the IdP to include group claims in the issued token — enterprise IdPs (Keycloak, Okta, Azure AD/Entra ID, Auth0, EU Login/ECAS) support this; consumer providers such as Google Workspace and GitHub do not.
      type: object
      title: OIDCGroupMapping
      required:
      - id
      - group_name
      - team
      properties:
        created_at:
          type: integer
          format: uint64
        group_name:
          description: The OIDC group claim value to match.
          type: string
        id:
          type: integer
          format: uint32
        team:
          description: The team the user is added to when this mapping matches.
          $ref: '#/components/schemas/OIDCGroupMappingTeam'
        updated_at:
          type: integer
          format: uint64
    ErrorPayload:
      description: 'The payload used by the server to response to the client with an Error, those errors could be any of the ones listed [here](https://github.com/cycloidio/youdeploy-http-api/blob/develop/errors/code.go#L10), only the CODE of the error is the one that is guaranteed to not change between the same major version, the MESSAGE could change.

        '
      title: Error Payload
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetailsItem'
        request_id:
          type: string
    UpdateOIDCOrganizationSettings:
      description: The per-organization OIDC settings to create or update. 'eject' requires oidc_managed=true.
      type: object
      title: UpdateOIDCOrganizationSettings
      required:
      - oidc_managed
      - oidc_no_match_policy
      properties:
        default_role_canonical:
          description: The canonical of the org-level role granted on OIDC provisioning. Empty clears it.
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
        oidc_managed:
          description: When true, local member/team/invite edits are disabled (strict mode).
          type: boolean
        oidc_no_match_policy:
          description: The policy applied when no group mapping matches on login. 'eject' requires oidc_managed=true.
          type: string
          enum:
          - keep_membership
          - eject
    OIDCGroupMappingTeam:
      description: A summary of a team used within an OIDC group mapping, including its associated roles.
      type: object
      title: OIDCGroupMappingTeam
      required:
      - id
      - canonical
      - name
      - roles
      properties:
        canonical:
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
        id:
          type: integer
          format: uint32
          minimum: 1
        name:
          type: string
          minLength: 2
        roles:
          description: The roles granted to members of this team.
          type: array
          items:
            $ref: '#/components/schemas/Role'
    Role:
      description: Role represents the authorization level that an user has to access to a specific entity of the system. A role contains a list of rules to define the access control. Note not all the entities supports roles access control; see the API endpoints to know which entities support them.
      title: Role access control
      required:
      - id
      - name
      - canonical
      - description
      - rules
      - default
      properties:
        canonical:
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
        created_at:
          type: integer
          format: uint64
        default:
          type: boolean
        description:
          type: string
        id:
          type: integer
          format: uint32
          minimum: 1
        name:
          type: string
          maxLength: 100
          minLength: 2
        rules:
          type: array
          items:
            $ref: '#/components/schemas/Rule'
        updated_at:
          type: integer
          format: uint64
    NewOIDCGroupMapping:
      description: The information required to create an OIDC group mapping (organization, group, team). Multiple teams are expressed via multiple mappings.
      type: object
      title: NewOIDCGroupMapping
      required:
      - group_name
      - team_canonical
      properties:
        group_name:
          description: The OIDC group claim value to match.
          type: string
          maxLength: 255
          minLength: 1
        team_canonical:
          description: The canonical of the team to assign the user to.
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
    ErrorDetailsItem:
      description: Represents an item of the list of details of an error.
      title: Error details item
      required:
      - message
      - code
      properties:
        code:
          type: string
        details:
          type: array
          items:
            type: string
        message:
          type: string
    OIDCOrganizationSettings:
      description: The per-organization OIDC reconciliation settings.
      type: object
      title: OIDCOrganizationSettings
      required:
      - oidc_managed
      - oidc_no_match_policy
      properties:
        default_role_canonical:
          description: The canonical of the org-level role granted on OIDC provisioning. Empty when no default role is configured.
          type: string
        oidc_configured_in_hierarchy:
          description: Whether an enabled OIDC integration exists anywhere in the organization's hierarchy (self or ancestors). Read-only.
          type: boolean
          readOnly: true
        oidc_managed:
          description: When true, local member/team/invite edits are disabled (strict mode).
          type: boolean
        oidc_no_match_policy:
          description: The policy applied when no group mapping matches on login.
          type: string
          enum:
          - keep_membership
          - eject
    Rule:
      description: Rules define the specific access to the platform
      title: Rule
      required:
      - id
      - effect
      - action
      properties:
        action:
          description: It can be the normal Policy.Code or contain globs like `*` or `**`
          type: string
        effect:
          type: string
          enum:
          - allow
        id:
          description: This is the id of the row from the database, but for blocking organizations we generate rules that are not in the database. When this happens the id is allowed to be 0.
          type: integer
          format: uint32
        resources:
          description: It is the list of resources in which this Rule applies to, the format of it is the one on the Policy.Code but with the `canonical` of the entities like `organization:org-can:team:team-can` for an action of `organization:team:read`
          type: array
          items:
            type: string
  parameters:
    oidc_group_mapping_id:
      description: An OIDC group mapping ID
      name: oidc_group_mapping_id
      in: path
      required: true
      schema:
        type: integer
        format: uint32
    organization_canonical:
      description: A canonical of an organization.
      name: organization_canonical
      in: path
      required: true
      schema:
        type: string
        maxLength: 100
        minLength: 2
        pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
  responses:
    not_found_entity_in_path:
      description: The response sent when any of the entities present in the path is not found.
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: NotFoundEntity
              message: Entity not found
    required_content_length_header:
      description: The request has a body but it doesn't have a Content-Length header.
    not_enough_permissions:
      description: The authenticated user cannot perform the operation because, it doesn't have permissions for such operation.
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: Unauthorized
              message: Not enough permissions to perform the operation
    unprocessable_entity:
      description: All the custom errors that are generated from the Cycloid API
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: SomeCode
              message: some error
    unexpected_error:
      description: The response sent when an unexpected error happened, as known as an internal server error.
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: Unexpected
              message: Server Internal error
  securitySchemes:
    api_key:
      description: The API authorization is done with JWT tokens
      type: apiKey
      name: Authorization
      in: header
    api_key_query:
      description: The API authorization is done with JWT tokens in the query string
      type: apiKey
      name: api_key
      in: query