SailPoint Access Profiles API

Use this API to implement and customize access profile functionality. Access profiles group entitlements, which represent access rights on sources. For example, an Active Directory source can have multiple entitlements grouped into an access profile such as 'AD Developers' combining 'Employees' and 'Developers' entitlements. Access profiles are used in provisioning, certifications, access requests, and roles.

OpenAPI Specification

sailpoint-access-profiles-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Identity Security Cloud V3 Access Profiles API
  description: Use these APIs to interact with the Identity Security Cloud platform to achieve repeatable, automated processes with greater scalability. The V3 APIs provide core endpoints covering access profiles, certifications, identities, roles, search, sources, transforms, workflows, and more. We encourage you to join the SailPoint Developer Community forum at https://developer.sailpoint.com/discuss to connect with other developers using our APIs.
  termsOfService: https://developer.sailpoint.com/discuss/tos
  contact:
    name: Developer Relations
    url: https://developer.sailpoint.com/discuss/api-help
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
    identifier: MIT
  version: 3.0.0
servers:
- url: https://{tenant}.api.identitynow.com/v3
  description: Production API server.
  variables:
    tenant:
      default: sailpoint
      description: The name of your tenant, typically your company's name.
- url: https://{apiUrl}/v3
  description: V3 API server.
  variables:
    apiUrl:
      default: sailpoint.api.identitynow.com
      description: The API URL of your tenant.
security:
- oauth2: []
- personalAccessToken: []
tags:
- name: Access Profiles
  description: Use this API to implement and customize access profile functionality. Access profiles group entitlements, which represent access rights on sources. For example, an Active Directory source can have multiple entitlements grouped into an access profile such as 'AD Developers' combining 'Employees' and 'Developers' entitlements. Access profiles are used in provisioning, certifications, access requests, and roles.
  externalDocs:
    description: SailPoint Access Profiles Documentation
    url: https://developer.sailpoint.com/docs/api/v3/access-profiles/
