openapi: 3.0.2
info:
  version: latest
  title: ReachFive SCIM API
  termsOfService: https://www.reachfive.com/terms-policies
  contact:
    email: documentation@reachfive.com
    url: https://www.reachfive.com/contact-us
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  x-logo:
    url: _images/scim-api.png
  description: >
    > #### <i class="fa fa-gear fa-spin fa-2x" style="color: #00c24a"></i> BETA
    RELEASE

    > A beta release is the first offering of the feature and may not be fully
    available to all customers. Contact your ReachFive representative for more
    details.


    The SCIM protocol is an application-level REST protocol for provisioning and
    managing identity data on the web.

    It supports creating, discovering, retrieving, and modifying core identity
    resources.


    **Note**: For more on SCIM, please see
    [here](https://www.rfc-editor.org/rfc/rfc7644).
externalDocs:
  description: For more ReachFive documentation.
  url: ../home/index.html
security:
  - BearerAuth: []
tags:
  - name: Authentication
    description: >
      All SCIM endpoints require a token authentication.


      You'll need to start the SCIM configuration from the ReachFive Console to
      obtain an API Key to use as bearer token.


      > See [SCIM on the
      console](https://developer.reachfive.com/docs/scim.html)
  - name: ServiceProviderConfig
    x-displayName: Service Provider Configuration
    description: Describes the SCIM specification features available on service provider.
  - name: ResourceTypes
    x-displayName: Resource Types
    description: >-
      Discover the types of resources available on SCIM service provider (e.g.,
      Users and Groups).
  - name: Schemas
    x-displayName: Schemas
    description: >-
      Retrieve information about resource schemas supported by a SCIM service
      provider.
  - name: Users
    x-displayName: Users
    description: Retrieve, add, modify Users.
  - name: Groups
    x-displayName: Groups
    description: Retrieve, add, modify Groups.
  - name: BulkOps
    x-displayName: Bulk operations
    description: Bulk updates to one or more resources.
paths:
  /scim/v2/ServiceProviderConfig:
    get:
      tags:
        - ServiceProviderConfig
      summary: Retrieve service provider config
      description: >
        This operation returns a JSON structure that describes the SCIM
        specification features available on a service provider.


        The response is a JSON object using a "schemas" attribute of
        `"urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"`. 


        > **Note**: The attributes returned in the JSON object are defined in
        [Section 5 of
        [RFC7643]](https://datatracker.ietf.org/doc/html/rfc7643#section-5).
      operationId: getServiceProvicerConfig
      responses:
        '200':
          description: Successful GET operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serviceProviderConfigResponse'
        '404':
          description: No configuration found.
  /scim/v2/ResourceTypes:
    get:
      tags:
        - ResourceTypes
      summary: Retrieve resource types
      description: >
        This operation is used to discover the types of resources available on a
        SCIM service provider (e.g., Users and Groups). 

        Each resource type defines the endpoints, the core schema URI that
        defines the resource, and any supported schema extensions.


        > **Note**: The attributes defining a resource type can be found in
        [Section 6 of
        [RFC7643]](https://datatracker.ietf.org/doc/html/rfc7643#section-6)
      operationId: getResourceType
      responses:
        '200':
          description: Successful GET operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/resourceTypeListResponse'
        '404':
          description: No configuration found
  /scim/v2/ResourceTypes/{name}:
    get:
      tags:
        - ResourceTypes
      summary: Retrieve resource type by name
      description: >
        This operation is used to retireve an individual resource by his name
        (e.g., User and Group).
      operationId: getResourceTypeName
      parameters:
        - $ref: '#/components/parameters/resourceTypeName'
      responses:
        '200':
          description: Successful GET operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/resourceTypeResponse'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    default: '404'
                  detail:
                    type: string
                    default: Resource {id} not found
  /scim/v2/Schemas:
    get:
      tags:
        - Schemas
      summary: Retrieve schemas
      description: >
        This operation is used to retrieve information about resource schemas
        supported by a SCIM service provider. An HTTP GET to the endpoint
        "/Schemas" will return all supported schemas in ListResponse format. 


        > **Note**: The contents of each schema returned are described in
        [Section 7 of
        [RFC7643]](https://datatracker.ietf.org/doc/html/rfc7643#section-7).
      operationId: getSchemas
      responses:
        '200':
          description: Successful GET operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemaListResponse'
        '404':
          description: Not found.
  /scim/v2/Schemas/{id}:
    get:
      tags:
        - Schemas
      summary: Retrieve specific schema
      description: >
        This operation is used to retrieve individual schema definitions by his
        schema URI.


        For example: `/Schemas/urn:ietf:params:scim:schemas:core:2.0:User`


        > **Note**: The contents of schema returned are described in [Section 7
        of [RFC7643]](https://datatracker.ietf.org/doc/html/rfc7643#section-7).
      operationId: getSchema
      parameters:
        - $ref: '#/components/parameters/schemaId'
      responses:
        '200':
          description: Successful GET operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemaResponse'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    default: '404'
                  detail:
                    type: string
                    default: Resource {id} not found
  /scim/v2/Users:
    get:
      tags:
        - Users
      summary: Query users
      description: >
        The SCIM protocol defines a standard set of query parameters that can be
        used to filter, sort, and paginate to return zero or more resources in a
        query response.


        > For more on filtering with SCIM routes, please see [RFC 7644
        Filtering](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2).
      operationId: queryUser
      parameters:
        - $ref: '#/components/parameters/filter'
        - $ref: '#/components/parameters/attributes'
        - $ref: '#/components/parameters/excludedAttributes'
        - $ref: '#/components/parameters/sortBy'
        - $ref: '#/components/parameters/sortOrder'
        - $ref: '#/components/parameters/startIndex'
        - $ref: '#/components/parameters/count'
      responses:
        '200':
          description: Successful query
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/queryUserResponse'
        '404':
          description: No resource found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request GET \
              --url https://YOUR_DOMAIN/scim/v2/Users \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    post:
      tags:
        - Users
      summary: Create a new user
      description: |
        Creates a new user and brings that user object to the service provider.
      operationId: createUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createUserRequest'
      responses:
        '201':
          description: Successfully created the user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/createUserResponse'
        '409':
          description: Resource already exists in service provider.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request POST \
              --url https://YOUR_DOMAIN/scim/v2/Users \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
  /scim/v2/Users/{userId}:
    get:
      tags:
        - Users
      summary: Retrieve a known user
      description: |
        Retrieve a known user by their ID.

        > **Note**: This checks the user is present in the SCIM application.
      operationId: getUser
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '200':
          description: Successfully returned the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getUserResponse'
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request GET \
              --url https://YOUR_DOMAIN/scim/v2/Users/{userId} \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    patch:
      tags:
        - Users
      summary: Modifies a user with a set of client-specified changes (partial update).
      operationId: modifyUserAttributes
      description: >
        Update one or more attributes of a SCIM resource using a sequence of
        operations to `"add"`, `"remove"`, or `"replace"` values.


        The general form of the SCIM `PATCH` request is based on the JSON Patch
        approach. Find more at
        [[RFC6902](https://datatracker.ietf.org/doc/html/rfc6902)].


        > **Note**: One difference between SCIM `PATCH` and JSON Patch is that
        SCIM servers do not support array indexing and do not support
        [[RFC6902](https://datatracker.ietf.org/doc/html/rfc6902)] operation
        types relating to array element manipulation, such as `"move"`.


        The body of each request must contain the "schemas" attribute with the
        URI value of `"urn:ietf:params:scim:api:messages:2.0:PatchOp"`.


        The body of an HTTP `PATCH` request must contain the attribute
        `"Operations"` whose value is an array of one or more `PATCH`
        operations. Each `PATCH` operation object must have exactly one `"op"`
        member whose value indicates the operation to perform and may be one of
        the following:


        - `"add"`

        - `"remove"`

        - `"replace"`. 


        > **Note**: The semantics of each operation are defined in [Section
        3.5.2 of
        [RFC7644]](https://datatracker.ietf.org/doc/html/rfc7644#section-3.5.2).


        The `"path"` attribute value is a *String* containing an attribute path
        describing the target of the operation.  The `"path"` attribute is
        *optional* for `"add"` and `"replace"` and is **required** for
        `"remove"` operations.


        Each operation against an attribute must be compatible with the
        attribute's mutability and schema as defined in Sections
        [2.2](https://datatracker.ietf.org/doc/html/rfc7643#section-2.2) and
        [2.3](https://datatracker.ietf.org/doc/html/rfc7643#section-2.3) of
        [[RFC7643](https://datatracker.ietf.org/doc/html/rfc7643)].

        For example, a client **must not** modify an attribute that has
        mutability `"readOnly"` or `"immutable"`.  However, a client may `"add"`
        a value to an `"immutable"` attribute if the attribute had no previous
        value.  An operation that is not compatible with an attribute's
        mutability or schema will return the appropriate HTTP response status
        code and a JSON detail error response as defined in [Section
        3.12](https://datatracker.ietf.org/doc/html/rfc7644#section-3.12).


        Each `PATCH` operation represents a single action to be applied to the
        same SCIM resource specified by the request URI. Operations are applied
        sequentially in the order they appear in the array.  Each operation in
        the sequence is applied to the target resource; the resulting resource
        becomes the target of the next operation. Evaluation continues until all
        operations are successfully applied or until an error condition is
        encountered.


        > **Note**: For multi-valued attributes, a `PATCH` operation that sets a
        value's `"primary"` sub-attribute to `"true"` will cause the server to
        automatically set "primary" to "false" for any other values in the
        array.
      parameters:
        - $ref: '#/components/parameters/userId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchUserRequest'
      responses:
        '200':
          description: Successfully patched the user attributes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/patchUserResponse'
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request PUT \
              --url https://YOUR_DOMAIN/scim/v2/Users/{userId} \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    put:
      tags:
        - Users
      summary: >-
        Modifies a user by replacing existing attributes with a specified set of
        replacement attributes (replace).
      description: >
        Used to replace a resource's attributes.


        For example, clients that have previously retrieved the entire resource
        in advance and revised it may replace the resource using an HTTP `PUT`.
        Because SCIM resource identifiers are assigned by the service provider,
        HTTP `PUT` **must not** be used to create new resources.


        > **Note**: As the operation's intent is to replace all attributes, SCIM
        clients may send all attributes, regardless of each attribute's
        mutability.
      operationId: replaceUserAttributes
      parameters:
        - $ref: '#/components/parameters/userId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/updateUserRequest'
      responses:
        '200':
          description: Successfully updated the attributes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/updateUserResponse'
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request PUT \
              --url https://YOUR_DOMAIN/scim/v2/Users/{userId} \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    delete:
      tags:
        - Users
      summary: Deletes a user.
      description: |
        This operations removes the user from the ReachFive side.
      operationId: deleteUser
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '204':
          description: Successfully removed the user
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request DELETE \
              --url https://YOUR_DOMAIN/scim/v2/Users/{userId} \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
  /scim/v2/Groups:
    get:
      tags:
        - Groups
      summary: Query groups
      description: >
        The SCIM protocol defines a standard set of query parameters that can be
        used to filter, sort, and paginate to return zero or more resources in a
        query response.


        > For more on filtering with SCIM routes, please see [RFC 7644
        Filtering](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2).
      operationId: queryGroup
      parameters:
        - $ref: '#/components/parameters/filter'
        - $ref: '#/components/parameters/attributes'
        - $ref: '#/components/parameters/excludedAttributes'
        - $ref: '#/components/parameters/sortBy'
        - $ref: '#/components/parameters/sortOrder'
        - $ref: '#/components/parameters/startIndex'
        - $ref: '#/components/parameters/count'
      responses:
        '200':
          description: Successful query
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/queryGroupResponse'
        '404':
          description: No resource found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request GET \
              --url https://YOUR_DOMAIN/scim/v2/Groups \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    post:
      tags:
        - Groups
      summary: Create a new group
      description: >
        Creates a new group and brings that group object to the service
        provider.
      operationId: createGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createGroupRequest'
      responses:
        '201':
          description: Successfully created the new group
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/createGroupResponse'
        '409':
          description: Resource already exists in service provider.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request POST \
              --url https://YOUR_DOMAIN/scim/v2/Groups \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
  /scim/v2/Groups/{groupId}:
    get:
      tags:
        - Groups
      summary: Retrieve a known group
      description: |
        Retrieve a known group by their ID.

        > **Note**: This checks the group is present in the SCIM application.
      operationId: getGroup
      parameters:
        - $ref: '#/components/parameters/groupId'
      responses:
        '200':
          description: Successfully returned the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getGroupResponse'
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request GET \
              --url https://YOUR_DOMAIN/scim/v2/Users/{groupId} \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    patch:
      tags:
        - Groups
      summary: >-
        Modifies a group with a set of client-specified changes (partial
        update).
      operationId: modifyGroupAttributes
      description: >
        Update one or more attributes of a SCIM resource using a sequence of
        operations to `"add"`, `"remove"`, or `"replace"` values.


        The general form of the SCIM `PATCH` request is based on the JSON Patch
        approach. Find more at
        [[RFC6902](https://datatracker.ietf.org/doc/html/rfc6902)].


        > **Note**: One difference between SCIM `PATCH` and JSON Patch is that
        SCIM servers do not support array indexing and do not support
        [[RFC6902](https://datatracker.ietf.org/doc/html/rfc6902)] operation
        types relating to array element manipulation, such as `"move"`.


        The body of each request must contain the "schemas" attribute with the
        URI value of `"urn:ietf:params:scim:api:messages:2.0:PatchOp"`.


        The body of an HTTP `PATCH` request must contain the attribute
        `"Operations"` whose value is an array of one or more `PATCH`
        operations. Each `PATCH` operation object must have exactly one `"op"`
        member whose value indicates the operation to perform and may be one of
        the following:


        - `"add"`

        - `"remove"`

        - `"replace"`. 


        > **Note**: The semantics of each operation are defined in [Section
        3.5.2 of
        [RFC7644]](https://datatracker.ietf.org/doc/html/rfc7644#section-3.5.2).


        The `"path"` attribute value is a *String* containing an attribute path
        describing the target of the operation.  The `"path"` attribute is
        *optional* for `"add"` and `"replace"` and is **required** for
        `"remove"` operations.


        Each operation against an attribute must be compatible with the
        attribute's mutability and schema as defined in Sections
        [2.2](https://datatracker.ietf.org/doc/html/rfc7643#section-2.2) and
        [2.3](https://datatracker.ietf.org/doc/html/rfc7643#section-2.3) of
        [[RFC7643](https://datatracker.ietf.org/doc/html/rfc7643)].

        For example, a client **must not** modify an attribute that has
        mutability `"readOnly"` or `"immutable"`.  However, a client may `"add"`
        a value to an `"immutable"` attribute if the attribute had no previous
        value.  An operation that is not compatible with an attribute's
        mutability or schema will return the appropriate HTTP response status
        code and a JSON detail error response as defined in [Section
        3.12](https://datatracker.ietf.org/doc/html/rfc7644#section-3.12).


        Each `PATCH` operation represents a single action to be applied to the
        same SCIM resource specified by the request URI. Operations are applied
        sequentially in the order they appear in the array.  Each operation in
        the sequence is applied to the target resource; the resulting resource
        becomes the target of the next operation. Evaluation continues until all
        operations are successfully applied or until an error condition is
        encountered.


        > **Note**: For multi-valued attributes, a `PATCH` operation that sets a
        value's `"primary"` sub-attribute to `"true"` will cause the server to
        automatically set "primary" to "false" for any other values in the
        array.
      parameters:
        - $ref: '#/components/parameters/groupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchGroupRequest'
      responses:
        '200':
          description: Successfully patched the group attributes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/patchGroupResponse'
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request PUT \
              --url https://YOUR_DOMAIN/scim/v2/Users/{groupId} \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    put:
      tags:
        - Groups
      summary: >-
        Modifies a user by replacing existing attributes with a specified set of
        replacement attributes (replace).
      description: >
        Used to replace a resource's attributes. For example, clients that have
        previously retrieved the entire resource in advance and revised it may
        replace the resource using an HTTP PUT. Because SCIM resource
        identifiers are assigned by the service provider, HTTP `PUT` **must
        not** be used to create new resources.


        > **Note**: As the operation's intent is to replace all attributes, SCIM
        clients may send all attributes, regardless of each attribute's
        mutability.
      operationId: replaceGroupAttributes
      parameters:
        - $ref: '#/components/parameters/groupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/updateGroupRequest'
      responses:
        '200':
          description: Successfully updated the attributes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/updateGroupResponse'
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request PUT \
              --url https://YOUR_DOMAIN/scim/v2/Users/{groupId} \
              --header 'Content-type: application/scim+json' \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
    delete:
      tags:
        - Groups
      summary: Delete a group
      description: |
        This operations removes the group from the ReachFive side.
      operationId: deleteGroup
      parameters:
        - $ref: '#/components/parameters/groupId'
      responses:
        '204':
          description: Successfully removed the group
        '404':
          description: Resource not found.
      x-codeSamples:
        - lang: cURL
          source: |
            curl --request DELETE \
              --url https://YOUR_DOMAIN/scim/v2/Users/{groupId} \
              --header 'Authorization: Bearer eyJ0eX...ll4Q2NT'
  /scim/v2/Bulk:
    post:
      tags:
        - BulkOps
      summary: Perform bulk updates.
      description: >
        Enables clients to send a potentially large collection of resource
        operations in a single request.


        The body of a bulk operation contains a set of HTTP resource operations
        using one of the HTTP methods supported by the API, i.e., `POST`, `PUT`,
        `PATCH`, or `DELETE`.


        <hr>


        Bulk requests are identified using the following schema URI:
        `"urn:ietf:params:scim:api:messages:2.0:BulkRequest"`. 


        Bulk responses are identified using the following URI:
        `"urn:ietf:params:scim:api:messages:2.0:BulkResponse"`.


        Bulk requests and bulk responses share many attributes.


        <hr>


        > **Note**: If a bulk job is processed successfully, HTTP response code
        `200 OK` **must** be returned; otherwise, an appropriate HTTP error code
        must be returned.


        The service provider must continue performing as many changes as
        possible and disregard partial failures. The client may override this
        behavior by specifying a value for the `failOnErrors` attribute. The
        `failOnErrors` attribute defines the number of errors that the service
        provider should accept before failing the remaining operations returning
        the response.


        To be able to reference a newly created resource, the `bulkId` attribute
        may be specified when creating new resources. The `bulkId` is defined by
        the client as a surrogate identifier in a `POST` operation (see [Section
        3.7.2](https://datatracker.ietf.org/doc/html/rfc7644#section-3.7.2)).
        The `bulkId` can then be used by the client to map the service provider
        id with the `bulkId` of the created resource.
      operationId: bulkRequest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulkRequest'
      responses:
        '200':
          description: Successfully performed operations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulkResponse'
        '409':
          description: >-
            Can't resolve circular cross-references between resources in a
            single bulk job.
components:
  parameters:
    resourceTypeName:
      name: name
      in: path
      schema:
        type: string
      description: The name of the resource type.
      example: User
      required: true
    schemaId:
      name: id
      in: path
      schema:
        type: string
      description: The specific schema ID.
      example: urn:ietf:params:scim:schemas:core:2.0:Group
      required: true
    filter:
      name: filter
      in: query
      schema:
        type: string
      description: >
        Clients may request a subset of resources by specifying the "filter"
        query parameter containing a filter expression.When specified, only
        those resources matching the filter expression will be returned. The
        expression language that is used with the filter parameter supports
        references to attributes and literals.


        Attribute names and attribute operators used in filters are case
        insensitive.


        > For more on filtering with SCIM routes, please see [RFC 7644
        Filtering](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2).
      example: userName eq "john"
    attributes:
      name: attributes
      in: query
      schema:
        type: string
      description: >
        A multi-valued list of strings indicating the names of resource
        attributes to return in the response, overriding the set of attributes
        that would be returned by default. Attribute names must be in standard
        attribute notation ([Section
        3.10](https://datatracker.ietf.org/doc/html/rfc7644#section-3.10)) form.


        > See [Section
        3.9](https://datatracker.ietf.org/doc/html/rfc7644#section-3.9) for
        additional retrieval query parameters.
      example: userName
    excludedAttributes:
      name: excludedAttributes
      in: query
      schema:
        type: string
      description: >
        A multi-valued list of strings indicating the names of resource
        attributes to be removed from the default set of attributes to return.
        This parameter will have no effect on attributes whose schema "returned"
        setting is "always" (see Sections
        [2.2](https://datatracker.ietf.org/doc/html/rfc7644#section-2.2) and
        [7](https://datatracker.ietf.org/doc/html/rfc7644#section-7) of
        [[RFC7643](https://datatracker.ietf.org/doc/html/rfc7643)]).  Attribute
        names must be in standard attribute notation ([Section
        3.10](https://datatracker.ietf.org/doc/html/rfc7644#section-3.10)) form.


        > See [Section
        3.9](https://datatracker.ietf.org/doc/html/rfc7644#section-3.9) for
        additional retrieval query parameters.
      example: givenName
    sortBy:
      name: sortBy
      in: query
      schema:
        type: string
      description: >
        The "sortBy" parameter specifies the attribute whose value will be used
        to order the returned responses. If the "sortBy" ttribute corresponds to
        a singular attribute, resources are sorted according to that attribute's
        value; if it's a multi-valued attribute, resources are sorted by the
        value of the primary attribute (see Section 2.4 of
        [[RFC7643](https://datatracker.ietf.org/doc/html/rfc7643)]), if any, or
        else the first value in the list, if any. If the attribute is complex,
        the attribute name must be a path to a sub-attribute in standard
        attribute notation ([Section
        3.10](https://datatracker.ietf.org/doc/html/rfc7644#section-3.10)),
        e.g., `sortBy=name.givenName`.


        For all attribute types, if there is no data for the specified "sortBy"
        value, they are sorted via the "sortOrder" parameter, i.e., they are
        ordered last if ascending and first if descending.
      example: name.givenName
    sortOrder:
      name: sortOrder
      in: query
      schema:
        type: string
        enum:
          - ascending
          - descending
      description: >
        The order in which the "sortBy" parameter is applied. Allowed values are
        "ascending" and "descending". If a value for "sortBy" is provided and no
        "sortOrder" is specified, "sortOrder" will default to ascending. String
        type attributes are case insensitive by default, unless the attribute
        type is defined as a case-exact string. "sortOrder" must sort according
        to the attribute type; i.e., for case-insensitive attributes, sort the
        result using case-insensitive Unicode alphabetic sort order with no
        specific locale implied, and for case-exact attribute types, sort the
        result using case-sensitive Unicode alphabetic sort order.
      example: ascending
    startIndex:
      name: startIndex
      in: query
      schema:
        type: integer
      description: >
        The 1-based index of the first query result. Values of less than `1` are
        interpreted as `1`.


        > See [Section
        3.4.2.3](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.4)
        for details about Pagination.
      example: 1
    count:
      name: count
      in: query
      schema:
        type: integer
      description: >
        Specifies the desired maximum number of results per page. Negative
        values are as interpreted as `0`.


        > See [Section
        3.4.2.3](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.4)
        for details about Pagination.
      example: 10
    queryGroupName:
      name: attributes
      in: query
      schema:
        type: string
      description: >
        Queries to see if the resource contains a "member" attribute.


        > **Note**: This is one of several query parameters. "member" is used
        for example purposes here.

        > For more on filtering with SCIM routes, please see [RFC 7644
        Filtering](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2).
      example: userName
    userId:
      name: userId
      in: path
      description: The user ID.
      required: true
      schema:
        type: string
        format: uuid
      example: 2819c223-7f76-453a-919d-413861904646
    groupId:
      name: groupId
      in: path
      description: The group ID.
      required: true
      schema:
        type: string
        format: uuid
      example: 2819c223-7f76-453a-919d-413861904646
  schemas:
    Schemas:
      type: object
      required:
        - schemas
      properties:
        schemas:
          type: array
          items:
            type: string
    SchemaExtension:
      type: object
      required:
        - schemas
        - required
      properties:
        schema:
          type: string
          description: |
            The URI of an extended schema.
            This must be equal to the "id" attribute of a "Schema" resource.
        required:
          type: boolean
          description: >
            A Boolean value that specifies whether or not the schema extension
            is required for the resource type.

            If true, a resource of this type must include this schema extension
            and also include any attributes declared as required in this schema
            extension.

            If false, a resource of this type may omit this schema extension.
    Meta:
      type: object
      properties:
        resourceType:
          type: string
          description: The name of the resource type of the resource.
        created:
          type: string
          format: date-time
          description: The "DateTime" that the resource was added to the service provider.
        lastModified:
          type: string
          format: date-time
          description: >-
            The most recent DateTime that the details of this resource were
            updated at the service provider.
        location:
          type: string
          description: The URI of the resource being returned.
        version:
          type: string
          description: The version of the resource being returned.
    ResourceType:
      allOf:
        - $ref: '#/components/schemas/Schemas'
        - type: object
          required:
            - name
            - endpoint
            - schema
          properties:
            id:
              type: string
              description: The resource type's server unique id.
            name:
              type: string
              description: The resource type name.
            description:
              type: string
              description: The resource type's human-readable description.
            endpoint:
              type: string
              description: >-
                The resource type's HTTP-addressable endpoint relative to the
                Base URL of the service provider.
            schema:
              type: string
              description: The resource type's primary/base schema URI
            schemaExtensions:
              type: array
              items:
                $ref: '#/components/schemas/SchemaExtension'
    Attribute:
      type: object
      properties:
        name:
          description: The attribute's name.
        type:
          type: string
          enum:
            - string
            - boolean
            - decimal
            - integer
            - dateTime
            - reference
            - complex
          description: >
            The attribute's data type.  Valid values are "string", "boolean",
            "decimal", "integer", "dateTime", "reference", and "complex".

            When an attribute is of type "complex", there SHOULD be a
            corresponding schema attribute "subAttributes" defined, listing the
            sub-attributes of the attribute.
        subAttributes:
          type: array
          items:
            $ref: '#/components/schemas/Attribute'
          description: >
            When an attribute is of type "complex", "subAttributes" defines a
            set of sub-attributes. "subAttributes" has the same schema
            sub-attributes as "attributes".
        multiValued:
          type: boolean
          description: A Boolean value indicating the attribute's plurality.
        description:
          type: string
          description: |
            The attribute's human-readable description.
            When applicable, service providers must specify the description.
        required:
          type: boolean
          description: >
            A Boolean value that specifies whether or not the attribute is
            required.
        canonicalValues:
          type: string
          description: >
            A collection of suggested canonical values that may be used (e.g.,
            "work" and "home").  In some cases, service providers may choose to
            ignore unsupported values.
        caseExact:
          type: boolean
          description: >
            A Boolean value that specifies whether or not a string attribute is
            case sensitive.

            The server will use case sensitivity when evaluating filters.  For
            attributes that are case exact, the server will preserve case for
            any value submitted.

            If the attribute is case insensitive, the server may alter case for
            a submitted value.

            Case sensitivity also impacts how attribute values may be compared
            against filter values (see [Section 3.4.2.2 of
            [RFC7644]](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2)).
        mutability:
          type: string
          enum:
            - readOnly
            - readWrite
            - immutable
            - writeOnly
          description: >
            A single keyword indicating the circumstances under which the value
            of the attribute can be (re)defined.
        returned:
          type: string
          enum:
            - always
            - never
            - default
            - request
          description: >
            A single keyword that indicates when an attribute and associated
            values are returned in response to a GET request or in response to a
            PUT, POST, or PATCH request.
        uniqueness:
          type: string
          enum:
            - none
            - server
            - global
          description: >
            A single keyword value that specifies how the service provider
            enforces uniqueness of attribute values.

            A server may reject an invalid value based on uniqueness by
            returning HTTP response code 400 (Bad Request).

            A client may enforce uniqueness on the client side to a greater
            degree than the service provider enforces.

            For example, a client could make a value unique while the server has
            uniqueness of "none".
        referenceTypes:
          type: string
          enum:
            - User
            - Group
            - external
            - uri
          description: >
            A multi-valued array of JSON strings that indicate the SCIM resource
            types that may be referenced.
    Schema:
      type: object
      required:
        - id
      properties:
        id:
          description: >
            The unique URI of the schema.

            When applicable, service providers must specify the URI, e.g.,
            "urn:ietf:params:scim:schemas:core:2.0:User".

            Unlike most other schemas, which use some sort of Globally Unique
            Identifier (GUID) for the "id", the schema "id" is a URI so that it
            can be registered and is portable between different service
            providers and clients.
        name:
          description: >
            The schema's human-readable name.

            When applicable, service providers must specify the name, e.g.,
            "User" or "Group".
        description:
          description: |
            The schema's human-readable description.
            When applicable, service providers must specify the description.
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/Attribute'
          description: >
            A complex type that defines service provider attributes and their
            qualities via the following set of sub-attributes:
    ListResponse:
      allOf:
        - $ref: '#/components/schemas/Schemas'
        - type: object
          properties:
            totalResults:
              type: integer
              description: The total number of results returned by the list.
            itemsPerPage:
              type: integer
              description: The number of resources returned in a list response page.
            startIndex:
              type: integer
              description: >-
                The 1-based index of the first result in the current set of list
                results.
            resources:
              type: array
              items:
                type: object
      default:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
    ServiceProviderConfig:
      type: object
      required:
        - patch
        - bulk
        - filter
        - changePassword
        - sort
        - etag
        - authenticationSchemes
      properties:
        documentationUri:
          type: string
          description: >-
            An HTTP-addressable URL pointing to the service provider's
            human-consumable help documentation.
        patch:
          type: object
          required:
            - supported
          description: >
            A complex type that specifies PATCH configuration options.

            See [Section 3.5.2 of
            [RFC7644]](https://datatracker.ietf.org/doc/html/rfc7644#section-3.5.2).
          properties:
            supported:
              type: boolean
              description: >-
                A Boolean value specifying whether or not the operation is
                supported.
        bulk:
          type: object
          required:
            - supported
            - maxOperations
            - maxPayloadSize
          description: >
            A complex type that specifies bulk configuration options.

            See [Section 3.7 of
            [RFC7644]](https://datatracker.ietf.org/doc/html/rfc7644#section-3.7).
          properties:
            supported:
              type: boolean
              description: >-
                A Boolean value specifying whether or not the operation is
                supported.
            maxOperations:
              type: integer
              description: An integer value specifying the maximum number of operations.
            maxPayloadSize:
              type: integer
              description: An integer value specifying the maximum payload size in bytes.
        filter:
          type: object
          required:
            - supported
            - maxResults
          description: >
            A complex type that specifies FILTER options.

            See [Section 3.4.2.2 of
            [RFC7644]](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2).
          properties:
            supported:
              type: boolean
              description: >-
                A Boolean value specifying whether or not the operation is
                supported.
            maxResults:
              type: integer
              description: >-
                An integer value specifying the maximum number of resources
                returned in a response.
        changePassword:
          type: object
          required:
            - supported
          description: >-
            A complex type that specifies configuration options related to
            changing a password.
          properties:
            supported:
              type: boolean
              description: >-
                A Boolean value specifying whether or not the operation is
                supported.
        sort:
          type: object
          required:
            - supported
          description: A complex type that specifies Sort configuration options.
          properties:
            supported:
              type: boolean
              description: A Boolean value specifying whether or not sorting is supported.
        etag:
          type: object
          required:
            - supported
          description: A complex type that specifies ETag configuration options.
          properties:
            supported:
              type: boolean
              description: >-
                A Boolean value specifying whether or not the operation is
                supported.
        authenticationSchemes:
          type: array
          description: >
            A multi-valued complex type that specifies supported authentication
            scheme properties.

            To enable seamless discovery of configurations, the service provider
            SHOULD, with the appropriate security considerations, make the
            authenticationSchemes attribute publicly accessible without prior
            authentication.
          items:
            type: object
            required:
              - type
              - name
              - description
            properties:
              type:
                type: string
                description: >
                  The authentication scheme.

                  This specification defines the values "oauth", "oauth2",
                  "oauthbearertoken", "httpbasic", and "httpdigest".
              name:
                type: string
                description: The common authentication scheme name, e.g., HTTP Basic.
              description:
                type: string
                description: A description of the authentication scheme.
              specUri:
                type: string
                description: >-
                  An HTTP-addressable URL pointing to the authentication
                  scheme's specification.
              documentationUri:
                type: string
                description: >-
                  An HTTP-addressable URL pointing to the authentication
                  scheme's usage documentation.
    serviceProviderConfigResponse:
      allOf:
        - $ref: '#/components/schemas/ServiceProviderConfig'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig
        documentationUri: http://example.com/help/scim.html
        patch:
          supported: true
        bulk:
          supported: true
          maxOperations: 1000
          maxPayloadSize: 1048576
        filter:
          supported: true
          maxResults: 200
        changePassword:
          supported: true
        sort:
          supported: true
        etag:
          supported: true
        authenticationSchemes:
          - name: OAuth Bearer Token
            description: Authentication scheme using the OAuth Bearer Token Standard
            specUri: http://www.rfc-editor.org/info/rfc6750
            documentationUri: http://example.com/help/oauth.html
            type: oauthbearertoken
            primary: true
          - name: HTTP Basic
            description: Authentication scheme using the HTTP Basic Standard
            specUri: http://www.rfc-editor.org/info/rfc2617
            documentationUri: http://example.com/help/httpBasic.html
            type: httpbasic
        meta:
          location: https://example.com/v2/ServiceProviderConfig
          resourceType: ServiceProviderConfig
          created: '2010-01-23T04:56:22Z'
          lastModified: '2011-05-13T04:42:34Z'
    CommonAttributes:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: >-
            A unique identifier for a SCIM resource as defined by the service
            provider.
        externalId:
          type: string
          description: >-
            A String that is an identifier for the resource as defined by the
            provisioning client.
    User:
      allOf:
        - $ref: '#/components/schemas/Schemas'
        - $ref: '#/components/schemas/CommonAttributes'
        - type: object
          required:
            - userName
          properties:
            userName:
              type: string
              description: >-
                A service provider's unique identifier for the user, typically
                used by the user to directly authenticate to the service
                provider.
            name:
              $ref: '#/components/schemas/name'
            displayName:
              type: string
              description: The name of the user, suitable for display to end-users.
            nickName:
              type: string
              description: >-
                The casual way to address the user in real life, e.g., "Bob" or
                "Bobby" instead of "Robert".
            profileUrl:
              type: string
              description: >-
                A URI that is a uniform resource locator (as defined in Section
                1.1.3 of [RFC3986]) and that points to a location representing
                the user's online profile (e.g., a web page).  URIs are
                canonicalized per Section 6.2 of [RFC3986].
            title:
              type: string
              description: The user's title, such as "Vice President".
            userType:
              type: string
              description: >-
                Used to identify the relationship between the organization and
                the user. Typical values used might be "Contractor", "Employee",
                "Intern", "Temp", "External", and "Unknown", but any value may
                be used.
            preferredLanguage:
              type: string
              description: >-
                Indicates the user's preferred written or spoken languages and
                is generally used for selecting a localized user interface. The
                value indicates the set of natural languages that are preferred.
                The format of the value is the same as the HTTP Accept-Language
                header field (not including "Accept-Language:") and is specified
                in Section 5.3.5 of [RFC7231].
            locale:
              type: string
              description: >-
                Used to indicate the User's default location for purposes of
                localizing such items as currency, date time format, or
                numerical representations.A valid value is a language tag as
                defined in [RFC5646].
            timezone:
              type: string
              description: >-
                The User's time zone, in IANA Time Zone database format
                [RFC6557], also known as the "Olson" time zone database format
                [Olson-TZ] (e.g., "America/Los_Angeles").
            active:
              type: boolean
              description: A Boolean value indicating the user's administrative status.
            emails:
              type: array
              description: Email addresses for the User.
              items:
                $ref: '#/components/schemas/MultiValuedAttributes'
            phoneNumbers:
              type: array
              description: Phone numbers for the user.
              items:
                $ref: '#/components/schemas/MultiValuedAttributes'
            ims:
              type: array
              description: Instant messaging address for the user.
              items:
                $ref: '#/components/schemas/MultiValuedAttributes'
            photos:
              type: array
              description: >-
                A URI that is a uniform resource locator (as defined in Section
                1.1.3 of [RFC3986]) that points to a resource location
                representing the user's image.
              items:
                $ref: '#/components/schemas/MultiValuedAttributes'
            addresses:
              type: object
              description: A physical mailing address for this user.
              properties:
                formatted:
                  type: string
                  description: >-
                    The full mailing address, formatted for display or use with
                    a mailing label.  This attribute may contain newlines.
                streetAddress:
                  type: string
                  description: >-
                    The full street address component, which may include house
                    number, street name, P.O. box, and multi-line extended
                    street address information. This attribute may contain
                    newlines.
                locality:
                  type: string
                  description: The city or locality component.
                region:
                  type: string
                  description: The state or region component.
                postalCode:
                  type: string
                  description: The zip code or postal code component.
                country:
                  type: string
                  description: >-
                    The country name component.When specified, the value must be
                    in ISO 3166-1 "alpha-2" code format [ISO3166]; e.g., the
                    United States and Sweden are "US" and "SE", respectively.
            groups:
              type: array
              description: >-
                A list of groups to which the user belongs, either through
                direct membership, through nested groups, or dynamically
                calculated.
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  $ref:
                    type: string
                    description: >-
                      the URI of the corresponding "Group" resources to which
                      the user belongs
            entitlements:
              type: string
              description: >-
                A list of entitlements for the user that represent a thing the
                user has.
            roles:
              type: string
              description: >-
                A list of roles for the user that collectively represent who the
                user is, e.g., "Student", "Faculty".  No vocabulary or syntax is
                specified, although it is expected that a role value is a String
                or label representing a collection of entitlements. This value
                has no canonical types.
            x509Certificates:
              type: string
              description: >-
                A list of certificates associated with the resource (e.g., a
                User).Each value contains exactly one DER-encoded X.509
                certificate (see [Section 4 of
                [RFC5280]](https://datatracker.ietf.org/doc/html/rfc5280#section-4)),
                which must be base64 encoded per Section 4 of [RFC4648].
    name:
      type: object
      description: The components of the user's name.
      properties:
        formatted:
          type: string
          description: The full formatted name of the User.
          example: Ms. Barbara Jane Jensen, III
        familyName:
          type: string
          description: The family name (surname, last name) of the User.
          example: Jensen
        givenName:
          type: string
          description: The first name of the User.
          example: Barbara
        middleName:
          type: string
          description: The middle name(s) of the User.
          example: Jane
        honorificPrefix:
          type: string
          description: >-
            The honorific prefix(es) of the User, or title in most Western
            languages.
          example: Ms.
        honorificSuffix:
          type: string
          description: >-
            The honorific suffix(es) of the User, or suffix in most Western
            languages.
          example: III
    MultiValuedAttributes:
      type: object
      properties:
        value:
          type: string
          description: The value.
        type:
          type: string
          description: Indicates the email type such as "work" or "personal".
        primary:
          type: boolean
          description: Indicates the preferred value for this attribute
          default: false
    Group:
      allOf:
        - $ref: '#/components/schemas/Schemas'
        - $ref: '#/components/schemas/CommonAttributes'
        - type: object
          required:
            - displayName
          properties:
            displayName:
              type: string
              description: A human-readable name for the Group.
            members:
              type: array
              description: A list of members of the Group.
              items:
                type: object
                properties:
                  value:
                    type: string
                    description: Value of an "id" attribute of a SCIM resource
                  $ref:
                    description: The URI of a SCIM resource such as a "User", or a "Group"
    PatchRequest:
      allOf:
        - $ref: '#/components/schemas/Schemas'
        - type: object
          required:
            - Operations
          properties:
            Operations:
              type: array
              description: An array of one or more PATCH operations.
              items:
                type: object
                required:
                  - op
                properties:
                  op:
                    type: string
                    enum:
                      - add
                      - replace
                      - remove
                    description: The operation to perform.
                  path:
                    type: string
                    description: >-
                      The JSON Patch [RFC6902] describing the target of the
                      operation.
                  value:
                    oneOf:
                      - type: integer
                      - type: number
                      - type: string
                      - type: boolean
                      - type: array
                      - type: object
                    description: The value to be added or replaced.
    BulkRequest:
      allOf:
        - $ref: '#/components/schemas/Schemas'
        - type: object
          required:
            - Operations
          properties:
            failOnErrors:
              type: boolean
              description: >-
                An integer specifying the number of errors that the service
                provider will accept before the operation is terminated and an
                error response is returned.
            Operations:
              type: array
              description: >-
                Defines operations within a bulk job. Each operation corresponds
                to a single HTTP request against a resource endpoint.
              items:
                type: object
                required:
                  - method
                  - path
                properties:
                  method:
                    type: string
                    enum:
                      - POST
                      - PUT
                      - PATCH
                      - DELETE
                    description: The HTTP method of the current operation.
                  bulkId:
                    type: string
                    description: >
                      The transient identifier of a newly created resource,
                      unique within a bulk request and created by the client.
                      The bulkId serves as a surrogate resource id enabling
                      clients to uniquely identify newly created resources in
                      the response and cross-reference new resources in and
                      across operations within a bulk request.

                      REQUIRED when "method" is "POST".
                  path:
                    type: string
                    description: >
                      The resource's relative path to the SCIM service
                      provider's root. 

                      If "method" is "POST", the value must specify a resource
                      type endpoint, e.g., /Users or /Groups, whereas all other
                      "method" values must specify the path to a specific
                      resource, e.g.,
                      `/Users/2819c223-7f76-453a-919d-413861904646`.
                  data:
                    type: string
                    description: >
                      The resource data as it would appear for a single SCIM
                      POST, PUT, or PATCH operation.

                      REQUIRED in a request when "method" is "POST", "PUT", or
                      "PATCH".
    BulkResponse:
      allOf:
        - $ref: '#/components/schemas/Schemas'
        - type: object
          required:
            - Operations
          properties:
            failOnErrors:
              type: boolean
              description: >-
                An integer specifying the number of errors that the service
                provider will accept before the operation is terminated and an
                error response is returned.
            Operations:
              type: array
              description: >-
                Defines operations within a bulk job. Each operation corresponds
                to a single HTTP request against a resource endpoint.
              items:
                type: object
                required:
                  - method
                  - path
                properties:
                  method:
                    type: string
                    enum:
                      - POST
                      - PUT
                      - PATCH
                      - DELETE
                    description: The HTTP method of the current operation.
                  bulkId:
                    type: string
                    description: >
                      The transient identifier of a newly created resource,
                      unique within a bulk request and created by the client.
                      The bulkId serves as a surrogate resource id enabling
                      clients to uniquely identify newly created resources in
                      the response and cross-reference new resources in and
                      across operations within a bulk request.

                      REQUIRED when "method" is "POST".
                  version:
                    type: string
                    description: >
                      The current resource version. Version may be used if the
                      service provider supports entity-tags (ETags) ([Section
                      2.3 of
                      [RFC7232]](https://datatracker.ietf.org/doc/html/rfc7232#section-2.3))
                      and "method" is "PUT", "PATCH", or "DELETE".
                  path:
                    type: string
                    description: >
                      The resource's relative path to the SCIM service
                      provider's root. 

                      If "method" is "POST", the value must specify a resource
                      type endpoint, e.g., /Users or /Groups, whereas all other
                      "method" values must specify the path to a specific
                      resource, e.g.,
                      `/Users/2819c223-7f76-453a-919d-413861904646`.
                  data:
                    type: string
                    description: >
                      The resource data as it would appear for a single SCIM
                      POST, PUT, or PATCH operation.

                      REQUIRED in a request when "method" is "POST", "PUT", or
                      "PATCH".
                  location:
                    type: string
                    description: >
                      The resource endpoint URL.

                      REQUIRED in a response, except in the event of a POST
                      failure.
                  response:
                    type: string
                    description: >
                      The HTTP response body for the specified request
                      operation.

                      When indicating a response with an HTTP status other than
                      a 200-series response, the response body must be included.

                      For normal completion, the server may elect to omit the
                      response body.
                  status:
                    type: string
                    description: >
                      The HTTP response status code for the requested operation.

                      When indicating an error, the "response" attribute must
                      contain the detail error response as per [Section
                      3.12](https://datatracker.ietf.org/doc/html/rfc7644#section-3.12).
    resourceTypeListResponse:
      type: array
      items:
        $ref: '#/components/schemas/ResourceType'
      example:
        - schemas:
            - urn:ietf:params:scim:schemas:core:2.0:ResourceType
          id: User
          name: User
          endpoint: /Users
          description: User Account
          schema: urn:ietf:params:scim:schemas:core:2.0:User
          schemaExtensions:
            - schema: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
              required: true
          meta:
            location: https://example.com/v2/ResourceTypes/User
            resourceType: ResourceType
        - schemas:
            - urn:ietf:params:scim:schemas:core:2.0:ResourceType
          id: Group
          name: Group
          endpoint: /Groups
          description: Group
          schema: urn:ietf:params:scim:schemas:core:2.0:Group
          meta:
            location: https://example.com/v2/ResourceTypes/Group
            resourceType: ResourceType
    resourceTypeResponse:
      allOf:
        - $ref: '#/components/schemas/ResourceType'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:ResourceType
        id: User
        name: User
        endpoint: /Users
        description: User
        schema: urn:ietf:params:scim:schemas:core:2.0:User
        schemaExtensions:
          - schema: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
            required: true
        meta:
          location: https://example.com/v2/ResourceTypes/User
          resourceType: ResourceType
    schemaListResponse:
      allOf:
        - $ref: '#/components/schemas/ListResponse'
        - type: object
          properties:
            resources:
              type: array
              items:
                allOf:
                  - $ref: '#/components/schemas/ResourceType'
                  - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults: 2
        itemsPerPage: 10
        description: 1
        resources:
          - schemas:
              - urn:ietf:params:scim:schemas:core:2.0:ResourceType
            id: User
            name: User
            endpoint: /Users
            description: User
            schema: urn:ietf:params:scim:schemas:core:2.0:User
            schemaExtensions:
              - schema: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
                required: true
            meta:
              location: https://example.com/v2/ResourceTypes/User
              resourceType: ResourceType
          - schemas:
              - urn:ietf:params:scim:schemas:core:2.0:ResourceType
            id: Group
            name: Group
            endpoint: /Groups
            description: Group
            schema: urn:ietf:params:scim:schemas:core:2.0:Group
            meta:
              location: https://example.com/v2/ResourceTypes/Group
              resourceType: ResourceType
    schemaResponse:
      allOf:
        - $ref: '#/components/schemas/Schema'
        - $ref: '#/components/schemas/Meta'
      example:
        id: urn:ietf:params:scim:schemas:core:2.0:Group
        name: Group
        description: Group
        attributes:
          - name: displayName
            type: string
            multiValued: false
            required: false
            caseExact: false
            mutability: readWrite
            returned: default
            uniqueness: none
          - name: members
            type: complex
            multiValued: true
            required: false
            mutability: readWrite
            returned: default
            subAttributes:
              - name: value
                type: string
                multiValued: false
                required: false
                caseExact: false
                mutability: immutable
                returned: default
                uniqueness: none
              - name: $ref
                type: reference
                referenceTypes:
                  - User
                  - Group
                multiValued: false
                required: false
                caseExact: false
                mutability: immutable
                returned: default
                uniqueness: none
              - name: type
                type: string
                multiValued: false
                required: false
                caseExact: false
                canonicalValues:
                  - User
                  - Group
                mutability: immutable
                returned: default
                uniqueness: none
        meta:
          resourceType: Schema
          location: >-
            https://example.com/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group
    queryUserResponse:
      allOf:
        - $ref: '#/components/schemas/ListResponse'
        - type: object
          properties:
            resources:
              type: array
              items:
                allOf:
                  - $ref: '#/components/schemas/User'
      example:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults: 2
        itemsPerPage: 10
        description: 1
        resources:
          - schemas:
              - urn:ietf:params:scim:schemas:core:2.0:User
            id: 2819c223-7f76-453a-919d-413861904646
            userName: bjensen
          - schemas:
              - urn:ietf:params:scim:schemas:core:2.0:User
            id: c75ad752-64ae-4823-840d-ffa80929976c
            userName: jsmith
    getUserResponse:
      allOf:
        - $ref: '#/components/schemas/User'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        id: 2819c223-7f76-453a-919d-413861904646
        externalId: bjensen
        meta:
          resourceType: User
          created: '2011-08-01T18:29:49.793Z'
          lastModified: '2011-08-01T18:29:49.793Z'
          location": https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646
        name:
          formatted: Ms. Barbara J Jensen III
          familyName: Jensen
          givenName: Barbara
        userName: bjensen
        phoneNumbers:
          value: 555-555-8377
          type: work
        emails:
          value: bjensen@example.com
          type: work
    createUserRequest:
      allOf:
        - $ref: '#/components/schemas/User'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        externalId: bjensen
        name:
          formatted: Ms. Barbara J Jensen III
          familyName: Jensen
          givenName: Barbara
        userName: bjensen
        emails:
          value: bjensen@example.com
          type: work
          primary: true
    createUserResponse:
      allOf:
        - $ref: '#/components/schemas/User'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        id: 2819c223-7f76-453a-919d-413861904646
        externalId: bjensen
        name:
          formatted: Ms. Barbara J Jensen III
          familyName: Jensen
          givenName: Barbara
        userName: bjensen
        emails:
          value: bjensen@example.com
          type: work
          primary: true
        meta:
          resourceType: User
          created: '2011-08-01T21:32:44.882Z'
          lastModified: '2011-08-01T21:32:44.882Z'
          location: https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646
    patchUserRequest:
      allOf:
        - $ref: '#/components/schemas/PatchRequest'
      example:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:PatchOp
        Operations:
          - op: replace
            path: name.familyName
            value: Jensen
    patchUserResponse:
      allOf:
        - $ref: '#/components/schemas/User'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        id: 2819c223-7f76-453a-919d-413861904646
        externalId: bjensen
        name:
          formatted: Ms. Barbara J Jensen III
          familyName: Jensen
          givenName: Barbara
        userName: bjensen
        emails:
          value: bjensen@example.com
          type: work
          primary: true
        meta:
          resourceType: User
          created: '2011-08-01T21:32:44.882Z'
          lastModified: '2011-08-01T21:32:44.882Z'
          location: https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646
    updateUserRequest:
      allOf:
        - $ref: '#/components/schemas/User'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        id: 2819c223-7f76-453a-919d-413861904646
        externalId: bjensen
        name:
          formatted: Ms. Barbara J Jensen III
          familyName: Jensen
          givenName: Barbara
        userName: bjensen
        emails:
          value: bjensen@example.com
          type: work
          primary: true
    updateUserResponse:
      allOf:
        - $ref: '#/components/schemas/User'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        id: 2819c223-7f76-453a-919d-413861904646
        externalId: bjensen
        name:
          formatted: Ms. Barbara J Jensen III
          familyName: Jensen
          givenName: Barbara
        userName: bjensen
        emails:
          value: bjensen@example.com
          type: work
          primary: true
        meta:
          resourceType: User
          created: '2011-08-01T21:32:44.882Z'
          lastModified: '2011-08-01T21:32:44.882Z'
          location: https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646
    queryGroupResponse:
      allOf:
        - $ref: '#/components/schemas/ListResponse'
        - type: object
          properties:
            resources:
              type: array
              items:
                allOf:
                  - $ref: '#/components/schemas/Group'
      example:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults: 2
        itemsPerPage: 10
        description: 1
        resources:
          - schemas:
              - urn:ietf:params:scim:schemas:core:2.0:Group
            id: c3a26dd3-27a0-4dec-a2ac-ce211e105f97
            displayName: groupA
            members:
              - value: 92b725cd-9465-4e7d-8c16-01f8e146b87a
                ref: >-
                  https://example.com/v2/Users/92b725cd-9465-4e7d-8c16-01f8e146b87a
                type: User
            meta:
              resourceType: Group
              created: '2011-08-01T18:29:49.793Z'
              lastModified: '2011-08-01T20:31:02.315Z'
              location: >-
                https://example.com/v2/Groups/ec3a26dd3-27a0-4dec-a2ac-ce211e105f97
          - schemas:
              - urn:ietf:params:scim:schemas:core:2.0:Group
            id: 6c5bb468-14b2-4183-baf2-06d523e03bd3
            displayName: groupB
            members:
              - value: c3a26dd3-27a0-4dec-a2ac-ce211e105f97
                ref: >-
                  https://example.com/v2/Groups/c3a26dd3-27a0-4dec-a2ac-ce211e105f97
                type: Group
            meta:
              resourceType: Group
              created: '2011-08-01T18:29:50.873Z'
              lastModified: '2011-08-01T18:29:50.873Z'
              location: >-
                https://example.com/v2/Groups/6c5bb468-14b2-4183-baf2-06d523e03bd3
    createGroupRequest:
      allOf:
        - $ref: '#/components/schemas/Group'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        displayName: Tour Guides
        members:
          - value: 92b725cd-9465-4e7d-8c16-01f8e146b87a
            type: User
    createGroupResponse:
      allOf:
        - $ref: '#/components/schemas/Group'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        id: e9e30dba-f08f-4109-8486-d5c6a331660a
        displayName: Tour Guides
        members:
          - value: 92b725cd-9465-4e7d-8c16-01f8e146b87a
            ref: https://example.com/v2/Users/92b725cd-9465-4e7d-8c16-01f8e146b87a
            type: User
        meta:
          resourceType: Group
          created: '2011-08-01T18:29:49.793Z'
          lastModified: '2011-08-01T20:31:02.315Z'
          location: https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a
    getGroupResponse:
      allOf:
        - $ref: '#/components/schemas/Group'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        id: 2819c223-7f76-453a-919d-413861904646
        displayName: Tour Guides
        members:
          - value: 92b725cd-9465-4e7d-8c16-01f8e146b87a
            ref: https://example.com/v2/Users/92b725cd-9465-4e7d-8c16-01f8e146b87a
            type: User
        meta:
          resourceType: Group
          created: '2011-08-01T18:29:49.793Z'
          lastModified: '2011-08-01T20:31:02.315Z'
          location: https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a
    patchGroupRequest:
      allOf:
        - $ref: '#/components/schemas/PatchRequest'
      example:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:PatchOp
        Operations:
          - op: add
            path: members
            value:
              - display: Babs Jensen
                ref: >-
                  https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646
                value: 2819c223-7f76-453a-919d-413861904646
    patchGroupResponse:
      allOf:
        - $ref: '#/components/schemas/Group'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        id: 2819c223-7f76-453a-919d-413861904646
        displayName: Tour Guides
        members:
          - value: 92b725cd-9465-4e7d-8c16-01f8e146b87a
            ref: https://example.com/v2/Users/92b725cd-9465-4e7d-8c16-01f8e146b87a
            type: User
          - value: 2819c223-7f76-453a-919d-413861904646
            ref: https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646
            type: User
        meta:
          resourceType: Group
          created: '2011-08-01T18:29:49.793Z'
          lastModified: '2011-08-01T20:31:02.315Z'
          location: https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a
    updateGroupRequest:
      allOf:
        - $ref: '#/components/schemas/Group'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        id: 2819c223-7f76-453a-919d-413861904646
        displayName: Tour Guides
        members:
          - value: 92b725cd-9465-4e7d-8c16-01f8e146b87a
            type: User
    updateGroupResponse:
      allOf:
        - $ref: '#/components/schemas/Group'
        - $ref: '#/components/schemas/Meta'
      example:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        id: 2819c223-7f76-453a-919d-413861904646
        displayName: Tour Guides
        members:
          - value: 92b725cd-9465-4e7d-8c16-01f8e146b87a
            ref: https://example.com/v2/Users/92b725cd-9465-4e7d-8c16-01f8e146b87a
            type: User
        meta:
          resourceType: Group
          created: '2011-08-01T18:29:49.793Z'
          lastModified: '2011-08-01T20:31:02.315Z'
          location: https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a
    bulkRequest:
      allOf:
        - $ref: '#/components/schemas/BulkRequest'
      example:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:BulkRequest
        failOnErrors: 1
        Operations:
          - method: POST
            path: /Users
            bulkId: qwerty
            data:
              schemas:
                - urn:ietf:params:scim:api:messages:2.0:User
              userName: Alice
          - method: POST
            path: /Groups
            bulkId: ytrewq
            data:
              schemas:
                - urn:ietf:params:scim:schemas:core:2.0:Group
              displayName: Tour Guides
              members:
                - type: User
                  value: bulkId:qwerty
          - method: PUT
            path: /Users/b7c14771-226c-4d05-8860-134711653041
            data:
              schemas:
                - urn:ietf:params:scim:schemas:core:2.0:User
              id: b7c14771-226c-4d05-8860-134711653041
              userName: Bob
          - method: PATCH
            path: /Users/5d8d29d3-342c-4b5f-8683-a3cb6763ffcc
            data:
              schemas:
                - urn:ietf:params:scim:api:messages:2.0:PatchOp
              Operations:
                - op: remove
                  path: nickName
                - op: add
                  path: userName
                  value: Dave
          - method: DELETE
            path: /Users/e9025315-6bea-44e1-899c-1e07454e468b
    bulkResponse:
      allOf:
        - $ref: '#/components/schemas/BulkResponse'
      example:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:BulkResponse
        Operations:
          - location: https://example.com/v2/Users/92b725cd-9465-4e7d-8c16-01f8e146b87a
            method: POST
            bulkId: qwerty
            status: '201'
          - location: https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a
            method: POST
            bulkId: ytrewq
            status: '201'
          - location: https://example.com/v2/Users/b7c14771-226c-4d05-8860-134711653041
            method: PUT
            status: '200'
          - location: https://example.com/v2/Users/5d8d29d3-342c-4b5f-8683-a3cb6763ffcc
            method: PATCH
            status: '200'
          - location: https://example.com/v2/Users/e9025315-6bea-44e1-899c-1e07454e468b
            method: DELETE
            status: '204'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
