Vyond SCIM API

SCIM 2.0 APIs

OpenAPI Specification

vyond-scim-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vyond API Documentation SCIM API
  version: 1.1.0
  description: 'SCIM 2.0 APIs

    '
tags:
- name: SCIM
  description: 'SCIM 2.0 APIs

    '
paths:
  /scim/v2/Users:
    get:
      operationId: ScimController.getUsers
      parameters:
      - in: query
        name: startIndex
        schema:
          minimum: 1
          type: integer
          description: Index of the first items in the list to return (1 indexed).
      - in: query
        name: count
        schema:
          minimum: 0
          type: integer
          description: Number of items to return.
      - in: query
        name: filter
        schema:
          type: string
          description: Filter to narrow down the list of items.
      responses:
        '200':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimUserList'
          description: Pagination information and users
        '400':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Bad Request - invalid filter or pagination parameters. reason contains the invalid
            filter message
        '401':
          description: Unauthorized - missing or invalid credentials
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden - you do not have permission to access this resource
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal Server Error - unexpected error while retrieving users
      summary: Get users
      tags:
      - SCIM
      security:
      - bearer: []
      description: Get users in the account with optional filter and pagination
    post:
      operationId: ScimController.createUser
      requestBody:
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/ScimUser'
        description: ScimUser
        required: false
      responses:
        '201':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimUserWithMeta'
          description: User information
        '400':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Bad Request - userName must equal email address. reason contains the validation
            message
        '401':
          description: Unauthorized - missing or invalid credentials
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Forbidden - SSO not enabled, unsupported country, or insufficient team seats. reason
            contains the specific reason
        '409':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Conflict - email or username already registered. scimType is uniqueness, reason
            contains the conflict message
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal Server Error - unexpected error while creating user
      summary: Create user
      tags:
      - SCIM
      security:
      - bearer: []
      description: Create a new user in the account
  /scim/v2/Users/{userId}:
    get:
      operationId: ScimController.getUser
      parameters:
      - in: path
        name: userId
        required: true
        schema:
          pattern: '[^\/#\?]+?'
          type: string
      responses:
        '200':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimUserWithMeta'
          description: User information
        '401':
          description: Unauthorized - missing or invalid credentials
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden - you do not have permission to access this resource
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Not Found - user does not exist in the account. reason contains the error message
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal Server Error - unexpected error while retrieving user
      summary: Get user
      tags:
      - SCIM
      security:
      - bearer: []
      description: Get information of user in the account by user ID
    put:
      operationId: ScimController.updateUser
      parameters:
      - in: path
        name: userId
        required: true
        schema:
          pattern: '[^\/#\?]+?'
          type: string
      requestBody:
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/ScimUser'
        description: ScimUser
        required: false
      responses:
        '200':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimUserWithMeta'
          description: User information
        '400':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Bad Request - userName must equal email address. reason contains the validation
            message
        '401':
          description: Unauthorized - missing or invalid credentials
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Forbidden - user does not exist, unsupported country, or insufficient team seats.
            reason contains the specific reason
        '409':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Conflict - email or username already registered. scimType is uniqueness, reason
            contains the conflict message
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal Server Error - unexpected error while updating user
      summary: Update user
      tags:
      - SCIM
      security:
      - bearer: []
      description: Update information of user in the account by user ID
    patch:
      operationId: ScimController.patchUser
      parameters:
      - in: path
        name: userId
        required: true
        schema:
          pattern: '[^\/#\?]+?'
          type: string
      requestBody:
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/ScimPatchOp'
        description: ScimPatchOp
        required: false
      responses:
        '200':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimUserWithMeta'
          description: User information
        '400':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Bad Request - invalid patch operation or attribute value. May include reason, or
            details array when validation fails
        '401':
          description: Unauthorized - missing or invalid credentials
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Forbidden - user does not exist, unsupported country, or insufficient team seats.
            reason contains the specific reason
        '409':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Conflict - email or username already registered. scimType is uniqueness, reason
            contains the conflict message
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal Server Error - unexpected error while patching user
      summary: Patch user
      tags:
      - SCIM
      security:
      - bearer: []
      description: "Update individual attributes of user in the account by user ID. The operation follows\
        \ the [syntax defined in the SCIM specification](https://datatracker.ietf.org/doc/html/rfc7644#section-3.5.2).<br><br>Here\
        \ are some examples:<br><br>**Update userName**<br>The `userName` must be equal to the email address,\
        \ except for special circumstances. Therefore, update both fields together.<br>\n```json\n{\n\
        \    \"schemas\": [\n        \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n    ],\n    \"\
        Operations\": [\n        {\n            \"op\": \"replace\",\n            \"path\": \"userName\"\
        ,\n            \"value\": \"john.doe@example.com\"\n        },\n        {\n            \"op\"\
        : \"replace\",\n            \"path\": \"emails[primary eq true].value\",\n            \"value\"\
        : \"john.doe@example.com\"\n        }\n    ]\n}\n```\n<br>**Deactivate user**<br>To deactivate\
        \ a user, set `active` to `false`.<br>\n```json\n{\n    \"schemas\": [\n        \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\
        \n    ],\n    \"Operations\": [\n        {\n            \"op\": \"replace\",\n            \"path\"\
        : \"active\",\n            \"value\": false\n        }\n    ]\n}\n```\n<br>**Update extended attribute**<br>To\
        \ update an extended attribute, its fully qualified name must be provided.<br>\n```json\n{\n \
        \   \"schemas\": [\n        \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n    ],\n    \"\
        Operations\": [\n        {\n            \"op\": \"replace\",\n            \"path\": \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:organization\"\
        ,\n            \"value\": \"Organization Name\"\n        }\n    ]\n}\n```\n"
  /scim/v2/Schemas:
    get:
      operationId: ScimController.getSchemas
      parameters:
      - in: query
        name: startIndex
        schema:
          minimum: 1
          type: integer
          description: Index of the first items in the list to return (1 indexed).
      - in: query
        name: count
        schema:
          minimum: 0
          type: integer
          description: Number of items to return.
      - in: query
        name: filter
        schema:
          type: string
          description: Filter to narrow down the list of items.
      responses:
        '200':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimSchemaList'
          description: Pagination information and schemas
        '401':
          description: Unauthorized - missing or invalid credentials
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden - you do not have permission to access this resource
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal Server Error - unexpected error while retrieving schemas
      summary: Get schemas
      tags:
      - SCIM
      security:
      - bearer: []
      description: Get SCIM schemas
  /scim/v2/Schemas/{id}:
    get:
      operationId: ScimController.getSchema
      parameters:
      - in: path
        name: id
        required: true
        schema:
          pattern: '[^\/#\?]+?'
          type: string
      responses:
        '200':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimSchemaWithMeta'
          description: Schema information
        '401':
          description: Unauthorized - missing or invalid credentials
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden - you do not have permission to access this resource
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Not Found - schema ID does not exist
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal Server Error - unexpected error while retrieving schema
      summary: Get schema
      tags:
      - SCIM
      security:
      - bearer: []
      description: Get SCIM schema by ID