paths:
  /access-profiles:
    get:
      operationId: listAccessProfiles
      tags:
      - Access Profiles
      summary: List access profiles
      description: Get a list of access profiles. When you filter for access profiles that have the '+' symbol in their names, the response is blank.
      parameters:
      - name: for-subadmin
        in: query
        description: Filters the returned list according to what is visible to the indicated ROLE_SUBADMIN or SOURCE_SUBADMIN identity. The value is either an identity ID or the special value 'me' for the calling identity's ID.
        required: false
        schema:
          type: string
        example: 8c190e6787aa4ed9a90bd9d5344523fb
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Count'
      - name: filters
        in: query
        description: 'Filter results using the standard syntax. Filtering is supported for the following fields and operators: id (eq, in), name (eq, sw), created (gt, ge, le), modified (gt, lt, ge, le), owner.id (eq, in), requestable (eq), source.id (eq, in). Supported composite operators are ''and'' and ''or''.'
        required: false
        schema:
          type: string
        example: name eq "SailPoint Support"
      - name: sorters
        in: query
        description: 'Sort results using the standard syntax. Sorting is supported for the following fields: name, created, modified.'
        required: false
        schema:
          type: string
        example: name,-modified
      - name: for-segment-ids
        in: query
        description: Filters access profiles to only those assigned to the segment(s) with the specified IDs. If segmentation is unavailable, specifying this parameter results in an error.
        required: false
        schema:
          type: string
        example: 0b5c9f25-83c6-4762-9073-e38f7bb2ae26,2e8d8180-24bc-4d21-91c6-7affdb473b0d
      - name: include-unsegmented
        in: query
        description: Indicates whether the response should include unsegmented access profiles. If for-segment-ids is absent or empty, specifying this as false results in an error.
        required: false
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: List of access profiles.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccessProfile'
          headers:
            X-Total-Count:
              description: Total number of results matching the query.
              schema:
                type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - oauth2:
        - idn:access-profile:read
    post:
      operationId: createAccessProfile
      tags:
      - Access Profiles
      summary: Create an access profile
      description: Create an access profile. A user with ROLE_SUBADMIN or SOURCE_SUBADMIN authority must be associated with the access profile's source. The maximum supported length for the description field is 2000 characters.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessProfile'
      responses:
        '201':
          description: Access profile created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessProfile'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - oauth2:
        - idn:access-profile:manage
        - idn:entitlement:read
        - idn:identity:read
        - idn:sources:read
  /access-profiles/{id}:
    get:
      operationId: getAccessProfile
      tags:
      - Access Profiles
      summary: Get an access profile
      description: Get an access profile by its ID.
      parameters:
      - name: id
        in: path
        description: The access profile ID.
        required: true
        schema:
          type: string
        example: 2c91808a7190d06e01719938fcd20792
      responses:
        '200':
          description: An access profile object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessProfile'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - oauth2:
        - idn:access-profile:read
    patch:
      operationId: patchAccessProfile
      tags:
      - Access Profiles
      summary: Patch an access profile
      description: Update an existing access profile using a JSON Patch document. The maximum supported length for the description field is 2000 characters.
      parameters:
      - name: id
        in: path
        description: The access profile ID.
        required: true
        schema:
          type: string
        example: 2c91808a7190d06e01719938fcd20792
      requestBody:
        required: true
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/JsonPatchOperation'
      responses:
        '200':
          description: Updated access profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessProfile'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - oauth2:
        - idn:access-profile:manage
    delete:
      operationId: deleteAccessProfile
      tags:
      - Access Profiles
      summary: Delete an access profile
      description: Delete an existing access profile by its ID. The access profile must not be in use by any roles.
      parameters:
      - name: id
        in: path
        description: The access profile ID.
        required: true
        schema:
          type: string
        example: 2c91808a7190d06e01719938fcd20792
      responses:
        '204':
          description: Access profile deleted successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - oauth2:
        - idn:access-profile:manage
  /access-profiles/{id}/entitlements:
    get:
      operationId: listAccessProfileEntitlements
      tags:
      - Access Profiles
      summary: List access profile entitlements
      description: Get a list of entitlements associated with the specified access profile.
      parameters:
      - name: id
        in: path
        description: The access profile ID.
        required: true
        schema:
          type: string
        example: 2c91808a7190d06e01719938fcd20792
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Count'
      - name: filters
        in: query
        description: 'Filter results using the standard syntax. Filtering is supported for the following fields: name (eq, sw).'
        required: false
        schema:
          type: string
      - name: sorters
        in: query
        description: 'Sort results using the standard syntax. Sorting is supported for the following fields: name, created, modified.'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: List of entitlements for the access profile.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entitlement'
          headers:
            X-Total-Count:
              description: Total number of results matching the query.
              schema:
                type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - oauth2:
        - idn:access-profile:read
  /access-profiles/bulk-delete:
    post:
      operationId: bulkDeleteAccessProfiles
      tags:
      - Access Profiles
      summary: Bulk delete access profiles
      description: Delete one or more access profiles in a single request. The access profiles must not be in use by any roles or applications. Returns details about which profiles were deleted and which failed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessProfileBulkDeleteRequest'
      responses:
        '200':
          description: Bulk delete results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessProfileBulkDeleteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - oauth2:
        - idn:access-profile:manage
