DataStax SCIM API

SCIM 2.0 endpoints for user and group provisioning and management.

OpenAPI Specification

datastax-scim-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  description: Use this REST API to manage your DataStax Astra DB organizations and perform lifecycle actions for your Astra DB databases.</br> </br> To get started, use the /v2/clientIdSecrets endpoints to create a token to authenticate your API calls.
  version: 2.3.0
  title: Astra DevOps Access List SCIM API
  contact:
    email: ad-astra@datastax.com
servers:
- url: https://api.astra.datastax.com/
security:
- BearerAuth:
  - org-admin
  - org-db-create
  - org-db-terminate
  - org-db-view
  - org-db-expand
  - org-db-suspend
  - org-db-addpeering
  - org-db-readpeering
  - db-keyspace-create
  - db-cql
  - accesslist-write
  - accesslist-read
  - db-manage-privateendpoint
  - db-manage-telemetry
  - db-manage-backupconfiguration
tags:
- name: SCIM
  description: SCIM 2.0 endpoints for user and group provisioning and management.
paths:
  /v2/scim/ServiceProviderConfig:
    get:
      tags:
      - SCIM
      summary: Get SCIM Service Provider Configuration
      description: Returns the SCIM 2.0 service provider configuration, including supported features and authentication schemes.
      operationId: getSCIMServiceProviderConfig
      responses:
        '200':
          description: successful operation
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMServiceProviderConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/ServerError'
  /v2/scim/Schemas:
    get:
      tags:
      - SCIM
      summary: Get SCIM Schemas
      description: Returns the list of SCIM 2.0 schemas supported by this service provider.
      operationId: getSCIMSchemas
      responses:
        '200':
          description: successful operation
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMSchemasListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/ServerError'
  /v2/scim/ResourceTypes:
    get:
      tags:
      - SCIM
      summary: Get SCIM Resource Types
      description: Returns the list of SCIM 2.0 resource types supported by this service provider.
      operationId: getSCIMResourceTypes
      responses:
        '200':
          description: successful operation
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMResourceTypesListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/ServerError'
  /v2/scim/users:
    get:
      tags:
      - SCIM
      summary: List SCIM Users
      description: Returns a paginated list of users in the organization. Supports filtering and pagination.
      operationId: listSCIMUsers
      parameters:
      - in: query
        name: startIndex
        schema:
          type: integer
          minimum: 1
          default: 1
        description: 1-based index of the first result in the current set of search results
      - in: query
        name: count
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
        description: Specifies the desired maximum number of query results per page
      - in: query
        name: filter
        schema:
          type: string
        description: SCIM filter expression (e.g., "userName eq \"user@example.com\"")
      responses:
        '200':
          description: successful operation
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMUserListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
    post:
      tags:
      - SCIM
      summary: Create SCIM User
      description: Creates a new user in the organization via SCIM 2.0.
      operationId: createSCIMUser
      requestBody:
        required: true
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/SCIMUser'
      responses:
        '201':
          description: User created successfully
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMUser'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/ServerError'
  /v2/scim/users/{userID}:
    get:
      tags:
      - SCIM
      summary: Get SCIM User
      description: Retrieves a specific user by ID.
      operationId: getSCIMUser
      parameters:
      - in: path
        name: userID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the user
      responses:
        '200':
          description: successful operation
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMUser'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    put:
      tags:
      - SCIM
      summary: Update SCIM User
      description: Updates a user using SCIM 2.0 PUT (full replacement).
      operationId: updateSCIMUser
      parameters:
      - in: path
        name: userID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the user
      requestBody:
        required: true
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/SCIMUser'
      responses:
        '200':
          description: User updated successfully
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMUser'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    patch:
      tags:
      - SCIM
      summary: Patch SCIM User
      description: Partially updates a user using SCIM 2.0 PATCH operations.
      operationId: patchSCIMUser
      parameters:
      - in: path
        name: userID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the user
      requestBody:
        required: true
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/SCIMPatchRequest'
      responses:
        '200':
          description: User updated successfully
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMUser'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
      - SCIM
      summary: Delete SCIM User
      description: Deletes a user from the organization.
      operationId: deleteSCIMUser
      parameters:
      - in: path
        name: userID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the user
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /v2/scim/groups:
    get:
      tags:
      - SCIM
      summary: List SCIM Groups
      description: Returns a paginated list of groups (roles) in the organization. Supports filtering and pagination.
      operationId: listSCIMGroups
      parameters:
      - in: query
        name: startIndex
        schema:
          type: integer
          minimum: 1
          default: 1
        description: 1-based index of the first result in the current set of search results
      - in: query
        name: count
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
        description: Specifies the desired maximum number of query results per page
      - in: query
        name: filter
        schema:
          type: string
        description: SCIM filter expression (e.g., "displayName eq \"Admin\"")
      responses:
        '200':
          description: successful operation
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMGroupListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
    post:
      tags:
      - SCIM
      summary: Create SCIM Group
      description: Creates a new group (role) in the organization via SCIM 2.0.
      operationId: createSCIMGroup
      requestBody:
        required: true
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/SCIMGroup'
      responses:
        '201':
          description: Group created successfully
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMGroup'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
  /v2/scim/groups/{groupID}:
    get:
      tags:
      - SCIM
      summary: Get SCIM Group
      description: Retrieves a specific group (role) by ID.
      operationId: getSCIMGroup
      parameters:
      - in: path
        name: groupID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the group
      responses:
        '200':
          description: successful operation
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMGroup'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    put:
      tags:
      - SCIM
      summary: Update SCIM Group
      description: Updates a group using SCIM 2.0 PUT (full replacement).
      operationId: updateSCIMGroup
      parameters:
      - in: path
        name: groupID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the group
      requestBody:
        required: true
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/SCIMGroup'
      responses:
        '200':
          description: Group updated successfully
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMGroup'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    patch:
      tags:
      - SCIM
      summary: Patch SCIM Group
      description: Partially updates a group using SCIM 2.0 PATCH operations. Supports adding/removing members and updating displayName.
      operationId: patchSCIMGroup
      parameters:
      - in: path
        name: groupID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the group
      requestBody:
        required: true
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/SCIMPatchRequest'
      responses:
        '200':
          description: Group updated successfully
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/SCIMGroup'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
      - SCIM
      summary: Delete SCIM Group
      description: Deletes a group (role) from the organization.
      operationId: deleteSCIMGroup
      parameters:
      - in: path
        name: groupID
        required: true
        schema:
          type: string
          format: uuid
        description: The unique identifier of the group
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    SCIMGroupMember:
      type: object
      description: A member of a SCIM group
      required:
      - value
      - $ref
      properties:
        value:
          type: string
          format: uuid
          description: Identifier of the member of this Group
        $ref:
          type: string
          description: The URI corresponding to a SCIM resource that is a member of this Group
        display:
          type: string
          description: A human-readable name for the member
    SCIMGroup:
      type: object
      description: SCIM 2.0 Group resource (maps to roles)
      required:
      - schemas
      - id
      - displayName
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        id:
          type: string
          format: uuid
          description: Unique identifier for the group
        displayName:
          type: string
          description: A human-readable name for the Group
        members:
          type: array
          items:
            $ref: '#/components/schemas/SCIMGroupMember'
        meta:
          $ref: '#/components/schemas/SCIMGroupMeta'
    SCIMPatchRequest:
      type: object
      description: SCIM 2.0 PATCH request
      required:
      - schemas
      - Operations
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:api:messages:2.0:PatchOp
        Operations:
          type: array
          items:
            $ref: '#/components/schemas/SCIMPatchOperation'
    SCIMResourceTypesListResponse:
      type: object
      description: SCIM 2.0 Resource Types List Response
      required:
      - schemas
      - totalResults
      - Resources
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults:
          type: integer
        Resources:
          type: array
          items:
            $ref: '#/components/schemas/SCIMResourceType'
    SCIMUser:
      type: object
      description: SCIM 2.0 User resource
      required:
      - schemas
      - id
      - userName
      - active
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:schemas:core:2.0:User
        id:
          type: string
          format: uuid
          description: Unique identifier for the user
        externalId:
          type: string
          description: A String that is an identifier for the resource as defined by the provisioning client
        userName:
          type: string
          description: Unique identifier for the User, typically an email address
        name:
          type: object
          properties:
            givenName:
              type: string
              description: The given name of the user
            familyName:
              type: string
              description: The family name of the user
        emails:
          type: array
          items:
            type: object
            required:
            - value
            - primary
            properties:
              value:
                type: string
                format: email
                description: Email address for the user
              primary:
                type: boolean
                description: A Boolean value indicating the 'primary' or preferred attribute value
        active:
          type: boolean
          description: A Boolean value indicating the user's administrative status
        meta:
          $ref: '#/components/schemas/SCIMUserMeta'
    SCIMServiceProviderMeta:
      type: object
      properties:
        location:
          type: string
        resourceType:
          type: string
          example: ServiceProviderConfig
    SCIMPatchOperation:
      type: object
      description: A single SCIM PATCH operation
      required:
      - op
      properties:
        op:
          type: string
          enum:
          - add
          - replace
          - remove
          description: The operation to perform
        path:
          type: string
          description: The attribute path (e.g., "active", "name.givenName", "members")
        value:
          description: The value to use for the operation. Can be a string, boolean, object, or array depending on the operation and path.
    Error:
      description: ModelError information that is returned to users
      type: object
      required:
      - id
      - message
      properties:
        ID:
          type: integer
          example: 123
          description: API specific error code
        message:
          type: string
          example: Something is broken
          description: User-friendly description of error
    SCIMGroupMeta:
      type: object
      properties:
        resourceType:
          type: string
          example: Group
        created:
          type: string
          format: date-time
          description: The date and time the resource was created
        lastModified:
          type: string
          format: date-time
          description: The date and time the resource was last modified
        location:
          type: string
          description: The URI of the resource
    SCIMUserMeta:
      type: object
      properties:
        resourceType:
          type: string
          example: User
        created:
          type: string
          format: date-time
          description: The date and time the resource was created
        lastModified:
          type: string
          format: date-time
          description: The date and time the resource was last modified
        location:
          type: string
          description: The URI of the resource
    Errors:
      description: Errors is a collection of individual Error objects
      type: object
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    SCIMSchema:
      type: object
      description: A SCIM 2.0 schema definition
      required:
      - schemas
      - id
      - name
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:schemas:core:2.0:Schema
        id:
          type: string
          example: urn:ietf:params:scim:schemas:core:2.0:User
        name:
          type: string
          example: User
        description:
          type: string
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/SCIMAttribute'
        meta:
          $ref: '#/components/schemas/SCIMSchemaMeta'
    SCIMSchemasListResponse:
      type: object
      description: SCIM 2.0 Schemas List Response
      required:
      - schemas
      - totalResults
      - Resources
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults:
          type: integer
        Resources:
          type: array
          items:
            $ref: '#/components/schemas/SCIMSchema'
    SCIMResourceTypeMeta:
      type: object
      properties:
        location:
          type: string
        resourceType:
          type: string
          example: ResourceType
    SCIMGroupListResponse:
      type: object
      description: SCIM 2.0 List Response for Groups
      required:
      - schemas
      - totalResults
      - Resources
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults:
          type: integer
          description: The total number of results returned
        startIndex:
          type: integer
          description: The 1-based index of the first result in the current set of search results
        itemsPerPage:
          type: integer
          description: The number of resources returned in a list response page
        Resources:
          type: array
          items:
            $ref: '#/components/schemas/SCIMGroup'
    SCIMAuthenticationScheme:
      type: object
      properties:
        type:
          type: string
          example: oauthbearertoken
        name:
          type: string
          example: OAuth Bearer Token
        description:
          type: string
        specUri:
          type: string
        primary:
          type: boolean
    SCIMAttribute:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        multiValued:
          type: boolean
        description:
          type: string
        required:
          type: boolean
        caseExact:
          type: boolean
        mutability:
          type: string
        returned:
          type: string
        uniqueness:
          type: string
        subAttributes:
          type: array
          items:
            $ref: '#/components/schemas/SCIMAttribute'
    SCIMSchemaMeta:
      type: object
      properties:
        location:
          type: string
        resourceType:
          type: string
          example: Schema
    SCIMServiceProviderConfig:
      type: object
      description: SCIM 2.0 Service Provider Configuration
      required:
      - schemas
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig
        patch:
          type: object
          properties:
            supported:
              type: boolean
        bulk:
          type: object
          properties:
            supported:
              type: boolean
            maxOperations:
              type: integer
            maxPayloadSize:
              type: integer
        filter:
          type: object
          properties:
            supported:
              type: boolean
            maxResults:
              type: integer
        changePassword:
          type: object
          properties:
            supported:
              type: boolean
        sort:
          type: object
          properties:
            supported:
              type: boolean
        etag:
          type: object
          properties:
            supported:
              type: boolean
        authenticationSchemes:
          type: array
          items:
            $ref: '#/components/schemas/SCIMAuthenticationScheme'
        meta:
          $ref: '#/components/schemas/SCIMServiceProviderMeta'
    SCIMResourceType:
      type: object
      description: A SCIM 2.0 resource type definition
      required:
      - schemas
      - id
      - name
      - endpoint
      - schema
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:schemas:core:2.0:ResourceType
        id:
          type: string
          example: User
        name:
          type: string
          example: User
        endpoint:
          type: string
          example: /v2/scim/users
        description:
          type: string
        schema:
          type: string
          example: urn:ietf:params:scim:schemas:core:2.0:User
        meta:
          $ref: '#/components/schemas/SCIMResourceTypeMeta'
    SCIMUserListResponse:
      type: object
      description: SCIM 2.0 List Response for Users
      required:
      - schemas
      - totalResults
      - Resources
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
          - urn:ietf:params:scim:api:messages:2.0:ListResponse
        totalResults:
          type: integer
          description: The total number of results returned
        startIndex:
          type: integer
          description: The 1-based index of the first result in the current set of search results
        itemsPerPage:
          type: integer
          description: The number of resources returned in a list response page
        Resources:
          type: array
          items:
            $ref: '#/components/schemas/SCIMUser'
  responses:
    NoContent:
      description: The request succeeded and no content is returned in response body
    Conflict:
      description: The database is not in a valid state to perform the operation
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
    Unauthorized:
      description: The user is unauthorized to perform the operation
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
    Forbidden:
      description: The user is forbidden to perform the operation
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
    ServerError:
      description: A server error occurred
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
    NotFound:
      description: The specified database was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
  securitySchemes:
    BearerAuth:
      description: An application token must be passed in header in order to access the API. https://docs.datastax.com/en/astra-db-serverless/administration/manage-application-tokens.html
      type: http
      scheme: bearer