Ironclad Groups API

Documentation on SCIM Groups.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

ironclad-groups-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Ironclad OAuth 2.0 Authorization Groups API
  description: Documentation for Ironclad's OAuth 2.0 Implementation. More details on the [OAuth 2.0 specification](https://datatracker.ietf.org/doc/html/rfc6749).
  version: '1'
  contact:
    name: Ironclad Support
    email: support@ironcladapp.com
servers:
- url: https://na1.ironcladapp.com/oauth
  description: Production server
- url: https://eu1.ironcladapp.com/oauth
  description: EU Production server
- url: https://demo.ironcladapp.com/oauth
  description: Demo server
tags:
- name: Groups
  description: Documentation on SCIM Groups.
paths:
  /Groups:
    get:
      summary: List all Groups
      description: "Documentation on listing Groups via SCIM. \n\n**OAuth Scope required:** `scim.groups.readGroups`"
      operationId: retrieve-all-groups
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/StartIndex'
      - $ref: '#/components/parameters/Count'
      - name: filter
        in: query
        description: Filters for identifying subsets of groups. Filters must comply with the SCIM protocol's convention. For more details, see SCIM [RFC 7644 Section 3.4.2.2](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2).
        example: displayName eq "Legal Ops Group"
        schema:
          type: string
      - $ref: '#/components/parameters/ExcludedAttributes'
      responses:
        '200':
          $ref: '#/components/responses/GroupsResponse200'
        '400':
          $ref: '#/components/responses/GroupFilterResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Groups
    post:
      summary: Create a Group
      description: "Documentation on creating a Group via SCIM. \n\n**OAuth Scope required:** `scim.groups.createGroups`"
      operationId: create-a-group
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      requestBody:
        $ref: '#/components/requestBodies/GroupCreateRequestBody'
      responses:
        '201':
          $ref: '#/components/responses/GroupResponse201'
        '400':
          $ref: '#/components/responses/GroupResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '409':
          $ref: '#/components/responses/AlreadyExistsResponse409'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Groups
  /Groups/{groupId}:
    get:
      summary: Retrieve a Group
      description: "Documentation on accessing a Group via SCIM. \n\n**OAuth Scope required:** `scim.groups.readGroups`"
      operationId: retrieve-a-group
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/GroupId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      responses:
        '200':
          $ref: '#/components/responses/GroupResponse200'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Groups
    patch:
      summary: Update a Group
      description: "Documentation on updating a Group via SCIM. This includes updating group membership. \n\n**OAuth Scope required:** `scim.groups.updateGroups`"
      operationId: update-group-membership
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/GroupId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - schemas
              - Operations
              properties:
                schemas:
                  type: array
                  default:
                  - urn:ietf:params:scim:api:messages:2.0:PatchOp
                  items:
                    type: string
                Operations:
                  type: array
                  description: Operations for updating groups. See snippets below for more details.
                  items:
                    properties:
                      op:
                        type: string
                        description: '"add" or "remove"'
                      path:
                        type: string
                        default: members
                      value:
                        type: array
                        description: An array of User Ids. User Ids can be found by filtering results from the Retrieve all Users endpoint.
                        items:
                          properties:
                            value:
                              type: string
                              description: The unique id of the user. User Ids can be found by filtering the Retrieve all Users endpoint.
                          required:
                          - value
                          type: object
                    required:
                    - op
                    - path
                    type: object
      responses:
        '200':
          $ref: '#/components/responses/GroupResponse200'
        '204':
          $ref: '#/components/responses/GroupResponse204'
        '400':
          $ref: '#/components/responses/GroupResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Groups
    put:
      summary: Replace a Group
      description: "Documentation on replacing a Group via SCIM. \n\n**OAuth Scope required:** `scim.groups.updateGroups`"
      operationId: replace-a-group
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/GroupId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      requestBody:
        $ref: '#/components/requestBodies/GroupCreateRequestBody'
      responses:
        '200':
          $ref: '#/components/responses/GroupResponse200'
        '400':
          $ref: '#/components/responses/GroupResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Groups
    delete:
      summary: Delete a Group
      description: "Documentation on deleting a Group via SCIM. \n\n**OAuth Scope required:** `scim.groups.deleteGroups`"
      operationId: delete-a-group
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/GroupId'
      responses:
        '204':
          $ref: '#/components/responses/GroupResponse204'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Groups