components:
  schemas:
    AccessProfileSourceRef:
      type: object
      description: Reference to the source associated with the access profile.
      properties:
        id:
          type: string
          description: The source ID.
          examples:
          - 2c91809773dee3610173fdb1b6969d4e
        type:
          type: string
          description: The source object type.
          enum:
          - SOURCE
          examples:
          - SOURCE
        name:
          type: string
          description: The source name.
          examples:
          - ODS-AD-SOURCE
    Entitlement:
      type: object
      description: An entitlement representing access rights on a source.
      properties:
        id:
          type: string
          description: The entitlement ID.
          examples:
          - 2c91809773dee32014e13e122092014e
        name:
          type: string
          description: The entitlement name.
          examples:
          - CN=entitlement.490efde5,OU=OrgCo,OU=ServiceDept,DC=HQAD,DC=local
        description:
          type:
          - string
          - 'null'
          description: The entitlement description.
          examples:
          - Entitlement granting access to the developer tools
        attribute:
          type: string
          description: The name of the entitlement attribute.
          examples:
          - memberOf
        value:
          type: string
          description: The value of the entitlement.
          examples:
          - CN=entitlement.490efde5,OU=OrgCo,OU=ServiceDept,DC=HQAD,DC=local
        sourceSchemaObjectType:
          type: string
          description: The object type of the source schema.
          examples:
          - group
        privileged:
          type: boolean
          description: Whether the entitlement is privileged.
          default: false
        cloudGoverned:
          type: boolean
          description: Whether the entitlement is governed in the cloud.
          default: false
        created:
          type: string
          format: date-time
          description: Date and time the entitlement was created.
          readOnly: true
        modified:
          type: string
          format: date-time
          description: Date and time the entitlement was last modified.
          readOnly: true
        source:
          $ref: '#/components/schemas/EntitlementSourceRef'
        owner:
          $ref: '#/components/schemas/OwnerReference'
    Revocability:
      type:
      - object
      - 'null'
      description: Revocation request configuration for the object.
      properties:
        commentsRequired:
          type: boolean
          default: false
          description: Whether comments are required for revocation requests.
        denialCommentsRequired:
          type: boolean
          default: false
          description: Whether comments are required for denial of revocation requests.
        approvalSchemes:
          type: array
          description: List of approval schemes for revocation requests.
          items:
            $ref: '#/components/schemas/ApprovalScheme'
    AccessProfile:
      type: object
      description: An access profile groups entitlements that represent access rights on sources. Access profiles are used in provisioning, certifications, access requests, and roles.
      required:
      - name
      - owner
      - source
      properties:
        id:
          type: string
          description: The access profile ID.
          readOnly: true
          examples:
          - 2c91808a7190d06e01719938fcd20792
        name:
          type: string
          description: The access profile name.
          examples:
          - Employee-database-read-write
        description:
          type:
          - string
          - 'null'
          description: The access profile description. Maximum supported length is 2000 characters.
          maxLength: 2000
          examples:
          - Collection of entitlements to read/write the employee database
        created:
          type: string
          format: date-time
          description: Date and time the access profile was created.
          readOnly: true
          examples:
          - '2021-03-01T22:32:58.104Z'
        modified:
          type: string
          format: date-time
          description: Date and time the access profile was last modified.
          readOnly: true
          examples:
          - '2021-03-02T20:22:28.104Z'
        enabled:
          type: boolean
          default: false
          description: Whether the access profile is enabled. If enabled, you must include at least one entitlement.
          examples:
          - true
        owner:
          $ref: '#/components/schemas/OwnerReference'
        source:
          $ref: '#/components/schemas/AccessProfileSourceRef'
        entitlements:
          type:
          - array
          - 'null'
          description: List of entitlements associated with the access profile. If enabled is false, this can be empty. Otherwise, it must contain at least one entitlement.
          items:
            $ref: '#/components/schemas/EntitlementRef'
        requestable:
          type: boolean
          default: true
          description: Whether the access profile is requestable via access requests.
          examples:
          - true
        accessRequestConfig:
          $ref: '#/components/schemas/Requestability'
        revocationRequestConfig:
          $ref: '#/components/schemas/Revocability'
        segments:
          type:
          - array
          - 'null'
          description: List of segment IDs the access profile is assigned to.
          items:
            type: string
          examples:
          - - f7b1b8a3-5fed-4fd4-ad29-82014e137e19
            - 29cb6c06-1da8-43ea-8be4-b3125f248f2a
    ErrorResponseDto:
      type: object
      description: Error response body.
      properties:
        detailCode:
          type: string
          description: Fine-grained error code providing more detail.
          examples:
          - 400.1 Bad Request Content
        trackingId:
          type: string
          description: Unique tracking ID for the error.
          examples:
          - e7eab60924f64aa284175b9fa3309599
        messages:
          type: array
          description: Generic localized reason for error.
          items:
            type: object
            properties:
              locale:
                type: string
                description: The locale for the message text.
                examples:
                - en-US
              localeOrigin:
                type: string
                description: An indicator of how the locale was selected.
                enum:
                - DEFAULT
                - REQUEST
                examples:
                - DEFAULT
              text:
                type: string
                description: The actual text of the error message.
                examples:
                - The request was syntactically correct but its content is semantically invalid.
        causes:
          type: array
          description: Plain-text descriptive reasons to provide additional detail to the text provided in the messages field.
          items:
            type: object
            properties:
              locale:
                type: string
                examples:
                - en-US
              localeOrigin:
                type: string
                enum:
                - DEFAULT
                - REQUEST
              text:
                type: string
    AccessProfileBulkDeleteResponse:
      type: object
      description: Response body for bulk deleting access profiles.
      properties:
        pending:
          type: array
          description: IDs of access profiles queued for deletion.
          items:
            type: string
        inUse:
          type: array
          description: Details about access profiles that could not be deleted because they are in use.
          items:
            type: object
            properties:
              accessProfileId:
                type: string
                description: The access profile ID.
              usedBy:
                type: array
                description: Objects using this access profile.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
    EntitlementSourceRef:
      type: object
      description: Reference to the source associated with the entitlement.
      properties:
        id:
          type: string
          description: The source ID.
          examples:
          - 2c9180835d191a86015d28455b4b232a
        type:
          type: string
          description: The source object type.
          examples:
          - SOURCE
        name:
          type: string
          description: The source name.
          examples:
          - ODS-AD-SOURCE
    OwnerReference:
      type: object
      description: Reference to the owner of the object.
      properties:
        type:
          type: string
          description: Owner type. Must be either left null or set to IDENTITY on input, otherwise a 400 Bad Request error will result.
          enum:
          - IDENTITY
          examples:
          - IDENTITY
        id:
          type: string
          description: The owner's identity ID.
          examples:
          - 2c9180a46faadee4016fb4e018c20639
        name:
          type: string
          description: The owner's name. If set, it must match the current value of the owner's display name, otherwise a 400 Bad Request error will result.
          examples:
          - support
    AccessProfileBulkDeleteRequest:
      type: object
      description: Request body for bulk deleting access profiles.
      required:
      - accessProfileIds
      properties:
        accessProfileIds:
          type: array
          description: List of access profile IDs to delete.
          items:
            type: string
          examples:
          - - 2c91808a7190d06e01719938fcd20792
            - 2c91808a7190d06e01719938fcd20793
        bestEffortOnly:
          type: boolean
          default: false
          description: If true, silently skip access profiles that cannot be deleted.
    EntitlementRef:
      type: object
      description: Reference to an entitlement.
      properties:
        type:
          type: string
          description: The entitlement object type.
          enum:
          - ENTITLEMENT
          examples:
          - ENTITLEMENT
        id:
          type: string
          description: The entitlement ID.
          examples:
          - 2c91809773dee32014e13e122092014e
        name:
          type: string
          description: The entitlement display name.
          examples:
          - CN=entitlement.490efde5,OU=OrgCo,OU=ServiceDept,DC=HQAD,DC=local
    Requestability:
      type:
      - object
      - 'null'
      description: Access request configuration for the object.
      properties:
        commentsRequired:
          type: boolean
          default: false
          description: Whether comments are required for access requests.
        denialCommentsRequired:
          type: boolean
          default: false
          description: Whether comments are required for denial of access requests.
        approvalSchemes:
          type: array
          description: List of approval schemes for access requests.
          items:
            $ref: '#/components/schemas/ApprovalScheme'
    ApprovalScheme:
      type: object
      description: An approval scheme defining the approval process.
      properties:
        approverType:
          type: string
          description: The type of approver. APP_OWNER is the application owner, OWNER is the access profile/role owner, SOURCE_OWNER is the source owner, MANAGER is the requesting user's manager, and GOVERNANCE_GROUP is a governance group.
          enum:
          - APP_OWNER
          - OWNER
          - SOURCE_OWNER
          - MANAGER
          - GOVERNANCE_GROUP
          examples:
          - MANAGER
        approverId:
          type:
          - string
          - 'null'
          description: The ID of the approver. Only required when approverType is GOVERNANCE_GROUP.
          examples:
          - 46c79c6399252b1a80dbdff5e2b1d4b7
    JsonPatchOperation:
      type: object
      description: A JSON Patch operation as defined in RFC 6902.
      required:
      - op
      - path
      properties:
        op:
          type: string
          description: The operation to perform.
          enum:
          - add
          - remove
          - replace
          - move
          - copy
          - test
          examples:
          - replace
        path:
          type: string
          description: The JSON pointer path for the operation.
          examples:
          - /description
        value:
          description: The value for the operation (required for add, replace, test).
  responses:
    InternalServerError:
      description: Internal Server Error - Returned if there is an unexpected error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseDto'
    BadRequest:
      description: Client Error - Returned if the request body is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseDto'
    TooManyRequests:
      description: Too Many Requests - Returned in response to too many requests in a given period of time, rate limited. The Retry-After header in the response includes how long to wait before trying again.
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseDto'
    NotFound:
      description: Not Found - Returned if the specified resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseDto'
    Forbidden:
      description: Forbidden - Returned if the user you are running as does not have access to this endpoint.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseDto'
    Unauthorized:
      description: Unauthorized - Returned if there is no authorization header, or if the JWT token is expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseDto'
  parameters:
    Count:
      name: count
      in: query
      description: If true, the total count of items in the full result set is included in the X-Total-Count response header. Only items in the current page are returned. Requesting a count can decrease performance.
      required: false
      schema:
        type: boolean
        default: false
    Offset:
      name: offset
      in: query
      description: Offset into the full result set. Usually specified with limit to paginate through the results.
      required: false
      schema:
        type: integer
        minimum: 0
        default: 0
    Limit:
      name: limit
      in: query
      description: Maximum number of results to return. Maximum value is 250.
      required: false
      schema:
        type: integer
        minimum: 0
        maximum: 250
        default: 250
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authentication. Use client credentials or authorization code flow to obtain access tokens.
      flows:
        clientCredentials:
          tokenUrl: https://{tenant}.api.identitynow.com/oauth/token
          scopes:
            idn:identity:read: Read identity information
            idn:identity-profile:read: Read identity profiles
            idn:identity-profile:manage: Manage identity profiles
            idn:access-profile:read: Read access profiles
            idn:access-profile:manage: Manage access profiles
            idn:entitlement:read: Read entitlements
            idn:sources:read: Read sources
            idn:role-unchecked:read: Read roles
            idn:role-unchecked:manage: Manage roles
            idn:certification:read: Read certifications
            idn:certification:manage: Manage certifications
        authorizationCode:
          authorizationUrl: https://{tenant}.identitynow.com/oauth/authorize
          tokenUrl: https://{tenant}.api.identitynow.com/oauth/token
          scopes:
            idn:identity:read: Read identity information
            idn:identity-profile:read: Read identity profiles
            idn:identity-profile:manage: Manage identity profiles
            idn:access-profile:read: Read access profiles
            idn:access-profile:manage: Manage access profiles
            idn:entitlement:read: Read entitlements
            idn:sources:read: Read sources
            idn:role-unchecked:read: Read roles
            idn:role-unchecked:manage: Manage roles
            idn:certification:read: Read certifications
            idn:certification:manage: Manage certifications
    personalAccessToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Personal access token (PAT) authentication. Generate a PAT in Identity Security Cloud and use it as a bearer token.