Crusoe Kubernetes Node Pools API

The Kubernetes Node Pools API from Crusoe — 5 operation(s) for kubernetes node pools.

OpenAPI Specification

crusoe-kubernetes-node-pools-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Crusoe Kubernetes Node Pools API
  version: '1.0'
  description: 'Operations tagged Kubernetes Node Pools across 2 of this provider''s published API definitions: crusoe-cloud-api-gateway-v1-openapi.json, crusoe-cloud-api-gateway-v1alpha5-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.cloud.crusoe.ai/v1
tags:
- name: Kubernetes Node Pools
paths:
  /projects/{project_id}/kubernetes/nodepools:
    get:
      description: Results can be narrowed to a single cluster with the cluster_id query parameter.
      operationId: listNodePools
      parameters:
      - description: ID of the project that owns the node pools.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: Filters results to node pools in this cluster.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: query
        name: cluster_id
        x-go-name: ClusterID
        schema:
          type: string
      - description: Field to sort results by; prefix with '-' for descending order.
        example: created_at, -created_at
        in: query
        name: sort
        x-go-name: SortBy
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/listKubernetesNodePoolsResponse'
        '401':
          $ref: '#/components/responses/authError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Lists all Kubernetes node pools in the project and returns their details.
      tags:
      - Kubernetes Node Pools
    post:
      operationId: createNodePool
      parameters:
      - description: ID of the project to create the node pool in.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/asyncOperationResponse'
        '400':
          $ref: '#/components/responses/badReqError'
        '401':
          $ref: '#/components/responses/authError'
        '403':
          $ref: '#/components/responses/permissionsError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Creates a Kubernetes node pool in the project and returns the async operation.
      tags:
      - Kubernetes Node Pools
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KubernetesNodePoolPostRequest'
        required: true
  /projects/{project_id}/kubernetes/nodepools/{node_pool_id}:
    delete:
      operationId: deleteNodePool
      parameters:
      - description: ID of the project that owns the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: ID of the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: node_pool_id
        required: true
        x-go-name: NodePoolID
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/asyncOperationResponse'
        '401':
          $ref: '#/components/responses/authError'
        '403':
          $ref: '#/components/responses/permissionsError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Deletes a Kubernetes node pool from the project and returns the async operation.
      tags:
      - Kubernetes Node Pools
    get:
      operationId: getNodePool
      parameters:
      - description: ID of the project that owns the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: ID of the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: node_pool_id
        required: true
        x-go-name: NodePoolID
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/getKubernetesNodePoolResponse'
        '401':
          $ref: '#/components/responses/authError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Returns details for a single Kubernetes node pool in the project.
      tags:
      - Kubernetes Node Pools
    patch:
      operationId: updateNodePool
      parameters:
      - description: ID of the project that owns the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: ID of the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: node_pool_id
        required: true
        x-go-name: NodePoolID
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/asyncOperationResponse'
        '401':
          $ref: '#/components/responses/authError'
        '403':
          $ref: '#/components/responses/permissionsError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Updates a Kubernetes node pool in the project and returns the async operation.
      tags:
      - Kubernetes Node Pools
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KubernetesNodePoolPatchRequest'
        required: true
  /projects/{project_id}/kubernetes/nodepools/{node_pool_id}/cancel-rotate:
    post:
      operationId: cancelNodePoolRotate
      parameters:
      - description: ID of the project that owns the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: ID of the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: node_pool_id
        required: true
        x-go-name: NodePoolID
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/cancelNodePoolRotateResponse'
        '400':
          $ref: '#/components/responses/badReqError'
        '401':
          $ref: '#/components/responses/authError'
        '403':
          $ref: '#/components/responses/permissionsError'
        '404':
          $ref: '#/components/responses/notFoundError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Cancels an in-progress rotation of a Kubernetes node pool in the project.
      tags:
      - Kubernetes Node Pools
  /projects/{project_id}/kubernetes/nodepools/{node_pool_id}/rotate:
    get:
      operationId: getNodePoolRotateStatus
      parameters:
      - description: ID of the project that owns the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: ID of the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: node_pool_id
        required: true
        x-go-name: NodePoolID
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/getNodePoolRotateStatusResponse'
        '400':
          $ref: '#/components/responses/badReqError'
        '401':
          $ref: '#/components/responses/authError'
        '403':
          $ref: '#/components/responses/permissionsError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Returns the rotation status of a Kubernetes node pool in the project.
      tags:
      - Kubernetes Node Pools
    post:
      description: A successful response returns an async operation you can poll.
      operationId: rotateNodePool
      parameters:
      - description: ID of the project that owns the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: ID of the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: node_pool_id
        required: true
        x-go-name: NodePoolID
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/asyncOperationResponse'
        '400':
          $ref: '#/components/responses/badReqError'
        '401':
          $ref: '#/components/responses/authError'
        '403':
          $ref: '#/components/responses/permissionsError'
        '404':
          $ref: '#/components/responses/notFoundError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Starts a rotation of a Kubernetes node pool in the project and returns the async operation.
      tags:
      - Kubernetes Node Pools
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KubernetesNodePoolRotateStartRequest'
        required: true
  /projects/{project_id}/kubernetes/nodepools/{node_pool_id}/vms:
    get:
      operationId: listKubernetesNodePoolVMs
      parameters:
      - description: ID of the project that owns the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: project_id
        required: true
        x-go-name: ProjectID
        schema:
          type: string
      - description: ID of the node pool.
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        in: path
        name: node_pool_id
        required: true
        x-go-name: NodePoolID
        schema:
          type: string
      - description: Maximum number of results to return per page.
        example: '20'
        in: query
        name: limit
        x-go-name: Limit
        schema:
          type: string
      - description: Field to sort results by; prefix with '-' for descending order.
        example: name
        in: query
        name: sort
        x-go-name: Sort
        schema:
          type: string
      - description: Base64-encoded token for the next page of results.
        example: bXktZmlyc3Qtdm0
        in: query
        name: next_token
        x-go-name: NextToken
        schema:
          type: string
      - description: Base64-encoded token for the previous page of results.
        example: bXktZmlyc3Qtdm0
        in: query
        name: prev_token
        x-go-name: PrevToken
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/listKubernetesNodePoolVMsResponse'
        '400':
          $ref: '#/components/responses/badReqError'
        '401':
          $ref: '#/components/responses/authError'
        '403':
          $ref: '#/components/responses/permissionsError'
        '404':
          $ref: '#/components/responses/notFoundError'
        '500':
          $ref: '#/components/responses/serverError'
      summary: Lists all VMs in a Kubernetes node pool and returns their details.
      tags:
      - Kubernetes Node Pools
