Ironclad Users API

Documentation on SCIM Users.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

ironclad-users-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Ironclad OAuth 2.0 Authorization Users 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: Users
  description: Documentation on SCIM Users.
paths:
  /Users:
    get:
      summary: List all Users
      description: "Documentation on listing Users via SCIM. \n\n**OAuth Scope required:** `scim.users.readUsers`"
      operationId: retrieve-all-users
      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 users. 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: userName eq "alex.doe@example.com"
        schema:
          type: string
      - $ref: '#/components/parameters/ExcludedAttributes'
      responses:
        '200':
          $ref: '#/components/responses/UsersResponse200'
        '400':
          $ref: '#/components/responses/UserFilterResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Users
    post:
      summary: Create a User
      description: "Documentation on creating a User via SCIM. \n\n**OAuth Scope required:** `scim.users.createUsers`"
      operationId: create-a-user
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      requestBody:
        $ref: '#/components/requestBodies/UserCreateRequestBody'
      responses:
        '201':
          $ref: '#/components/responses/UserResponse201'
        '400':
          $ref: '#/components/responses/UserResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '409':
          $ref: '#/components/responses/AlreadyExistsResponse409'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Users
  /Users/{userId}:
    get:
      summary: Retrieve a User
      description: "Documentation on accessing User info via SCIM. \n\n**OAuth Scope required:** `scim.users.readUsers`"
      operationId: retrieve-a-user
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/UserId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse200'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Users
    patch:
      summary: Update User Data
      description: "Documentation on updating a User via SCIM. \n\n**OAuth Scope required:** `scim.users.updateUsers`"
      operationId: update-user-data
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/UserId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - schemas
              properties:
                schemas:
                  type: array
                  default:
                  - urn:ietf:params:scim:api:messages:2.0:PatchOp
                  items:
                    type: string
                Operations:
                  type: array
                  items:
                    properties:
                      op:
                        type: string
                        description: Must be "add", "remove", or "replace"
                      path:
                        type: string
                        description: The path of the attribute that you wish to change (e.g., emails, name.givenName, name.familyName)
                      value:
                        type: string
                        description: The value you wish to use for "add" or "replace" operations. The "remove" operation does not take the "value" parameter.
                    required:
                    - op
                    - path
                    type: object
      responses:
        '200':
          $ref: '#/components/responses/UserResponse200'
        '400':
          $ref: '#/components/responses/UserResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Users
    put:
      summary: Replace a User
      description: "Documentation on replacing a User via SCIM. \n\n**OAuth Scope required:** `scim.users.updateUsers`"
      operationId: replace-a-user
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/UserId'
      - $ref: '#/components/parameters/ExcludedAttributes'
      requestBody:
        $ref: '#/components/requestBodies/UserCreateRequestBody'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse200'
        '400':
          $ref: '#/components/responses/UserResponse400'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Users
    delete:
      summary: Delete a User
      description: "Delete a user on Ironclad. If the deletion is successful, all active workflows associated with the deleted user should be automatically reassigned to the default user within the admin group. To learn how to set a default user, see the [Manage Groups](https://support.ironcladapp.com/hc/en-us/articles/12286570480791-Manage-Groups) guide. \n\n**OAuth Scope required:** `scim.users.deleteUsers`"
      operationId: delete-a-user
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/UserId'
      responses:
        '204':
          $ref: '#/components/responses/UserResponse204'
        '403':
          $ref: '#/components/responses/ForbiddenResponse403'
        '404':
          $ref: '#/components/responses/NotFoundResponse404'
        '500':
          $ref: '#/components/responses/ServerErrorResponse500'
      tags:
      - Users
