IBM

IBM Roles API

List and manage IAM roles

Operations 5

GET /v2/roles List IAM roles #
POST /v2/roles Create a custom role #
GET /v2/roles/{role_id} Get a role #
PUT /v2/roles/{role_id} Replace a custom role #
DELETE /v2/roles/{role_id} Delete a custom role #

Documentation

Specifications

Schemas & Data

Other Resources

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/ibm-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

ibm-roles-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: IBM Cloud IAM API Keys Roles API
  description: The IBM Cloud Identity and Access Management (IAM) API enables you to manage IAM access tokens, API keys, service IDs, trusted profiles, and access policies. Use this API to authenticate identities, authorize access to IBM Cloud resources, and manage the full lifecycle of identity and policy objects within your IBM Cloud account.
  version: 1.0.0
  contact:
    name: IBM Cloud
    url: https://cloud.ibm.com
    email: cloud@ibm.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  x-ibm-api-source: https://cloud.ibm.com/apidocs/iam-identity-token-api
servers:
- url: https://iam.cloud.ibm.com
  description: IBM Cloud IAM production endpoint
security:
- bearerAuth: []
tags:
- name: Roles
  description: List and manage IAM roles
paths:
  /v2/roles:
    get:
      operationId: listRoles
      summary: List IAM roles
      description: List system-defined and custom roles available in the account. Results can be filtered by service name.
      tags:
      - Roles
      parameters:
      - name: account_id
        in: query
        description: The account ID to list custom roles for.
        schema:
          type: string
      - name: service_name
        in: query
        description: Filter roles by the service they apply to.
        schema:
          type: string
      - name: source_service_name
        in: query
        description: Filter by the source service name for authorization policies.
        schema:
          type: string
      - name: policy_type
        in: query
        description: Filter by policy type.
        schema:
          type: string
      - name: service_group_id
        in: query
        description: Filter by the service group ID.
        schema:
          type: string
      responses:
        '200':
          description: List of roles returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleList'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createRole
      summary: Create a custom role
      description: Create a custom role with a set of actions for a specific service. Custom roles extend the built-in platform and service roles.
      tags:
      - Roles
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRoleRequest'
      responses:
        '201':
          description: Custom role created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/Conflict'
  /v2/roles/{role_id}:
    get:
      operationId: getRole
      summary: Get a role
      description: Retrieve details of a specific role.
      tags:
      - Roles
      parameters:
      - $ref: '#/components/parameters/RoleIdParam'
      responses:
        '200':
          description: Role details returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: replaceRole
      summary: Replace a custom role
      description: Replace the definition of an existing custom role with an updated set of actions.
      tags:
      - Roles
      parameters:
      - $ref: '#/components/parameters/RoleIdParam'
      - $ref: '#/components/parameters/IfMatch'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRoleRequest'
      responses:
        '200':
          description: Role replaced successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
    delete:
      operationId: deleteRole
      summary: Delete a custom role
      description: Remove a custom role. System-defined roles cannot be deleted.
      tags:
      - Roles
      parameters:
      - $ref: '#/components/parameters/RoleIdParam'
      responses:
        '204':
          description: Role deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Conflict:
      description: A conflict occurred, typically from an If-Match version mismatch.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: The request was invalid or malformed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication failed or credentials are missing.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    IfMatch:
      name: If-Match
      in: header
      required: true
      description: The entity tag value from a previous GET request used for optimistic concurrency control.
      schema:
        type: string
    RoleIdParam:
      name: role_id
      in: path
      required: true
      description: The unique identifier of the role.
      schema:
        type: string
  schemas:
    ErrorResponse:
      type: object
      description: An error response from the IAM API.
      properties:
        context:
          $ref: '#/components/schemas/ResponseContext'
        status_code:
          type: integer
          description: The HTTP status code.
        errors:
          type: array
          description: The list of errors.
          items:
            type: object
            properties:
              code:
                type: string
                description: The error code.
              message:
                type: string
                description: A human-readable error message.
              details:
                type: string
                description: Additional error details.
              more_info:
                type: string
                description: A URL for more information about the error.
        trace:
          type: string
          description: A trace identifier for debugging.
    Role:
      type: object
      description: An IAM role that defines a set of actions.
      properties:
        id:
          type: string
          description: The unique identifier of the role.
        display_name:
          type: string
          description: The display name of the role.
        description:
          type: string
          description: A description of the role.
        actions:
          type: array
          description: The list of actions granted by this role.
          items:
            type: string
        crn:
          type: string
          description: The CRN of the role.
        name:
          type: string
          description: The name identifier of the role.
        account_id:
          type: string
          description: The account ID for custom roles.
        service_name:
          type: string
          description: The service this role applies to.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the role was created.
        created_by_id:
          type: string
          description: The IAM ID of the user who created the role.
        last_modified_at:
          type: string
          format: date-time
          description: Timestamp when the role was last modified.
        last_modified_by_id:
          type: string
          description: The IAM ID of the user who last modified the role.
    CreateRoleRequest:
      type: object
      description: Request body for creating a custom role.
      required:
      - display_name
      - actions
      - name
      - account_id
      - service_name
      properties:
        display_name:
          type: string
          description: The display name for the custom role.
        actions:
          type: array
          description: The actions granted by this role.
          items:
            type: string
        name:
          type: string
          description: The programmatic name identifier for the role.
        account_id:
          type: string
          description: The account ID for the custom role.
        service_name:
          type: string
          description: The service this role applies to.
        description:
          type: string
          description: A description of the custom role.
    ResponseContext:
      type: object
      description: Context metadata for paginated API responses.
      properties:
        transaction_id:
          type: string
          description: The unique transaction ID for the request.
        operation:
          type: string
          description: The operation that was performed.
        user_agent:
          type: string
          description: The user agent string from the request.
        url:
          type: string
          description: The URL of the request.
        instance_id:
          type: string
          description: The instance ID of the service.
        thread_id:
          type: string
          description: The thread ID of the request.
        host:
          type: string
          description: The host that served the request.
        start_time:
          type: string
          description: Timestamp when the request started.
        end_time:
          type: string
          description: Timestamp when the request ended.
        elapsed_time:
          type: string
          description: The elapsed time of the request.
        cluster_name:
          type: string
          description: The cluster name of the service.
    RoleList:
      type: object
      description: A list of IAM roles.
      properties:
        custom_roles:
          type: array
          description: The list of custom roles.
          items:
            $ref: '#/components/schemas/Role'
        service_roles:
          type: array
          description: The list of service-defined roles.
          items:
            $ref: '#/components/schemas/Role'
        system_roles:
          type: array
          description: The list of system-defined platform roles.
          items:
            $ref: '#/components/schemas/Role'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'IAM access token obtained from the /identity/token endpoint. Pass as Authorization: Bearer <token>.'