components:
  schemas:
    IPAddresses:
      properties:
        private_ipv4:
          $ref: '#/components/schemas/PrivateIPv4Address'
        public_ipv4:
          $ref: '#/components/schemas/PublicIPv4Address'
      required:
      - private_ipv4
      - public_ipv4
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    VirtualizationFeatures:
      properties:
        nested_virtualization:
          description: Whether nested virtualization is enabled, allowing a VM to run inside this VM.
          example: true
          type: boolean
          x-go-name: NestedVirtualization
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    AttachedDiskV1:
      properties:
        attachment_type:
          description: 'How the disk is attached to the VM: os (boot disk) or data.'
          example: os | data
          type: string
          x-go-name: AttachmentType
        block_size:
          description: Block size of the disk, in bytes.
          example: 4096
          format: int64
          type: integer
          x-go-name: BlockSize
        created_at:
          description: Creation timestamp of the disk, in RFC3339 format.
          example: '2021-12-03T19:58:34Z'
          type: string
          x-go-name: CreatedAt
        id:
          description: ID of the disk.
          example: 123e4567-e89b-12d3-a456-426614174000
          type: string
          x-go-name: ID
        location:
          description: Location of the disk.
          example: us-northcentral1-a
          type: string
          x-go-name: Location
        mode:
          description: 'Access mode the disk is attached with: read-write or read-only.'
          example: read-write | read-only
          type: string
          x-go-name: Mode
        name:
          description: Name of the disk.
          example: my-disk
          type: string
          x-go-name: Name
        serial_number:
          description: Serial number of the disk.
          example: 96FD14FDBCF7E21E8EC
          type: string
          x-go-name: SerialNumber
        size:
          description: Size of the disk.
          example: 10GiB
          type: string
          x-go-name: Size
        type:
          description: Storage type of the disk.
          example: persistent-ssd
          type: string
          x-go-name: Type
        updated_at:
          description: Last update timestamp of the disk, in RFC3339 format.
          example: '2021-12-03T19:58:34Z'
          type: string
          x-go-name: UpdatedAt
      required:
      - id
      - name
      - type
      - size
      - location
      - block_size
      - created_at
      - updated_at
      - serial_number
      - attachment_type
      - mode
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    KubernetesNodePoolPostRequest:
      properties:
        cluster_id:
          description: ID of the cluster the new node pool belongs to.
          example: 09ae8411-0fbb-411c-898c-2b8f19622ae1
          type: string
          x-go-name: ClusterID
        count:
          description: Number of nodes to create.
          example: 4
          format: int64
          type: integer
          x-go-name: Count
        ephemeral_storage_for_containerd:
          description: Whether the first local ephemeral NVMe disk is used for containerd storage.
          example: true
          type: boolean
          x-go-name: EphemeralStorageForContainerd
        ib_partition_id:
          description: 'Deprecated: Use transport_partition_id instead.'
          type: string
          x-go-name: IBPartitionID
        name:
          description: Name of the Kubernetes node pool.
          example: my-kubernetes-node-pool
          type: string
          x-go-name: Name
        node_labels:
          additionalProperties:
            type: string
          description: Labels to assign to nodes in the new node pool.
          example:
            label: my_node
          type: object
          x-go-name: NodeLabels
        node_pool_version:
          description: Version of the Kubernetes node pool.
          example: '1.30'
          type: string
          x-go-name: NodePoolVersion
        node_taints:
          description: 'Taints applied to nodes in the node pool. Each (key, effect) pair

            must be unique within the list. The list may contain at most

            50 taints.'
          example:
          - effect: NoSchedule
            key: gpu-type
            value: h100
          items:
            $ref: '#/components/schemas/KubernetesNodeTaint'
          type: array
          x-go-name: NodeTaints
        nvlink_domain_id:
          description: NVLink domain ID to assign to nodes in the new node pool.
          example: 550e8400-e29b-41d4-a716-446655440000
          type: string
          x-go-name: NvlinkDomainID
        placement_policy:
          default: unspecified
          description: 'Placement policy for VMs in the node pool: spread or unspecified.

            Ignored for GPU node types (one VM per host is already enforced for GPUs).'
          enum:
          - spread
          - unspecified
          example: spread
          type: string
          x-go-name: PlacementPolicy
        product_name:
          description: Product name of the VM type to create within the new node pool.
          example: a100.2x
          type: string
          x-go-name: ProductName
        public_ip_type:
          default: dynamic
          description: 'Public IP type for the node pool''s nodes: dynamic, static, or none.'
          example: dynamic
          type: string
          x-go-name: PublicIPType
        reservation_specification:
          $ref: '#/components/schemas/ReservationSpecification'
        ssh_public_key:
          description: SSH public key to use for all VMs created from the new node pool.
          example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCspdG97nTS/h4PEPq2QD2RYVK1jxFXLFZuSDMI8
          type: string
          x-go-name: SSHPublicKey
        subnet_id:
          description: 'ID of the subnet to create the node pool in. Must be in the location

            of the cluster if specified. If not provided, the default subnet for the

            location is used, if there is one.'
          example: 09ae8411-0fbb-411c-898c-2b8f19622ae1
          type: string
          x-go-name: SubnetID
        transport_partition_id:
          description: 'ID of the InfiniBand or RoCE partition to create the node pool in. Must be in the

            location of the cluster if specified.'
          example: b1f86d1b-42d2-490d-adb0-cc1029abf653
          type: string
          x-go-name: TransportPartitionID
      required:
      - name
      - product_name
      - count
      - cluster_id
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    KubernetesNodePoolPatchRequest:
      properties:
        action:
          default: UPDATE
          description: 'Action to perform on the node pool: RESERVE, UNRESERVE, or UPDATE. RESERVE and UNRESERVE

            operations are done synchronously, and so will have succeeded with a 200 response.

            Defaults to UPDATE if no action is specified.'
          enum:
          - RESERVE
          - UNRESERVE
          - UPDATE
          example: UPDATE
          type: string
          x-go-name: Action
          x-redocly-optional: true
        count:
          description: New number of nodes in the node pool.
          example: 4
          format: int64
          type: integer
          x-go-name: Count
          x-redocly-optional: true
        ephemeral_storage_for_containerd:
          description: Whether the first local ephemeral NVMe disk is used for containerd storage.
          example: true
          type: boolean
          x-go-name: EphemeralStorageForContainerd
          x-redocly-optional: true
        node_labels:
          additionalProperties:
            type: string
          description: 'New labels for the node pool. Labels provided in the PATCH request do not modify existing nodes,

            but apply to any newly created nodes.'
          example:
            label: my_node
          type: object
          x-go-name: NodeLabels
          x-redocly-optional: true
        node_pool_version:
          description: New Kubernetes node pool version for newly created VMs.
          example: '1.30'
          type: string
          x-go-name: NodePoolVersion
          x-redocly-optional: true
        node_taints:
          description: 'New taints for nodes in this node pool. Taints provided in the PATCH request do not modify existing nodes,

            but apply to any newly created nodes.

            This field has three behaviors:

            Omitted (null): existing taints are left unchanged.

            Empty array ([]): all existing taints are cleared.

            Non-empty array: existing taints are fully replaced by the

            provided list.

            Each (key, effect) pair in the list must be unique. Up to 50

            taints are allowed. See KubernetesNodeTaint for per-field format rules.'
          example:
          - effect: NoSchedule
            key: gpu-type
            value: h100
          items:
            $ref: '#/components/schemas/KubernetesNodeTaint'
          type: array
          x-go-name: NodeTaints
          x-redocly-optional: true
        reservation_id:
          description: New reservation ID for the node pool.
          example: ca39e669-47ee-456b-968d-303234fbf99f
          type: string
          x-go-name: ReservationID
          x-redocly-optional: true
        ssh_public_key:
          description: New SSH public key to use for all VMs created from this node pool.
          example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCspdG97nTS/h4PEPq2QD2RYVK1jxFXLFZuSDMI8Rtxpucl6LDZLOghEYoj13lxKQnGtcsM3Iu68lh+4YgZe7CbI6cc/TxPbeAX2HJTqDh0J7+GAlLBHK9tsepC0QlhIDiazJptOPDZ3cesCBXdxSnzEbhDaqgYOfl393cp1fCeOKRIDWEP3H9CM25dCbWF66sTDziLsojJ9dMnxhgKm9/JkZc5gYncLT/2Ey+VWfV9Fs65mGUrBbQOn3c8S/nEk6WRcYn4PFOnIp0Mz+Chb50iCJrW677pllLnkTGSU+4c0H9J5z4HDG0I+91RoiQ0QsayFTYO1JtSn+THLuq98V+D
          type: string
          x-go-name: SSHPublicKey
          x-redocly-optional: true
      required:
      - count
      - node_labels
      - node_taints
      - reservation_id
      - action
      - ephemeral_storage_for_containerd
      - node_pool_version
      - ssh_public_key
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    AsyncOperationResponse:
      properties:
        operation:
          $ref: '#/components/schemas/Operation'
      required:
      - operation
      title: AsyncOperationResponse is the response type for endpoints which return async operations.
      type: object
      x-go-package: gitlab.com/crusoeenergy/schemas/utils/fetch
    ListKubernetesNodePoolsResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/KubernetesNodePool'
          type: array
          x-go-name: Items
      required:
      - items
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    ListKubernetesNodePoolVMsResponse:
      description: 'ListKubernetesNodePoolVMsResponse is the response type for

        GET /projects/{project_id}/kubernetes/nodepools/{node_pool_id}/vms. Uses the

        canonical short-form `next_token` / `prev_token` field names that match

        `fetch`''s request params, rather than the legacy `*_page_token` naming used

        by /compute/vms/instances.'
      properties:
        items:
          items:
            $ref: '#/components/schemas/InstanceV1'
          type: array
          x-go-name: Items
        next_token:
          description: 'Base64 encoded token representing the next page of instances. Empty if

            currently on the last page.'
          example: bXktbGFzdC12bQ
          type: string
          x-go-name: NextToken
        prev_token:
          description: 'Base64 encoded token representing the previous page of instances. Empty

            if currently on the first page.'
          example: bXktZmlyc3Qtdm0
          type: string
          x-go-name: PrevToken
      required:
      - items
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    InstanceDetails:
      properties:
        id:
          description: ID of the instance.
          example: ca39e669-47ee-456b-968d-303234fbf99f
          type: string
          x-go-name: ID
        using_latest_config:
          description: Whether the instance was created with the current node pool configuration.
          example: true
          type: boolean
          x-go-name: UsingLatestConfig
      required:
      - id
      - using_latest_config
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    NetworkInterface:
      properties:
        external_dns_name:
          description: External DNS name of the network interface.
          type: string
          x-go-name: ExternalDNSName
        id:
          description: ID of the network interface.
          example: ca39e669-47ee-456b-968d-303234fbf99f
          type: string
          x-go-name: ID
        interface_type:
          description: Type of the network interface.
          example: ethernet
          type: string
          x-go-name: InterfaceType
        ips:
          description: IP addresses assigned to the network interface.
          items:
            $ref: '#/components/schemas/IPAddresses'
          type: array
          x-go-name: IPs
        mac_address:
          description: MAC address of the network interface.
          example: 00:00:5e:00:53:af
          type: string
          x-go-name: MACAddress
        name:
          description: Name of the network interface.
          example: network-interface-1
          type: string
          x-go-name: Name
        network:
          description: ID of the VPC network the interface is attached to.
          example: 1ce839b7-3fab-46f9-8e54-7a6bb4ac1ffc
          type: string
          x-go-name: Network
        subnet:
          description: ID of the VPC subnet the interface is attached to.
          example: 1ce839b7-3fab-46f9-8e54-7a6bb4ac1ffc
          type: string
          x-go-name: Subnet
      required:
      - id
      - name
      - network
      - subnet
      - interface_type
      - mac_address
      - ips
      - external_dns_name
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    HostChannelAdapter:
      properties:
        guid:
          description: Globally unique identifier (GUID) of the host channel adapter.
          example: 946d:ae03:0021:69aa
          type: string
          x-go-name: GUID
        ib_network_id:
          type: string
          x-go-name: IBNetworkID
        ib_partition_id:
          type: string
          x-go-name: IBPartitionID
        transport_network_id:
          description: ID of the transport network the host channel adapter is attached to.
          example: ca39e669-47ee-456b-968d-303234fbf99f
          type: string
          x-go-name: TransportNetworkID
        transport_partition_id:
          description: ID of the transport partition the host channel adapter is attached to.
          example: ca39e669-47ee-456b-968d-303234fbf99f
          type: string
          x-go-name: TransportPartitionID
        type:
          description: Transport type of the host channel adapter.
          example: infiniband
          type: string
          x-go-name: Type
      required:
      - type
      - guid
      - ib_network_id
      - ib_partition_id
      - transport_network_id
      - transport_partition_id
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    KubernetesGetNodePoolRotateStatusResponse:
      properties:
        out_of_sync_instances:
          description: IDs of instances that are out of sync with the node pool configuration.
          items:
            type: string
          type: array
          x-go-name: OutOfSyncInstances
        state:
          description: Current rotation state of the node pool.
          type: string
          x-go-name: State
      required:
      - state
      - out_of_sync_instances
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    KubernetesCancelNodePoolRotateResponse:
      properties:
        no_rotate_in_progress:
          description: Whether there was no rotation in progress to cancel.
          type: boolean
          x-go-name: NoRotateInProgress
      required:
      - no_rotate_in_progress
      type: object
      x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
    KubernetesNodePool:
      properties:
        cluster_id:
          description: ID of the Kubernetes cluster the node pool belongs to.
          example: 9c8b7d6e-5f4a-3b2c-1e0f-2a3b4c5d6e7f
          type: string
          x-go-name: ClusterID
        count:
          description: Number of nodes in the node pool.
          example: 4
          format: int64
          type: integer
          x-go-name: Count
        created_at:
          description: Creation timestamp of the node pool, in RFC3339 format.
          example: '2021-12-03T19:58:34Z'
          type: string
          x-go-name: CreatedAt
        ephemeral_storage_for_containerd:
          description: Whether the first local ephemeral NVMe disk is used for containerd storage.
          example: true
          type: boolean
          x-go-name: EphemeralStorageForContainerd
        id:
          description: ID of the node pool.
          example: 0a1b3c2d-5e6f-8b9c-4d7e-1a2b3c4d5e6f
          type: string
          x-go-name: ID
        image_id:
          description: ID of the image used for the node pool.
          example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
          type: string
          x-go-name: ImageID
        instance_details:
          description: Details about the instances within the node pool.
          items:
            $ref: '#/components/schemas/InstanceDetails'
          type: array
          x-go-name: InstanceDetails
        instance_ids:
          description: IDs of the instances within the node pool.
          example:
          - ca39e669-47ee-456b-968d-303234fbf99f
          items:
            type: string
          type: array
          x-go-name: InstanceIDs
        name:
          description: Name of the node pool.
          example: crusoe-node-pool
          type: string
          x-go-name: Name
        node_labels:
          additionalProperties:
            type: string
          description: Labels assigned to nodes in the node pool.
          example:
            label: my_node
          type: object
          x-go-name: NodeLabels
        node_taints:
          description: Taints applied to nodes in the node pool.
          example:
          - effect: NoSchedule
            key: gpu
            value: 'true'
          items:
            $ref: '#/components/schemas/KubernetesNodeTaint'
          type: array
          x-go-name: NodeTaints
        nvlink_domain_id:
          description: NVLink domain ID assigned to the node pool.
          example: 550e8400-e29b-41d4-a716-446655440000
          type: string
          x-go-name: NvlinkDomainID
        project_id:
          description: ID of the project that owns the node pool.
          example: 9c8b7d6e-5f4a-3b2c-1e0f-2a3b4c5d6e7f
          type: string
          x-go-name: ProjectID
        public_ip_type:
          default: dynamic
          description: 'Public IP type for the node pool''s nodes: dynamic, static, or none.'
          example: dynamic
          type: string
          x-go-name: PublicIPType
        reservation_id:
          description: ID of the billing reservation associated with the node pool.
          example: ca39e669-47ee-456b-968d-303234fbf99f
          type: string
          x-go-name: ReservationID
        state:
          description: Current state of the node pool.
          example: STATE_RUNNING
          type: string
          x-go-name: State
        subnet_id:
          description: ID of the subnet the node pool belongs to.
          example: 09ae8411-0fbb-411c-898c-2b8f19622ae1
          type: string
          x-go-name: SubnetID
        type:
          description: VM type of the node pool.
          example: a100.2x
          type: string
          x-go-name: Type
        updated_at:
          description: Last update timestamp of the node pool, in RFC3339 format.
          example: '2021-12-03T19:58:34Z'
          type: string
          x-go-name: UpdatedAt
      required:
      - id
      - name
      - count
      - project_id
      - cluster_id
      - image_id
      - node_labels
      - node_taints
      - subnet_id
      - 

# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/crusoe/refs/heads/main/openapi/crusoe-kubernetes-node-pools-api-openapi.yml