Crusoe Roles API

The Roles API from Crusoe — 3 operation(s) for roles.

OpenAPI Specification

crusoe-energy-roles-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: The API Gateway exposes all publicly available API endpoints for Crusoe Cloud products.
  title: Crusoe Cloud API Gateway Audit Logs Roles API
  version: v1alpha5
host: api.crusoecloud.com
basePath: /v1alpha5
schemes:
- https
consumes:
- application/json
produces:
- application/json
tags:
- name: Roles
paths:
  /iam/role-bindings:
    get:
      tags:
      - Roles
      summary: Lists role bindings visible to the caller.
      operationId: listRoleBindings
      parameters:
      - type: string
        x-go-name: UserID
        name: user_id
        in: query
      - type: string
        x-go-name: RoleID
        name: role_id
        in: query
      - enum:
        - org
        - project
        type: string
        x-go-name: ScopeType
        name: scope_type
        in: query
      - type: string
        x-go-name: ScopeObjectID
        name: scope_object_id
        in: query
      responses:
        '200':
          $ref: '#/responses/listRoleBindingsResponse'
        '400':
          $ref: '#/responses/badReqError'
        '403':
          $ref: '#/responses/permissionsError'
        '404':
          $ref: '#/responses/notFoundError'
        '500':
          $ref: '#/responses/serverError'
  /iam/roles:
    get:
      tags:
      - Roles
      summary: Lists role associated with the caller's organization.
      operationId: listRoles
      responses:
        '200':
          $ref: '#/responses/listRolesResponse'
        '400':
          $ref: '#/responses/badReqError'
        '403':
          $ref: '#/responses/permissionsError'
        '500':
          $ref: '#/responses/serverError'
  /iam/users/{user_id}/role-bindings:
    post:
      description: If any creation or deletion fails, no changes are applied.
      tags:
      - Roles
      summary: Creates and deletes role bindings for a user in a single atomic operation.
      operationId: applyRoleBindings
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: UserID
        name: user_id
        in: path
        required: true
      - name: Body
        in: body
        required: true
        schema:
          $ref: '#/definitions/ApplyRoleBindingRequest'
      responses:
        '200':
          $ref: '#/responses/emptyResponse'
        '400':
          $ref: '#/responses/badReqError'
        '403':
          $ref: '#/responses/permissionsError'
        '404':
          $ref: '#/responses/notFoundError'
        '500':
          $ref: '#/responses/serverError'
definitions:
  ApplyRoleBindingRequest:
    type: object
    required:
    - bindings_to_create
    - bindings_to_delete
    properties:
      bindings_to_create:
        type: array
        items:
          $ref: '#/definitions/RoleBindingInput'
        x-go-name: BindingsToCreate
      bindings_to_delete:
        type: array
        items:
          type: string
        x-go-name: BindingsToDelete
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  Role:
    type: object
    required:
    - id
    - role_name
    - allowed_scopes
    - org_id
    - description
    properties:
      allowed_scopes:
        type: array
        items:
          type: string
        x-go-name: AllowedScopes
      description:
        type: string
        x-go-name: Description
      id:
        type: string
        x-go-name: ID
      org_id:
        type: string
        x-go-name: OrgID
      role_name:
        type: string
        x-go-name: RoleName
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  RoleBindingInput:
    type: object
    required:
    - customer_id
    - role_id
    - scope_type
    - scope_object_id
    properties:
      customer_id:
        type: string
        x-go-name: CustomerID
      role_id:
        type: string
        x-go-name: RoleID
      scope_object_id:
        type: string
        x-go-name: ScopeObjectID
      scope_type:
        type: string
        enum:
        - org
        - project
        x-go-name: ScopeType
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  RoleBinding:
    type: object
    required:
    - id
    - customer_id
    - role_id
    - scope_type
    - scope_object_id
    - role_name
    properties:
      customer_id:
        type: string
        x-go-name: CustomerID
      id:
        type: string
        x-go-name: ID
      role_id:
        type: string
        x-go-name: RoleID
      role_name:
        type: string
        x-go-name: RoleName
      scope_object_id:
        type: string
        x-go-name: ScopeObjectID
      scope_type:
        type: string
        x-go-name: ScopeType
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  ListRoleBindingsResponse:
    type: object
    required:
    - role_bindings
    properties:
      role_bindings:
        type: array
        items:
          $ref: '#/definitions/RoleBinding'
        x-go-name: RoleBindings
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  ListRolesResponse:
    type: object
    required:
    - roles
    properties:
      roles:
        type: array
        items:
          $ref: '#/definitions/Role'
        x-go-name: Roles
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
responses:
  emptyResponse:
    description: Empty Response
  permissionsError:
    description: Error Permissions
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '403'
        message:
          type: string
          x-go-name: Message
          example: unauthorized
  serverError:
    description: Error Internal Server
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '500'
        message:
          type: string
          x-go-name: Message
          example: internal_error
  listRoleBindingsResponse:
    description: ''
    schema:
      $ref: '#/definitions/ListRoleBindingsResponse'
  notFoundError:
    description: Error Not Found
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '404'
        message:
          type: string
          x-go-name: Message
          example: not_found
  badReqError:
    description: Error Bad Request
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '400'
        message:
          type: string
          x-go-name: Message
          example: bad_request
  listRolesResponse:
    description: ''
    schema:
      $ref: '#/definitions/ListRolesResponse'
x-tagGroups:
- name: Compute
  tags:
  - VMs
  - VM Operations
  - Images
  - Instance Templates
  - Custom Images
  - Custom Image Operations
- name: Organizations
  tags:
  - Projects
  - Entities
  - Prospects
  - Billing
  - Usage
  - Quotas
  - Audit Logs
  - Reservations
- name: Users
  tags:
  - Identities
  - Roles
  - SSH Keys
  - Tokens
- name: Storage
  tags:
  - Disks
  - Disk Operations
  - Snapshots
  - Snapshot Operations
- name: Networking
  tags:
  - VPC Firewall Rules
  - VPC Firewall Rule Operations
  - VPC Networks
  - VPC Subnets
  - IB Partitions
  - Load Balancers
- name: Orchestration
  tags:
  - Kubernetes Clusters
  - Kubernetes Cluster Operations
  - Kubernetes Node Pools
  - Kubernetes Node Pool Operations
  - Kubernetes Versions
  - AutoClusters
  - AutoCluster Operations
- name: Locations
  tags:
  - Locations
- name: Capacities
  tags:
  - Capacities