Exoscale · Capability

Exoscale API — role

Exoscale API — role. 8 operations. Lead operation: List IAM Roles. Self-contained Naftiko capability covering one Exoscale business surface.

Run with Naftiko Exoscalerole

What You Can Do

GET
Listiamroles — List IAM Roles
/v1/iam-role
POST
Createiamrole — Create IAM Role
/v1/iam-role
PUT
Updateiamrole — Update IAM Role
/v1/iam-role/{id}
GET
Getiamrole — Retrieve IAM Role
/v1/iam-role/{id}
DELETE
Deleteiamrole — Delete IAM Role
/v1/iam-role/{id}
PUT
Updateiamroleassumepolicy — Update IAM Assume role Policy
/v1/iam-role/id-assume-role-policy
PUT
Updateiamrolepolicy — Update IAM Role Policy
/v1/iam-role/id-policy
POST
Assumeiamrole — [BETA] Request generation of key/secret that allow caller to assume target role
/v1/iam-role/{target-role-id}/assume

MCP Tools

list-iam-roles

List IAM Roles

read-only idempotent
create-iam-role

Create IAM Role

update-iam-role

Update IAM Role

idempotent
retrieve-iam-role

Retrieve IAM Role

read-only idempotent
delete-iam-role

Delete IAM Role

idempotent
update-iam-assume-role-policy

Update IAM Assume role Policy

idempotent
update-iam-role-policy

Update IAM Role Policy

idempotent
beta-request-generation-key-secret

[BETA] Request generation of key/secret that allow caller to assume target role

read-only

Capability Spec

exoscale-role.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Exoscale API — role
  description: 'Exoscale API — role. 8 operations. Lead operation: List IAM Roles. Self-contained Naftiko capability covering
    one Exoscale business surface.'
  tags:
  - Exoscale
  - role
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    EXOSCALE_API_KEY: EXOSCALE_API_KEY
capability:
  consumes:
  - type: http
    namespace: exoscale-role
    baseUri: https://api-{zone}.exoscale.com/v2
    description: Exoscale API — role business capability. Self-contained, no shared references.
    resources:
    - name: iam-role
      path: /iam-role
      operations:
      - name: listiamroles
        method: GET
        description: List IAM Roles
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createiamrole
        method: POST
        description: Create IAM Role
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: iam-role-id
      path: /iam-role/{id}
      operations:
      - name: updateiamrole
        method: PUT
        description: Update IAM Role
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: getiamrole
        method: GET
        description: Retrieve IAM Role
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
      - name: deleteiamrole
        method: DELETE
        description: Delete IAM Role
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
    - name: iam-role-id}:assume-role-policy
      path: /iam-role/{id}:assume-role-policy
      operations:
      - name: updateiamroleassumepolicy
        method: PUT
        description: Update IAM Assume role Policy
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: iam-role-id}:policy
      path: /iam-role/{id}:policy
      operations:
      - name: updateiamrolepolicy
        method: PUT
        description: Update IAM Role Policy
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: iam-role-target-role-id-assume
      path: /iam-role/{target-role-id}/assume
      operations:
      - name: assumeiamrole
        method: POST
        description: '[BETA] Request generation of key/secret that allow caller to assume target role'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: target-role-id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
  exposes:
  - type: rest
    namespace: exoscale-role-rest
    port: 8080
    description: REST adapter for Exoscale API — role. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/iam-role
      name: iam-role
      description: REST surface for iam-role.
      operations:
      - method: GET
        name: listiamroles
        description: List IAM Roles
        call: exoscale-role.listiamroles
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createiamrole
        description: Create IAM Role
        call: exoscale-role.createiamrole
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/iam-role/{id}
      name: iam-role-id
      description: REST surface for iam-role-id.
      operations:
      - method: PUT
        name: updateiamrole
        description: Update IAM Role
        call: exoscale-role.updateiamrole
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getiamrole
        description: Retrieve IAM Role
        call: exoscale-role.getiamrole
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteiamrole
        description: Delete IAM Role
        call: exoscale-role.deleteiamrole
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/iam-role/id-assume-role-policy
      name: iam-role-id-assume-role-policy
      description: REST surface for iam-role-id}:assume-role-policy.
      operations:
      - method: PUT
        name: updateiamroleassumepolicy
        description: Update IAM Assume role Policy
        call: exoscale-role.updateiamroleassumepolicy
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/iam-role/id-policy
      name: iam-role-id-policy
      description: REST surface for iam-role-id}:policy.
      operations:
      - method: PUT
        name: updateiamrolepolicy
        description: Update IAM Role Policy
        call: exoscale-role.updateiamrolepolicy
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/iam-role/{target-role-id}/assume
      name: iam-role-target-role-id-assume
      description: REST surface for iam-role-target-role-id-assume.
      operations:
      - method: POST
        name: assumeiamrole
        description: '[BETA] Request generation of key/secret that allow caller to assume target role'
        call: exoscale-role.assumeiamrole
        with:
          target-role-id: rest.target-role-id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: exoscale-role-mcp
    port: 9090
    transport: http
    description: MCP adapter for Exoscale API — role. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-iam-roles
      description: List IAM Roles
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: exoscale-role.listiamroles
      outputParameters:
      - type: object
        mapping: $.
    - name: create-iam-role
      description: Create IAM Role
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: exoscale-role.createiamrole
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: update-iam-role
      description: Update IAM Role
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: exoscale-role.updateiamrole
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-iam-role
      description: Retrieve IAM Role
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: exoscale-role.getiamrole
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-iam-role
      description: Delete IAM Role
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: exoscale-role.deleteiamrole
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: update-iam-assume-role-policy
      description: Update IAM Assume role Policy
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: exoscale-role.updateiamroleassumepolicy
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: update-iam-role-policy
      description: Update IAM Role Policy
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: exoscale-role.updateiamrolepolicy
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: beta-request-generation-key-secret
      description: '[BETA] Request generation of key/secret that allow caller to assume target role'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: exoscale-role.assumeiamrole
      with:
        target-role-id: tools.target-role-id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.