components:
  schemas:
    ScimPatchOperationObject:
      properties:
        op:
          enum:
          - add
          - remove
          - replace
          type: string
          description: The operation to perform.
        path:
          type: string
          description: The path to target attribute.
        value:
          description: The value to be added/replaced.
      type: object
      required:
      - op
      - value
    ScimPatchOp:
      properties:
        schemas:
          items:
            type: string
          type: array
          description: The URIs of the SCIM schemas.
          example:
          - urn:ietf:params:scim:api:messages:2.0:PatchOp
        Operations:
          items:
            $ref: '#/components/schemas/ScimPatchOperationObject'
          type: array
          description: Patch operations
          example:
          - op: replace
            path: userName
            value: john.doe@example.com
          - op: replace
            path: emails[primary eq true].value
            value: john.doe@example.com
      type: object
      required:
      - schemas
      - Operations
    ScimSchemaList:
      properties:
        Resources:
          items:
            $ref: '#/components/schemas/ScimSchemaWithMeta'
          type: array
          description: List of items
        schemas:
          items:
            type: string
          type: array
          description: The URIs of the SCIM schemas.
          example:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults:
          minimum: 0
          type: integer
          description: Total number of items matching the query.
          example: 1
        startIndex:
          minimum: 1
          type: integer
          description: Index of the first items in the list (1 indexed).
          example: 1
        itemsPerPage:
          minimum: 0
          type: integer
          description: The maximum number of items returned in a query response page.
          example: 100
      type: object
      required:
      - Resources
      - schemas
      - totalResults
      - startIndex
      - itemsPerPage
    ApiErrorResponse:
      properties:
        err:
          type: string
          description: Error code identifying the specific error
        reason:
          type: string
          description: Additional reason describing why the error occurred
        message:
          type: string
          description: Error message, used as an alternative to reason for non-enumerated error messages
        scimType:
          type: string
          description: SCIM error type, present on SCIM 409 Conflict responses (e.g. uniqueness)
        details:
          items:
            $ref: '#/components/schemas/ValidationDetail'
          type: array
          description: Validation error details, present when err is REQUEST_VALIDATION_FAILED
      type: object
      required:
      - err
    ValidationDetail:
      properties:
        property:
          type: string
          description: The property that failed validation
        message:
          items:
            type: string
          type: array
          description: Validation error messages for the property
      type: object
      required:
      - property
      - message
    ScimUserWithMeta:
      properties:
        meta:
          $ref: '#/components/schemas/ScimUserMetaObject'
          type: object
          description: Metadata object.
        id:
          type: string
          description: Vyond user ID.
          example: '{vyondUserId}'
        emails:
          items:
            $ref: '#/components/schemas/ScimEmailObject'
          type: array
          maxItems: 1
          minItems: 1
          description: The components of email. Only one email address is supported for each user. The
            email address must be the same as userName, except for special circumstances.
        addresses:
          items:
            $ref: '#/components/schemas/ScimAddressObject'
          type: array
          maxItems: 1
          minItems: 1
          description: The components of address. Only one address is supported for each user.
        urn:ietf:params:scim:schemas:extension:vyond:1.0:User:
          $ref: '#/components/schemas/ScimVyondUser'
          type: object
        schemas:
          items:
            type: string
          type: array
          description: The URIs of the SCIM schemas.
          example:
          - urn:ietf:params:scim:schemas:core:2.0:User
          - urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
          - urn:ietf:params:scim:schemas:extension:vyond:1.0:User
        externalId:
          type: string
          description: An identifier for the resource as defined by the provisioning client.
          example: '{idpProvidedExternalId}'
        userName:
          minLength: 1
          type: string
          description: The user's username. It must be an email address, except for special circumstances.
          example: john.doe@example.com
        name:
          $ref: '#/components/schemas/ScimNameObject'
          type: object
          description: The components of the user's name.
        active:
          type: boolean
          description: User's administrative status. Setting it to false deactivates the user.
        urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:
          $ref: '#/components/schemas/ScimEnterpriseUser'
          type: object
      type: object
      required:
      - meta
      - id
      - emails
      - addresses
      - urn:ietf:params:scim:schemas:extension:vyond:1.0:User
      - schemas
      - userName
      - name
      - active
      - urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
    ScimUserList:
      properties:
        Resources:
          items:
            $ref: '#/components/schemas/ScimUserWithMeta'
          type: array
          description: List of items
        schemas:
          items:
            type: string
          type: array
          description: The URIs of the SCIM schemas.
          example:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults:
          minimum: 0
          type: integer
          description: Total number of items matching the query.
          example: 1
        startIndex:
          minimum: 1
          type: integer
          description: Index of the first items in the list (1 indexed).
          example: 1
        itemsPerPage:
          minimum: 0
          type: integer
          description: The maximum number of items returned in a query response page.
          example: 100
      type: object
      required:
      - Resources
      - schemas
      - totalResults
      - startIndex
      - itemsPerPage
    ScimVyondUser:
      properties:
        subscription:
          $ref: '#/components/schemas/ScimSubscriptionObject'
          type: object
          description: The components of subscription.
      type: object
      required:
      - subscription
    ScimSchemaWithMeta:
      properties:
        schemas:
          items:
            type: string
          type: array
          description: The URIs of the SCIM schemas.
          example:
          - urn:ietf:params:scim:schemas:core:2.0:Schema
        meta:
          $ref: '#/components/schemas/ScimSchemaMetaObject'
          type: object
          description: Metadata object.
        id:
          type: string
          description: Schema ID.
        name:
          type: string
          description: Name of the schema.
        description:
          type: string
          description: Description of the schema.
        attributes:
          items:
            $ref: '#/components/schemas/ScimSchemaAttribute'
          type: array
          description: Attributes of the schema.
      type: object
      required:
      - schemas
      - meta
      - id
      - name
      - description
      - attributes
    ScimEmailObjectWithOptionalAttributes:
      properties:
        value:
          format: email
          type: string
          description: The email address.
          example: john.doe@example.com
        type:
          enum:
          - work
          type: string
          description: A label indicating the function of the email address. Only "work" is supported.
        primary:
          type: boolean
          description: Whether the email address is primary. Always true.
      type: object
      required:
      - value
    ScimSchemaAttribute:
      properties:
        name:
          type: string
          description: Name of the attribute.
        type:
          enum:
          - string
          - boolean
          - decimal
          - integer
          - dateTime
          - binary
          - reference
          - complex
          type: string
          description: Data type of the attribute.
        multiValued:
          type: boolean
          description: Whether or not the attribute is multi-valued
        description:
          type: string
          description: Description of the attribute.
        required:
          type: boolean
          description: Whether or not the attribute is required.
        caseExact:
          type: boolean
          description: Whether or not a string attribute is case sensitive.
        mutability:
          enum:
          - readOnly
          - readWrite
          - immutable
          - writeOnly
          type: string
          description: Keyword that the mutability of the attribute.
        returned:
          enum:
          - always
          - never
          - default
          - request
          type: string
          description: Keyword that indicates when an attribute is returned in response.
        uniqueness:
          enum:
          - none
          - server
          - global
          type: string
          description: Keyword that indicates how the uniqueness of the attribute is enforced.
        canonicalValues:
          items:
            type: string
          type: array
          description: A set of values that can be used.
        subAttributes:
          items:
            $ref: '#/components/schemas/ScimSchemaAttribute'
          type: array
          description: A set of sub-attributes.
      type: object
      required:
      - name
      - type
      - multiValued
      - description
      - required
      - mutability
      - returned
      - subAttributes
    ScimUser:
      properties:
        emails:
          items:
            $ref: '#/components/schemas/ScimEmailObjectWithOptionalAttributes'
          type: array
          maxItems: 1
          minItems: 1
          description: The components of email. Only one email address is supported for each user. The
            email address must be the same as userName, except for special circumstances.
        addresses:
          items:
            $ref: '#/components/schemas/ScimAddressObjectWithOptionalAttributes'
          type: array
          maxItems: 1
          minItems: 1
          description: The components of address. Only one address is supported for each user.
        urn:ietf:params:scim:schemas:extension:vyond:1.0:User:
          $ref: '#/components/schemas/ScimVyondUserWithOptionalAttributes'
          type: object
        schemas:
          items:
            type: string
          type: array
          description: The URIs of the SCIM schemas.
          example:
          - urn:ietf:params:scim:schemas:core:2.0:User
          - urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
          - urn:ietf:params:scim:schemas:extension:vyond:1.0:User
        externalId:
          type: string
          description: An identifier for the resource as defined by the provisioning client.
          example: '{idpProvidedExternalId}'
        userName:
          minLength: 1
          type: string
          description: The user's username. It must be an email address, except for special circumstances.
          example: john.doe@example.com
        name:
          $ref: '#/components/schemas/ScimNameObject'
          type: object
          description: The components of the user's name.
        active:
          type: boolean
          description: User's administrative status. Setting it to false deactivates the user.
        urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:
          $ref: '#/components/schemas/ScimEnterpriseUser'
          type: object
      type: object
      required:
      - emails
      - addresses
      - schemas
      - userName
      - name
      - active
      - urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
    ScimAddressObjectWithOptionalAttributes:
      properties:
        country:
          type: string
          description: The country code in ISO31661 Alpha2 format.
          example: US
        type:
          enum:
          - work
          type: string
          description: A label indicating the function of the address. Only "work" is supported.
        primary:
          type: boolean
          description: Whether the address is primary. Always true.
      type: object
      required:
      - country
    ScimAddressObject:
      properties:
        country:
          type: string
          description: The country code in ISO31661 Alpha2 format.
          example: US
        type:
          enum:
          - work
          type: string
          description: A label indicating the function of the address. Only "work" is supported.
        primary:
          type: boolean
          description: Whether the address is primary. Always true.
      type: object
      required:
      - country
      - type
      - primary
    ScimEmailObject:
      properties:
        value:
          format: email
          type: string
          description: The email address.
          example: john.doe@example.com
        type:
          enum:
          - work
          type: string
          description: A label indicating the function of the email address. Only "work" is supported.
        primary:
          type: boolean
          description: Whether the email address is primary. Always true.
      type: object
      required:
      - value
      - type
      - primary
    ScimSubscriptionObject:
      properties:
        value:
          minLength: 1
          type: string
          description: Vyond subscription ID.
          example: '{vyondSubscriptionId}'
      type: object
      required:
      - value
    ScimNameObject:
      properties:
        givenName:
          minLength: 1
          type: string
          description: The user's first name.
          example: John
        familyName:
          minLength: 1
          type: string
          description: The user's last name.
          example: Doe
      type: object
      required:
      - givenName
      - familyName
    ScimEnterpriseUser:
      properties:
        organization:
          minLength: 1
          type: string
          description: Organization to which the user belongs.
          example: Organization Name
      type: object
      required:
      - organization
    ScimUserMetaObject:
      properties:
        resourceType:
          type: string
          enum:
          - User
          description: Resource type
        created:
          pattern: \d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d.\d+Z?
          type: string
          description: Creation time
          example: '2024-09-24T04:19:34.928Z'
      type: object
      required:
      - resourceType
      - created
    ScimVyondUserWithOptionalAttributes:
      properties:
        subscription:
          $ref: '#/components/schemas/ScimSubscriptionObject'
          type: object
          description: The components of subscription.
      type: object
    ScimSchemaMetaObject:
      properties:
        resourceType:
          type: string
          enum:
          - Schema
          description: Resource type
      type: object
      required:
      - resourceType
  securitySchemes:
    bearer:
      type: http
      scheme: bearer