ControlUp Roles API

The Roles API from ControlUp — 2 operation(s) for roles.

Business capability
Identity & Access Management BC-620.20

Operations 5

GET /organizations/{orgId}/roles List all roles #
POST /organizations/{orgId}/roles Create a role #
GET /organizations/{orgId}/roles/{id} Retrieve a role #
PATCH /organizations/{orgId}/roles/{id} Update a role #
DELETE /organizations/{orgId}/roles/{id} Delete a role #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/controlup-roles-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

controlup-roles-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dex Roles API
  version: 1.0.0
  description: Dex API Description
  contact: {}
servers:
- url: https://api.controlup.com/v1
tags:
- name: Roles
paths:
  /organizations/{orgId}/roles:
    get:
      operationId: OrgRolesPublicController_getAll
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAllRolesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
        '401':
          description: 'Unauthorized: Access is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
        '403':
          description: 'Forbidden: Access to this resource is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
        '404':
          description: 'Not Found: The requested resource could not be found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
      description: Returns a list of all roles.
      summary: List all roles
      tags:
      - Roles
      security:
      - apiKey: []
      parameters:
      - description: 'The page of results to return.

          The first page is page number 1.'
        in: query
        name: _page
        required: false
        schema:
          default: '1'
          format: int32
          type: integer
          minimum: 1
        example: 1
        style: form
      - description: The number of results returned per page.
        in: query
        name: _limit
        required: false
        schema:
          default: '10'
          format: int32
          type: integer
          minimum: 1
        example: 10
        style: form
      - description: Sorts results according to the specified field.
        in: query
        name: _sortBy
        required: false
        schema:
          default: id
          type: string
          enum:
          - description
          - id
          - createdAt
          - updatedAt
          - name
          - isDefault
          - childOrganizationIds
        example: id
        style: form
      - description: The sort order (ascending / descending) of the field specified by the `_sortBy` parameter.
        in: query
        name: _order
        required: false
        schema:
          default: asc
          type: string
          enum:
          - asc
          - desc
        example: asc
        style: form
      - description: 'A search filter that is applied to all fields.

          Only results that contain the specified string are returned.'
        in: query
        name: _search
        required: false
        schema:
          type: string
        style: form
      - description: The format of returned results.
        in: query
        name: _format
        required: false
        schema:
          default: json
          type: string
          enum:
          - json
          - xml
          - csv
        example: json
        style: form
      - description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
        in: path
        name: orgId
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      - description: 'Filter roles by a specific tenant manager child organization ID.

          Returns roles that apply to this child organization (either roles with no specific child organizations, or roles that include this child organization).'
        in: query
        name: childOrganizationId
        required: false
        schema:
          type: string
        style: form
      - description: A search filter on the `isDefault` field.
        in: query
        name: isDefault
        required: false
        schema:
          type: array
          items:
            type: boolean
        style: form
      - description: A search filter on the `description` field.
        in: query
        name: description
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyString'
        style: form
      - description: A search filter on the `name` field.
        in: query
        name: name
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyString'
        style: form
      - description: A search filter on the `id` field.
        in: query
        name: id
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyString'
        style: form
    post:
      operationId: OrgRolesPublicController_create
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRoleResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
        '401':
          description: 'Unauthorized: Access is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
        '403':
          description: 'Forbidden: Access to this resource is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
        '404':
          description: 'Not Found: The requested resource could not be found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
      description: Creates a new role.
      summary: Create a role
      tags:
      - Roles
      security:
      - apiKey: []
      parameters:
      - description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
        in: path
        name: orgId
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleToCreate'
  /organizations/{orgId}/roles/{id}:
    get:
      operationId: OrgRolesPublicController_getOneById
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRoleResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
        '401':
          description: 'Unauthorized: Access is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
        '403':
          description: 'Forbidden: Access to this resource is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
        '404':
          description: 'Not Found: The requested resource could not be found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
      description: Returns the details for a role, including the permissions within the role and the users to which the role is assigned.
      summary: Retrieve a role
      tags:
      - Roles
      security:
      - apiKey: []
      parameters:
      - description: The format of returned results.
        in: query
        name: _format
        required: false
        schema:
          default: json
          type: string
          enum:
          - json
          - xml
          - csv
        example: json
        style: form
      - description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
        in: path
        name: orgId
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      - description: 'ID of the role to retrieve. You can use [GET /roles](orgrolespubliccontroller_getall) to see the ID of each role.


          Default role IDs:

          * Admin - 1

          * Editor - 2

          * Viewer - 3

          * No Permissions - 4

          * VDI and DaaS Admins - 5

          * Access Real-Time DX Console - 6'
        in: path
        name: id
        required: true
        schema:
          $ref: '#/components/schemas/PositiveInteger'
    patch:
      operationId: OrgRolesPublicController_update
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRoleResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
        '401':
          description: 'Unauthorized: Access is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
        '403':
          description: 'Forbidden: Access to this resource is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
        '404':
          description: 'Not Found: The requested resource could not be found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
      description: Updates an existing role by its ID.
      summary: Update a role
      tags:
      - Roles
      security:
      - apiKey: []
      parameters:
      - description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
        in: path
        name: orgId
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      - description: ID of the role to update. You can use [GET /roles](orgrolespubliccontroller_getall) to see the ID of each role.
        in: path
        name: id
        required: true
        schema:
          $ref: '#/components/schemas/PositiveInteger'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleToUpdate'
    delete:
      operationId: OrgRolesPublicController_delete
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIResponse_DeletedActionResponse_'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__'
        '401':
          description: 'Unauthorized: Access is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__'
        '403':
          description: 'Forbidden: Access to this resource is denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__'
        '404':
          description: 'Not Found: The requested resource could not be found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound__'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseBody_ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError__'
      description: 'Deletes a role.

        If you delete a role, then the role is removed from any users/groups that are assigned the role.'
      summary: Delete a role
      tags:
      - Roles
      security:
      - apiKey: []
      parameters:
      - description: ID of your ControlUp organization. You can find your organization ID on the [API Key Management page](how-to-make-api-requests#how-to-find-your-controlup-organization-id) in the DEX platform.
        in: path
        name: orgId
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      - description: ID of the role to delete. You can use [GET /roles](orgrolespubliccontroller_getall) to see the ID of each role.
        in: path
        name: id
        required: true
        schema:
          $ref: '#/components/schemas/PositiveInteger'
components:
  schemas:
    CHATBOT:
      enum:
      - access_chatbot
      type: string
    GetRoleResponse:
      $ref: '#/components/schemas/APIResponse_RoleWithData_'
      example:
        id: 1
        name: Admin
        description: null
        isDefault: true
        usersIds:
        - d1cb6131-7361-4e39-84c7-049e06921a18
        - 775448cf-4f16-472d-904a-2983c10b380e
        groupsIds:
        - 69cdd6bc-e81f-4c0e-8f21-a8f35ce4763c
        - 991419b2-cd58-408c-a5e4-4675916941d5
        permissions:
        - permissionTreeName: dex_access_control
          selectedPermissions:
          - id: view_settings
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
          - id: manage_users
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
          - id: manage_roles
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
          - id: manage_sso_access
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
    customer_success_hub:
      items:
        $ref: '#/components/schemas/CUSTOMER_SUCCESS_HUB'
      type: array
      description: The "Customer Success Hub" permission category.
    api_keys:
      items:
        $ref: '#/components/schemas/API_KEYS'
      type: array
      description: The "API keys" permission category.
    ErrorCode.Forbidden:
      enum:
      - 4
      type: number
    REMEDIATION_FLOW:
      enum:
      - manage_remediation_flow_mappings
      - view_remediation_flow_mappings
      type: string
    chatbot:
      items:
        $ref: '#/components/schemas/CHATBOT'
      type: array
      description: The "Chatbot" permission category.
    APP_DX:
      enum:
      - access_app_dx
      - configure_app_dx
      type: string
    edge_asset_library:
      items:
        $ref: '#/components/schemas/EDGE_ASSET_LIBRARY'
      type: array
      description: The "Media Library" permission category.
    ErrorResponseBody_ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized__:
      properties:
        metadata:
          $ref: '#/components/schemas/ErrorResponseMetadata'
        error:
          $ref: '#/components/schemas/ErrorType_ErrorMessage.Unauthorized.HttpStatusCode.UNAUTHORIZED.ErrorCode.Unauthorized_'
      required:
      - error
      - metadata
      type: object
    ErrorType_ErrorMessage.NotFound.HttpStatusCode.NOT_FOUND.ErrorCode.NotFound_:
      properties:
        message:
          $ref: '#/components/schemas/ErrorMessage.NotFound'
        code:
          $ref: '#/components/schemas/ErrorCode.NotFound'
        status:
          $ref: '#/components/schemas/HttpStatusCode.NOT_FOUND'
        data:
          additionalProperties: true
          type: object
      required:
      - status
      - code
      - message
      type: object
    PaginatedResponseMetadata:
      properties:
        total:
          type: number
          format: double
          description: The total number of results across all pages.
        limitPerPage:
          type: number
          format: double
          description: The maximum number of results returned per page (set by the `_limit` parameter).
        currentPageNumber:
          type: number
          format: double
          description: The page of result returned (set by the `_page` parameter).
        currentPageSize:
          type: number
          format: double
          description: The number of results on the current page.
        remaining:
          type: number
          format: double
          description: The total number of results on all pages higher than the current page.
      required:
      - remaining
      - currentPageSize
      - currentPageNumber
      - limitPerPage
      - total
      type: object
      example:
        total: 18
        limitPerPage: 10
        currentPageNumber: 1
        currentPageSize: 10
        remaining: 8
    reports:
      items:
        $ref: '#/components/schemas/REPORTS'
      type: array
      description: The "Reports" permission category.
    ErrorType_ErrorMessage.InternalServerError.HttpStatusCode.INTERNAL_SERVER_ERROR.ErrorCode.InternalServerError_:
      properties:
        message:
          $ref: '#/components/schemas/ErrorMessage.InternalServerError'
        code:
          $ref: '#/components/schemas/ErrorCode.InternalServerError'
        status:
          $ref: '#/components/schemas/HttpStatusCode.INTERNAL_SERVER_ERROR'
        data:
          additionalProperties: true
          type: object
      required:
      - status
      - code
      - message
      type: object
    ErrorMessage.Unauthorized:
      enum:
      - Unauthorized
      type: string
    ErrorMessage.InternalServerError:
      enum:
      - Internal Server Error
      type: string
    APIResponse_RoleWithData_:
      properties:
        data:
          allOf:
          - $ref: '#/components/schemas/RoleWithData'
      required:
      - data
      type: object
    HttpStatusCode.FORBIDDEN:
      enum:
      - 403
      type: number
    NonEmptyString:
      type: string
      minLength: 1
    ErrorResponseBody_ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes__:
      properties:
        metadata:
          $ref: '#/components/schemas/ErrorResponseMetadata'
        error:
          $ref: '#/components/schemas/ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes_'
      required:
      - error
      - metadata
      type: object
    SECURITY_RISK_MANAGEMENT:
      enum:
      - sdx_overview
      - sdx_devices_remediate
      - sdx_devices_scan
      - sdx_devices_view_devices_page
      - sdx_devices_view_drill_down_device_page
      - sdx_issues_remediate
      - sdx_issues_view_issues_page
      - sdx_issues_view_drill_down_issue_page
      - sdx_templates_view_page
      - sdx_templates_view_drill_down_page
      - sdx_templates_create
      - sdx_templates_edit
      - sdx_templates_delete
      - sdx_templates_disable
      - sdx_templates_scan_categories_misconfig
      - sdx_templates_scan_categories_compliance
      - sdx_templates_scan_categories_vulnerabilities
      - sdx_templates_scan_categories_patches
      - sdx_templates_remediation_categories_misconfig
      - sdx_templates_remediation_categories_compliance
      - sdx_templates_remediation_categories_vulnerabilities
      - sdx_templates_remediation_categories_patches
      - sdx_apps_remediate
      - sdx_apps_view_page
      - sdx_apps_view_drill_down_page
      - sdx_jobs_view_page
      - sdx_jobs_view_drill_down_page
      - sdx_users_view_page
      - sdx_users_view_drill_down_page
      - sdx_settings_manage_devices
      - sdx_settings_license_information
      - sdx_settings_manage_agent
      - sdx_settings_manage_custom_issues
      - sdx_settings_manage_identity_risk
      type: string
    Scope:
      properties:
        type:
          type: string
          description: The method of targeting devices for the permission scope.
        values:
          items:
            type: string
          type: array
          description: The values of the permission scope targets.
      required:
      - values
      - type
      type: object
    HttpStatusCode.BAD_REQUEST:
      enum:
      - 400
      type: number
    UUID:
      type: string
      format: uuid
      description: 'Stringified UUIDv4.

        See [RFC 4112](https://tools.ietf.org/html/rfc4122)'
      pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
    edge_devices:
      items:
        $ref: '#/components/schemas/EDGE_DEVICES'
      type: array
      description: The "Device Permissions" permission category.
    SB_MONITORING:
      enum:
      - sb_create_scout
      - sb_read_scout
      - sb_update_scout
      - sb_delete_scout
      - sb_create_alert
      - sb_read_alert
      - sb_update_alert
      - sb_delete_alert
      - sb_create_hive
      - sb_read_hive
      - sb_update_hive
      - sb_delete_hive
      - sb_create_maintenance_window
      - sb_read_maintenance_window
      - sb_update_maintenance_window
      - sb_delete_maintenance_window
      - sb_create_integration
      - sb_read_integration
      - sb_update_integration
      - sb_delete_integration
      - sb_create_api_key
      - sb_read_api_key
      - sb_update_api_key
      - sb_delete_api_key
      - sb_update_organization_settings
      type: string
    REPORTS:
      enum:
      - environment_assessment
      - sizing_recommendations
      - session_count
      - session_activity
      - logon_duration
      - protocol_trends
      - machine_trends
      - machine_statistics
      - host_trends
      - host_statistics
      - top_windows_errors
      - netscaler
      - load_balancing
      - gateway
      - citrix_license_usage
      - app_statistics
      - app_usage_details
      - app_trends
      - published_apps
      - personal_automated_reports
      - all_automated_reports
      - cost_saving_reports
      type: string
    GetAllRolesResponse:
      $ref: '#/components/schemas/APIPaginatedResponse_RolePublic-Array_'
      example:
        metadata:
          total: 7
          limitPerPage: 3
          currentPageNumber: 1
          currentPageSize: 3
          remaining: 4
        data:
        - id: 1
          name: Admin
          description: null
          isDefault: true
          createdAt: '2024-08-01T13:09:41.640Z'
          updatedAt: '2024-08-01T13:09:41.640Z'
        - id: 2
          name: Editor
          description: null
          isDefault: true
          createdAt: '2024-08-01T13:09:41.640Z'
          updatedAt: '2024-08-01T13:09:41.640Z'
        - id: 709
          name: Help Desk
          description: Role for Help desk employees
          isDefault: false
          childOrganizationIds:
          - 12345678-1234-1234-1234-123456789012
          createdAt: '2024-08-01T13:09:41.640Z'
          updatedAt: '2024-08-01T13:09:41.640Z'
    API_KEYS:
      enum:
      - manage_api_keys
      - vdi_daas_host_get_metrics_per_folder
      - vdi_daas_host_get_host_counts
      - vdi_daas_user_get_user_activity_status
      - vdi_daas_netscaler_get_netscaler_metrics
      - vdi_daas_netscaler_get_loadbalancer_metrics
      - vdi_daas_netscaler_get_gateway_metrics
      - vdi_daas_machine_get_machine_statistics
      - vdi_daas_machine_get_virtual_environments_sizing_recommendations
      - vdi_daas_machine_get_azure_environment_sizing_recommendations
      - vdi_daas_session_get_session_statistics
      - vdi_daas_apps_get_app_usage_details
      - vdi_daas_apps_get_all_apps_usage_details
      - vdi_daas_apps_get_app_statistics
      - access_dex_settings
      type: string
    EDGE_UNIFIED_COMMUNICATIONS_AND_COLLABORATION:
      enum:
      - pr_ucc_view_dashboard
      - pr_ucc_view_zoom_call_topic
      - pc_ucc_api_configuration
      type: string
    ErrorResponseBody_ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden__:
      properties:
        metadata:
          $ref: '#/components/schemas/ErrorResponseMetadata'
        error:
          $ref: '#/components/schemas/ErrorType_ErrorMessage.Forbidden.HttpStatusCode.FORBIDDEN.ErrorCode.Forbidden_'
      required:
      - error
      - metadata
      type: object
    CreateRoleResponse:
      $ref: '#/components/schemas/APIResponse_RoleWithData_'
      example:
        id: 1
        name: Admin
        description: null
        isDefault: true
        usersIds:
        - d1cb6131-7361-4e39-84c7-049e06921a18
        - 775448cf-4f16-472d-904a-2983c10b380e
        groupsIds:
        - 69cdd6bc-e81f-4c0e-8f21-a8f35ce4763c
        - 991419b2-cd58-408c-a5e4-4675916941d5
        permissions:
        - permissionTreeName: dex_access_control
          selectedPermissions:
          - id: view_settings
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
          - id: manage_users
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
          - id: manage_roles
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
          - id: manage_sso_access
            scopes:
            - type: device_groups
              values:
              - All Devices
            - type: device_tags
              values:
              - All Devices
    RolePublic:
      properties:
        id:
          type: integer
          format: int32
          description: ID of the role.
          minimum: 1
        name:
          type: string
          description: The role's name.
        description:
          type: string
          description: The role's description.
        isDefault:
          type: boolean
          description: Whether the role is one of the default roles configured by ControlUp.
        childOrganizationIds:
          items:
            type: string
          type: array
          description: 'Specifies the target organizations where this role is applied. This parameter is relevant only for Tenant Manager organizations.


            * **If omitted or empty:** The role is automatically applied to the Tenant Manager organization AND all of its child organizations.


            * **If IDs are provided:** The role is restricted only to the specific organization IDs listed. You can include the IDs of child organizations and/or the ID of the Tenant Manager organization itself. If you target exactly one organization ID, you can use the `permissions.scopes` object to further restrict permissions to specific device groups or tags within that organization.'
        createdAt:
          type: string
          description: The date at which the role was first created.
        updatedAt:
          type: string
          description: The date at which the role was last updated.
      required:
      - isDefault
      - description
      - name
      - id
      type: object
    security_risk_management:
      items:
        $ref: '#/components/schemas/SECURITY_RISK_MANAGEMENT'
      type: array
      description: The "Secure DX Management" permission category.
    ErrorResponseMetadata:
      properties:
        cuRequestId:
          type: string
        orgId:
          type: string
        userId:
          type: string
        userIp:
          type: string
      required:
      - userIp
      - userId
      - orgId
      - cuRequestId
      type: object
    EDGE_USER_SENTIMENT:
      enum:
      - pc_create_edit_view_delete_surveys_from_library
      - pc_create_edit_view_results_delete_surveys_owned_by_user
      - pc_edit_delete_surveys_owned_by_other_user
      - pc_view_survey_results_from_other_users
      - pc_use_custom_action_surveys
      - pc_sentiment_configure_global_settings
      type: string
    custom_dashboards:
      items:
        $ref: '#/components/schemas/CUSTOM_DASHBOARDS'
      type: array
      description: The "Custom Dashboards" permission category.
    enrich:
      items:
        $ref: '#/components/schemas/ENRICH'
      type: array
      description: The "Enrich" permission category.
    ErrorType_BadRequestErrorMessages.HttpStatusCode.BAD_REQUEST.BadRequestErrorCodes_:
      properties:
        message:
          $ref: '#/components/schemas/BadRequestErrorMessages'
        code:
          $ref: '#/components/schemas/BadRequestErrorCodes'
        status:
          $ref: '#/components/schemas/HttpStatusCode.BAD_REQUEST'
        data:
          additionalProperties: true
          type: object
      required:
      - status
      - code
      - message
     

# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/controlup/refs/heads/main/openapi/controlup-roles-api-openapi.yml