components:
  responses:
    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'
    UserResponse204:
      description: 204 No Content
    UserFilterResponse400:
      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: name,lastName'
    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'
    UserResponse200:
      description: 200 OK
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UserResponseObject'
    UserResponse201:
      description: 201 Created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UserResponseObject'
    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
    UsersResponse200:
      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 users that match this filter. This may be larger than the number of users 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/UserResponseObject'
              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
    UserResponse400:
      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 name.givenName: 123'
  schemas:
    UserResponseObject:
      type: object
      required:
      - schemas
      - id
      properties:
        schemas:
          type: array
          items:
            type: string
            example: urn:ietf:params:scim:schemas:core:2.0:User
        userName:
          type: string
          description: The email address of the user (e.g., jdoe@acme.com).
          example: alex.doe@example.com
        name:
          type: object
          description: The first name and last name of the user.
          properties:
            givenName:
              type: string
              description: The first name of the user.
              example: Alex
            familyName:
              type: string
              description: The last name of the user.
              example: Doe
        title:
          type: string
          description: The user's legal title.
          example: Vice President
        id:
          type: string
          description: The user's unique identifier.
          example: 6660d37dec0eac3deffb680e
        emails:
          type: array
          description: A list of emails associated with the user. The email with type work and primary flag is typically copied from the main email stored in the userName property.
          items:
            type: object
            properties:
              value:
                type: string
                description: The email address value.
                example: alex.doe@example.com
              type:
                type: string
                description: The type of email this is. Canonical values include 'work', 'home', and 'other'.
                example: work
              primary:
                type: boolean
                description: Whether this is the user's primary email address.
                example: true
                default: true
        active:
          type: boolean
          description: Whether this user is currently active. Ironclad users do not have the concept of active vs. inactive, and a SCIM User with active set to `false` will be removed from the company. On subsequent reads, inactive users would be not found.
          example: true
          default: true
        urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:
          type: object
          description: Enterprise User attributes
          properties:
            department:
              type: string
              description: Which department the user is a part of.
              example: Legal
        urn:ietf:params:scim:schemas:extension:ironclad:2.0:User:
          type: object
          description: Ironclad User attributes
          properties:
            departmentHead:
              type: string
              format: email
              description: The email address (username) of the user's department head.
              example: jane.doe@test.com
            provider:
              type: string
              enum:
              - local
              - magicLink
              - saml
              - google
              description: The user's authentication method.
              example: local
            allowProviderConversion:
              type: boolean
              description: Whether the user is allowed to convert from `local` to `google` provider.
              example: false
        meta:
          type: object
          description: Metadata for the user.
          properties:
            resourceType:
              type: string
              enum:
              - User
              description: 'Type of the SCIM resource. In this case: ''User''.'
              example: User
            created:
              type: string
              description: When the User was created.
              example: '2025-03-26T18:33:48.336Z'
            lastModified:
              type: string
              description: When the User was last modified.
              example: '2025-03-26T18:33:48.336Z'
            location:
              type: string
              format: url
              description: The URI of the User resource being returned.
              example: https://na1.ironcladapp.com/scim/v2/Users/67e4488c605caf0d8aa2e5c6
  requestBodies:
    UserCreateRequestBody:
      content:
        application/json:
          schema:
            type: object
            required:
            - schemas
            - userName
            - name
            properties:
              schemas:
                type: array
                default:
                - urn:ietf:params:scim:schemas:core:2.0:User
                items:
                  type: string
              userName:
                type: string
                description: The email address of the user (e.g., jdoe@acme.com).
              name:
                type: object
                description: The first name and last name of the user.
                properties:
                  givenName:
                    type: string
                    description: The first name of the user.
                  familyName:
                    type: string
                    description: The last name of the user.
              title:
                type: string
                description: The user's legal title.
              password:
                type: string
                description: "The user's password for username/password type sign in method. Required if there are no SAML configurations set up for the company. \n\nPassword requirements:\n- 16+ characters \n- At least one lowercase letter \n- At least one uppercase letter \n- At least one number \n- At least one special character (!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~)"
              active:
                type: boolean
                description: Whether the user is currently active. Ironclad users cannot be marked as inactive, and will be removed from the company if this is set to false.
                default: true
              urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:
                type: object
                description: Enterprise User attributes
                properties:
                  department:
                    type: string
                    description: Which department the user is a part of.
                    example: Legal
              urn:ietf:params:scim:schemas:extension:ironclad:2.0:User:
                type: object
                description: Ironclad User attributes
                properties:
                  departmentHead:
                    type: string
                    format: email
                    description: The email address (username) of the user's department head.
                    example: jane.doe@test.com
                  allowProviderConversion:
                    type: boolean
                    description: Allow the user to convert from 'local' to 'google' provider.
                    example: false
  parameters:
    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
    UserId:
      name: userId
      in: path
      description: A user's unique id can be identified using the Retrieve all Users endpoint with a filter parameter
      schema:
        type: string
      required: true
    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
x-readme:
  headers: []
  explorer-enabled: true
  proxy-enabled: true
  samples-languages:
  - curl
  - node
  - ruby
  - javascript
  - python