components:
  responses:
    GroupFilterResponse400:
      description: 400 Bad Request
      content:
        application/json:
          schema:
            type: object
            properties:
              schema:
                type: array
                items:
                  type: string
                  example: urn:ietf:params:scim:api:messages:2.0:Error
              status:
                type: string
                description: The HTTP status code expressed as a string.
                example: '400'
              scimType:
                type: string
                description: The SCIM detail error keyword.
                example: invalidFilter
              detail:
                type: string
                description: A detailed human-readable message.
                example: 'No matching schema for attribute: legalName'
    GroupResponse200:
      description: 200 OK
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GroupResponseObject'
    ForbiddenResponse403:
      description: 403 Forbidden
      content:
        application/json:
          schema:
            type: object
            properties:
              schemas:
                type: array
                items:
                  type: string
                  example: urn:ietf:params:scim:api:messages:2.0:Error
              status:
                type: string
                description: The HTTP status code expressed as a string.
                example: '403'
    GroupResponse204:
      description: 204 No Content
    GroupResponse400:
      description: 400 Bad Request
      content:
        application/json:
          schema:
            type: object
            properties:
              schemas:
                type: array
                items:
                  type: string
                  example: urn:ietf:params:scim:api:messages:2.0:Error
              status:
                type: string
                description: The HTTP status code expressed as a string.
                example: '400'
              scimType:
                type: string
                description: The SCIM detail error keyword.
                example: invalidValue
              detail:
                type: string
                description: A detailed human-readable message.
                example: 'Invalid value at displayName: 123'
    GroupsResponse200:
      description: 200 OK
      content:
        application/json:
          schema:
            type: object
            properties:
              schemas:
                type: array
                items:
                  type: string
                  example: urn:ietf:params:scim:api:messages:2.0:ListResponse
              totalResults:
                type: integer
                description: The total number of groups that match this filter. This may be larger than the number of groups in this page, in which case pagination may be used to retrieve the next page of results.
                example: 2
                default: 0
              Resources:
                type: array
                description: The current page of user results.
                items:
                  $ref: '#/components/schemas/GroupResponseObject'
              startIndex:
                type: integer
                description: The 1-based index of the first result in the current set of list results.
                example: 1
                default: 0
              itemsPerPage:
                type: integer
                description: Specifies the maximum number of resources that can be returned in a single page of results.
                example: 25
                default: 0
    NotFoundResponse404:
      description: 404 Not Found
      content:
        application/json:
          schema:
            type: object
            properties:
              schemas:
                type: array
                items:
                  type: string
                  example: urn:ietf:params:scim:api:messages:2.0:Error
              status:
                type: string
                description: The HTTP status code expressed as a string.
                example: '404'
              detail:
                type: string
                description: A detailed human-readable message.
                example: Resource 6643ce2e22daa40f80025aee not found
    AlreadyExistsResponse409:
      description: 409 Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              schemas:
                type: array
                items:
                  type: string
                  example: urn:ietf:params:scim:api:messages:2.0:Error
              status:
                type: string
                description: The HTTP status code expressed as a string.
                example: '409'
    ServerErrorResponse500:
      description: 500 Internal Server Error
      content:
        application/json:
          schema:
            type: object
            properties:
              schemas:
                type: array
                items:
                  type: string
                  example: urn:ietf:params:scim:api:messages:2.0:Error
              status:
                type: string
                description: The HTTP status code expressed as a string.
                example: '500'
              detail:
                type: string
                description: A detailed human-readable message.
                example: Internal server error
    GroupResponse201:
      description: 201 Created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GroupResponseObject'
  parameters:
    GroupId:
      name: groupId
      in: path
      description: A group's unique id can be identified using the Retrieve all Groups endpoint with a filter parameter
      schema:
        type: string
      required: true
    Count:
      name: count
      in: query
      description: Specifies the maximum number of resources to return in a single page of results.
      schema:
        type: integer
        format: int32
        default: 25
        minimum: 0
        maximum: 1000
    ExcludedAttributes:
      name: excludedAttributes
      in: query
      description: A comma-separated list of attributes to exclude from the resources in the response.
      schema:
        type: string
    XAsUserId:
      name: x-as-user-id
      in: header
      description: Denotes the actor of the request. When used, the API will take into account this user's permissions and access. This or `x-as-user-email` is required when the associated token was produced from the Client Credentials grant or with legacy bearer tokens on select endpoints. More information about [permissions](https://support.ironcladapp.com/hc/en-us/articles/23063233934999-Ironclad-Permissions-Overview).
      required: false
      schema:
        type: string
        example: 5f0375c4cdc1927a3c5edcd3
    XAsUserEmail:
      name: x-as-user-email
      in: header
      description: Denotes the actor of the request. When used, the API will take into account this user's permissions and access. This or `x-as-user-id` is required when the associated token was produced from the Client Credentials grant or with legacy bearer tokens on select endpoints. More information about [permissions](https://support.ironcladapp.com/hc/en-us/articles/23063233934999-Ironclad-Permissions-Overview).
      required: false
      schema:
        type: string
        example: jane.doe@test.com
    StartIndex:
      name: startIndex
      in: query
      description: The starting index for retrieving this resource. Resources are indexed based on when they were first added to Ironclad.
      schema:
        type: integer
        format: int32
        default: 1
        minimum: 1
  requestBodies:
    GroupCreateRequestBody:
      content:
        application/json:
          schema:
            type: object
            required:
            - schemas
            - displayName
            properties:
              schemas:
                type: array
                default:
                - urn:ietf:params:scim:schemas:core:2.0:Group
                items:
                  type: string
              displayName:
                type: string
                description: The name you want to give the group in Ironclad.
              members:
                type: array
                items:
                  properties:
                    value:
                      type: string
                      description: The unique id of the user. User Ids can be found by filtering the Retrieve all Users endpoint.
                  required:
                  - value
                  type: object
  schemas:
    GroupResponseObject:
      type: object
      required:
      - schemas
      - id
      properties:
        schemas:
          type: array
          items:
            type: string
            example: urn:ietf:params:scim:schemas:core:2.0:Group
        displayName:
          type: string
          description: The name of the group.
          example: Legal Ops Group
        id:
          type: string
          description: The group's identifier.
          example: 74906dd6-f2c6-4442-8875-57846f15b061
        externalId:
          type: string
          description: An optional identifier of the group sourced from the identity provider.
          example: '123'
        members:
          type: array
          description: The list of users who are members of this group.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                - User
                description: The type of member for this group. This is usually 'User'.
                example: User
              value:
                type: string
                description: The user's identifier.
                example: 2bf1bb84-f7ed-4a11-8cbe-138814f9fc21
        meta:
          type: object
          description: Metadata for the group.
          properties:
            resourceType:
              type: string
              enum:
              - Group
              description: 'Type of the SCIM resource. In this case: ''Group''.'
              example: Group
            location:
              type: string
              format: https-url
              description: The URI of the Group resource being returned.
              example: https://na1.ironcladapp.com/scim/v2/Groups/67e4488c605caf0d8aa2e5c6
x-readme:
  headers: []
  explorer-enabled: true
  proxy-enabled: true
  samples-languages:
  - curl
  - node
  - ruby
  - javascript
  - python