# NKS

# Kubernetes Versions

## List NKS Kubernetes Versions

**get** `/v1/nks/kubernetes_versions`

List all supported Kubernetes versions for NKS clusters

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `items: array of KubernetesVersion`

  - `created_at: string`

    When the Kubernetes version was created.

  - `display_name: string`

    Display name of the Kubernetes version.

  - `name: string`

    Name of the Kubernetes version.

- `pagination: Pagination`

  Pagination response details.

  - `next_cursor: string`

  - `previous_cursor: string`

  - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/kubernetes_versions \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "created_at": "2025-01-01T00:00:00Z",
      "display_name": "Kubernetes v1.34.4",
      "name": "v1.34.4"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### Kubernetes Version

- `KubernetesVersion object { created_at, display_name, name }`

  NKS Kubernetes version details.

  - `created_at: string`

    When the Kubernetes version was created.

  - `display_name: string`

    Display name of the Kubernetes version.

  - `name: string`

    Name of the Kubernetes version.

# Clusters

## Create NKS Cluster

**post** `/v1/nks/clusters`

Create an NKS Cluster

### Body Parameters

- `autoscaling: boolean`

  Whether to enable autoscaling for the Cluster.

- `kubernetes_version: string`

  Kubernetes version for the Cluster.

- `name: string`

  Name of the Cluster.

- `project_id: string`

  Project ID to create the Cluster in.

- `region: RegionName`

  Region the resource is in.

  - `"us-sva-2"`

- `vpc_id: string`

  ID of the VPC to use for the Cluster.

- `tags: optional array of string`

  Tags to attach to the Cluster.

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "autoscaling": true,
          "kubernetes_version": "v1.34.4",
          "name": "my-cluster",
          "project_id": "123e4567-e89b-12d3-a456-426614174000",
          "region": "us-sva-2",
          "vpc_id": "123e4567-e89b-12d3-a456-426614174000",
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## Get NKS Cluster Details

**get** `/v1/nks/clusters/{cluster_id}`

Get details about an NKS cluster

### Path Parameters

- `cluster_id: string`

### Returns

- `NKSCluster object { id, autoscaling, created_at, 11 more }`

  NKS Cluster details.

  - `id: string`

    Unique identifier for the Cluster.

  - `autoscaling: boolean`

    Whether autoscaling is enabled for the Cluster.

  - `created_at: string`

    When the Cluster was created.

  - `kubernetes_version: string`

    Kubernetes version of the Cluster.

  - `name: string`

    Name of the Cluster.

  - `pool_ids: array of string`

    IDs of pools belonging to this Cluster.

  - `private_ip: string`

    Private IP (VIP) of the Cluster.

  - `project_id: string`

    Project ID the Cluster belongs to.

  - `public_ip: string`

    Public IP of the Cluster.

  - `region: RegionName`

    Region the resource is in.

    - `"us-sva-2"`

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `tags: array of string`

    Tags attached to the Cluster.

  - `updated_at: string`

    When the Cluster was last updated.

  - `vpc_id: string`

    ID of the VPC the Cluster is in.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "autoscaling": true,
  "created_at": "2025-01-01T00:00:00Z",
  "kubernetes_version": "v1.34.4",
  "name": "my-cluster",
  "pool_ids": [
    "123e4567-e89b-12d3-a456-426614174000"
  ],
  "private_ip": "10.0.0.254",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "public_ip": "198.51.100.1",
  "region": "us-sva-2",
  "status": "ready",
  "tags": [
    "production",
    "ethereum"
  ],
  "updated_at": "2025-01-01T00:00:00Z",
  "vpc_id": "123e4567-e89b-12d3-a456-426614174000"
}
```

## Update NKS Cluster

**patch** `/v1/nks/clusters/{cluster_id}`

Update an NKS cluster

### Path Parameters

- `cluster_id: string`

### Body Parameters

- `autoscaling: optional boolean`

  Whether to enable autoscaling for the Cluster.

- `name: optional string`

  Name of the Cluster.

- `tags: optional array of string`

  Tags to attach to the Cluster.

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "autoscaling": true,
          "name": "my-cluster",
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## Delete NKS Cluster

**delete** `/v1/nks/clusters/{cluster_id}`

Delete an NKS cluster

### Path Parameters

- `cluster_id: string`

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID \
    -X DELETE \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Clusters

**get** `/v1/nks/clusters`

List all NKS clusters

### Query Parameters

- `project_id: string`

  Project ID of resources to request

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `NKSClusterList object { items, pagination }`

  - `items: array of NKSCluster`

    - `id: string`

      Unique identifier for the Cluster.

    - `autoscaling: boolean`

      Whether autoscaling is enabled for the Cluster.

    - `created_at: string`

      When the Cluster was created.

    - `kubernetes_version: string`

      Kubernetes version of the Cluster.

    - `name: string`

      Name of the Cluster.

    - `pool_ids: array of string`

      IDs of pools belonging to this Cluster.

    - `private_ip: string`

      Private IP (VIP) of the Cluster.

    - `project_id: string`

      Project ID the Cluster belongs to.

    - `public_ip: string`

      Public IP of the Cluster.

    - `region: RegionName`

      Region the resource is in.

      - `"us-sva-2"`

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `tags: array of string`

      Tags attached to the Cluster.

    - `updated_at: string`

      When the Cluster was last updated.

    - `vpc_id: string`

      ID of the VPC the Cluster is in.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "autoscaling": true,
      "created_at": "2025-01-01T00:00:00Z",
      "kubernetes_version": "v1.34.4",
      "name": "my-cluster",
      "pool_ids": [
        "123e4567-e89b-12d3-a456-426614174000"
      ],
      "private_ip": "10.0.0.254",
      "project_id": "123e4567-e89b-12d3-a456-426614174000",
      "public_ip": "198.51.100.1",
      "region": "us-sva-2",
      "status": "ready",
      "tags": [
        "production",
        "ethereum"
      ],
      "updated_at": "2025-01-01T00:00:00Z",
      "vpc_id": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### NKS Cluster

- `NKSCluster object { id, autoscaling, created_at, 11 more }`

  NKS Cluster details.

  - `id: string`

    Unique identifier for the Cluster.

  - `autoscaling: boolean`

    Whether autoscaling is enabled for the Cluster.

  - `created_at: string`

    When the Cluster was created.

  - `kubernetes_version: string`

    Kubernetes version of the Cluster.

  - `name: string`

    Name of the Cluster.

  - `pool_ids: array of string`

    IDs of pools belonging to this Cluster.

  - `private_ip: string`

    Private IP (VIP) of the Cluster.

  - `project_id: string`

    Project ID the Cluster belongs to.

  - `public_ip: string`

    Public IP of the Cluster.

  - `region: RegionName`

    Region the resource is in.

    - `"us-sva-2"`

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `tags: array of string`

    Tags attached to the Cluster.

  - `updated_at: string`

    When the Cluster was last updated.

  - `vpc_id: string`

    ID of the VPC the Cluster is in.

### NKS Cluster List

- `NKSClusterList object { items, pagination }`

  - `items: array of NKSCluster`

    - `id: string`

      Unique identifier for the Cluster.

    - `autoscaling: boolean`

      Whether autoscaling is enabled for the Cluster.

    - `created_at: string`

      When the Cluster was created.

    - `kubernetes_version: string`

      Kubernetes version of the Cluster.

    - `name: string`

      Name of the Cluster.

    - `pool_ids: array of string`

      IDs of pools belonging to this Cluster.

    - `private_ip: string`

      Private IP (VIP) of the Cluster.

    - `project_id: string`

      Project ID the Cluster belongs to.

    - `public_ip: string`

      Public IP of the Cluster.

    - `region: RegionName`

      Region the resource is in.

      - `"us-sva-2"`

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `tags: array of string`

      Tags attached to the Cluster.

    - `updated_at: string`

      When the Cluster was last updated.

    - `vpc_id: string`

      ID of the VPC the Cluster is in.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

# Availability

## Check Create NKS Cluster Availability

**post** `/v1/nks/clusters/availability`

Check if an NKS cluster can be created

### Body Parameters

- `autoscaling: boolean`

  Whether to enable autoscaling for the Cluster.

- `kubernetes_version: string`

  Kubernetes version for the Cluster.

- `name: string`

  Name of the Cluster.

- `project_id: string`

  Project ID to create the Cluster in.

- `region: RegionName`

  Region the resource is in.

  - `"us-sva-2"`

- `vpc_id: string`

  ID of the VPC to use for the Cluster.

- `tags: optional array of string`

  Tags to attach to the Cluster.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/availability \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "autoscaling": true,
          "kubernetes_version": "v1.34.4",
          "name": "my-cluster",
          "project_id": "123e4567-e89b-12d3-a456-426614174000",
          "region": "us-sva-2",
          "vpc_id": "123e4567-e89b-12d3-a456-426614174000",
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

## Check Update NKS Cluster Availability

**patch** `/v1/nks/clusters/{cluster_id}/availability`

Check if an NKS cluster can be updated

### Path Parameters

- `cluster_id: string`

### Body Parameters

- `autoscaling: optional boolean`

  Whether to enable autoscaling for the Cluster.

- `name: optional string`

  Name of the Cluster.

- `tags: optional array of string`

  Tags to attach to the Cluster.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/availability \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "autoscaling": true,
          "name": "my-cluster",
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

# Persistent Volume Claims

## Get NKS Persistent Volume Claim Details

**get** `/v1/nks/clusters/{cluster_id}/persistent_volume_claims/{persistent_volume_claim_id}`

Get details about an NKS persistent volume claim

### Path Parameters

- `cluster_id: string`

- `persistent_volume_claim_id: string`

### Returns

- `PersistentVolumeClaim object { id, cluster_id, created_at, 5 more }`

  NKS persistent volume claim details.

  - `id: string`

    Unique identifier for the persistent volume claim.

  - `cluster_id: string`

    Cluster this persistent volume claim belongs to.

  - `created_at: string`

    When the persistent volume claim was first discovered.

  - `name: string`

    Name of the persistent volume claim.

  - `size: number`

    Size of the persistent volume claim in GB.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

  - `updated_at: string`

    When the persistent volume claim was last updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/persistent_volume_claims/$PERSISTENT_VOLUME_CLAIM_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "cluster_id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "name": "my-volume",
  "size": 100,
  "status": "ready",
  "type": "abs",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Persistent Volume Claims

**get** `/v1/nks/clusters/{cluster_id}/persistent_volume_claims`

List all persistent volume claims in an NKS cluster

### Path Parameters

- `cluster_id: string`

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `PersistentVolumeClaimList object { items, pagination }`

  - `items: array of PersistentVolumeClaim`

    - `id: string`

      Unique identifier for the persistent volume claim.

    - `cluster_id: string`

      Cluster this persistent volume claim belongs to.

    - `created_at: string`

      When the persistent volume claim was first discovered.

    - `name: string`

      Name of the persistent volume claim.

    - `size: number`

      Size of the persistent volume claim in GB.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

    - `updated_at: string`

      When the persistent volume claim was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/persistent_volume_claims \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "cluster_id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "name": "my-volume",
      "size": 100,
      "status": "ready",
      "type": "abs",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### Persistent Volume Claim

- `PersistentVolumeClaim object { id, cluster_id, created_at, 5 more }`

  NKS persistent volume claim details.

  - `id: string`

    Unique identifier for the persistent volume claim.

  - `cluster_id: string`

    Cluster this persistent volume claim belongs to.

  - `created_at: string`

    When the persistent volume claim was first discovered.

  - `name: string`

    Name of the persistent volume claim.

  - `size: number`

    Size of the persistent volume claim in GB.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

  - `updated_at: string`

    When the persistent volume claim was last updated.

### Persistent Volume Claim List

- `PersistentVolumeClaimList object { items, pagination }`

  - `items: array of PersistentVolumeClaim`

    - `id: string`

      Unique identifier for the persistent volume claim.

    - `cluster_id: string`

      Cluster this persistent volume claim belongs to.

    - `created_at: string`

      When the persistent volume claim was first discovered.

    - `name: string`

      Name of the persistent volume claim.

    - `size: number`

      Size of the persistent volume claim in GB.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

    - `updated_at: string`

      When the persistent volume claim was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

# Kubeconfig

## Get NKS Cluster Kubeconfig

**get** `/v1/nks/clusters/{cluster_id}/kubeconfig`

Get the kubeconfig for an NKS cluster

### Path Parameters

- `cluster_id: string`

### Returns

- `Kubeconfig object { kubeconfig }`

  Kubeconfig for an NKS Cluster.

  - `kubeconfig: string`

    Kubeconfig content for the Cluster.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/kubeconfig \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "kubeconfig": "kubeconfig"
}
```

## Domain Types

### Kubeconfig

- `Kubeconfig object { kubeconfig }`

  Kubeconfig for an NKS Cluster.

  - `kubeconfig: string`

    Kubeconfig content for the Cluster.

# Controllers

## Get NKS Controller Details

**get** `/v1/nks/clusters/{cluster_id}/controllers/{controller_id}`

Get details about an NKS controller

### Path Parameters

- `cluster_id: string`

- `controller_id: string`

### Returns

- `NKSController object { id, created_at, instance_type, 4 more }`

  NKS controller details.

  - `id: string`

    Unique identifier for the controller.

  - `created_at: string`

    When the controller was created.

  - `instance_type: string`

    Instance type name.

  - `name: string`

    Name of the controller.

  - `private_ip: string`

    Private IP address of the controller.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `updated_at: string`

    When the controller was last updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/controllers/$CONTROLLER_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "instance_type": "n1-standard-8",
  "name": "my-controller-0",
  "private_ip": "10.0.0.10",
  "status": "ready",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Controllers

**get** `/v1/nks/clusters/{cluster_id}/controllers`

List all controllers in an NKS cluster

### Path Parameters

- `cluster_id: string`

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `NKSControllerList object { items, pagination }`

  - `items: array of NKSController`

    - `id: string`

      Unique identifier for the controller.

    - `created_at: string`

      When the controller was created.

    - `instance_type: string`

      Instance type name.

    - `name: string`

      Name of the controller.

    - `private_ip: string`

      Private IP address of the controller.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `updated_at: string`

      When the controller was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/controllers \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "instance_type": "n1-standard-8",
      "name": "my-controller-0",
      "private_ip": "10.0.0.10",
      "status": "ready",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### NKS Controller

- `NKSController object { id, created_at, instance_type, 4 more }`

  NKS controller details.

  - `id: string`

    Unique identifier for the controller.

  - `created_at: string`

    When the controller was created.

  - `instance_type: string`

    Instance type name.

  - `name: string`

    Name of the controller.

  - `private_ip: string`

    Private IP address of the controller.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `updated_at: string`

    When the controller was last updated.

### NKS Controller List

- `NKSControllerList object { items, pagination }`

  - `items: array of NKSController`

    - `id: string`

      Unique identifier for the controller.

    - `created_at: string`

      When the controller was created.

    - `instance_type: string`

      Instance type name.

    - `name: string`

      Name of the controller.

    - `private_ip: string`

      Private IP address of the controller.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `updated_at: string`

      When the controller was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

# Volumes

## Get NKS Controller Volume Details

**get** `/v1/nks/clusters/{cluster_id}/controllers/{controller_id}/volumes/{volume_id}`

Get details about a volume attached to an NKS controller

### Path Parameters

- `cluster_id: string`

- `controller_id: string`

- `volume_id: string`

### Returns

- `NKSControllerVolume object { id, created_at, kind, 5 more }`

  NKS controller volume details.

  - `id: string`

    Unique identifier for the volume.

  - `created_at: string`

    When the volume was created.

  - `kind: VolumeKind`

    Volume kind.

    - `"boot"`

    - `"data"`

  - `name: string`

    Name of the volume.

  - `size: number`

    Size of the volume in GB.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

  - `updated_at: string`

    When the volume was last updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/controllers/$CONTROLLER_ID/volumes/$VOLUME_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "kind": "boot",
  "name": "my-volume",
  "size": 100,
  "status": "ready",
  "type": "abs",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Controller Volumes

**get** `/v1/nks/clusters/{cluster_id}/controllers/{controller_id}/volumes`

List all volumes attached to an NKS controller

### Path Parameters

- `cluster_id: string`

- `controller_id: string`

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `NKSControllerVolumeList object { items, pagination }`

  - `items: array of NKSControllerVolume`

    - `id: string`

      Unique identifier for the volume.

    - `created_at: string`

      When the volume was created.

    - `kind: VolumeKind`

      Volume kind.

      - `"boot"`

      - `"data"`

    - `name: string`

      Name of the volume.

    - `size: number`

      Size of the volume in GB.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

    - `updated_at: string`

      When the volume was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/controllers/$CONTROLLER_ID/volumes \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "kind": "boot",
      "name": "my-volume",
      "size": 100,
      "status": "ready",
      "type": "abs",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### NKS Controller Volume

- `NKSControllerVolume object { id, created_at, kind, 5 more }`

  NKS controller volume details.

  - `id: string`

    Unique identifier for the volume.

  - `created_at: string`

    When the volume was created.

  - `kind: VolumeKind`

    Volume kind.

    - `"boot"`

    - `"data"`

  - `name: string`

    Name of the volume.

  - `size: number`

    Size of the volume in GB.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

  - `updated_at: string`

    When the volume was last updated.

### NKS Controller Volume List

- `NKSControllerVolumeList object { items, pagination }`

  - `items: array of NKSControllerVolume`

    - `id: string`

      Unique identifier for the volume.

    - `created_at: string`

      When the volume was created.

    - `kind: VolumeKind`

      Volume kind.

      - `"boot"`

      - `"data"`

    - `name: string`

      Name of the volume.

    - `size: number`

      Size of the volume in GB.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

    - `updated_at: string`

      When the volume was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

# Load Balancers

## Get NKS Load Balancer Details

**get** `/v1/nks/clusters/{cluster_id}/load_balancers/{load_balancer_id}`

Get details about an NKS load balancer

### Path Parameters

- `cluster_id: string`

- `load_balancer_id: string`

### Returns

- `NKSLoadBalancer object { id, cluster_id, created_at, 7 more }`

  NKS load balancer details.

  - `id: string`

    Unique identifier for the load balancer.

  - `cluster_id: string`

    Cluster this load balancer belongs to.

  - `created_at: string`

    When the load balancer was first discovered.

  - `namespace: string`

    Kubernetes namespace of the load balancer.

  - `private_ip: string`

    Private IP address of the load balancer.

  - `public_ip: string`

    Public IP address assigned to this load balancer.

  - `public_ip_enabled: boolean`

    Whether a public IP is enabled for this load balancer.

  - `service_name: string`

    Kubernetes service name of the load balancer.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `updated_at: string`

    When the load balancer was last updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/load_balancers/$LOAD_BALANCER_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "cluster_id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "namespace": "default",
  "private_ip": "10.0.0.50",
  "public_ip": "198.51.100.10",
  "public_ip_enabled": false,
  "service_name": "my-service",
  "status": "ready",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## Update NKS Load Balancer

**patch** `/v1/nks/clusters/{cluster_id}/load_balancers/{load_balancer_id}`

Update an NKS load balancer

### Path Parameters

- `cluster_id: string`

- `load_balancer_id: string`

### Body Parameters

- `public_ip_enabled: boolean`

  Whether to enable a public IP for this load balancer.

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/load_balancers/$LOAD_BALANCER_ID \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "public_ip_enabled": true
        }'
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Load Balancers

**get** `/v1/nks/clusters/{cluster_id}/load_balancers`

List all load balancers in an NKS cluster

### Path Parameters

- `cluster_id: string`

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `NKSLoadBalancerList object { items, pagination }`

  - `items: array of NKSLoadBalancer`

    - `id: string`

      Unique identifier for the load balancer.

    - `cluster_id: string`

      Cluster this load balancer belongs to.

    - `created_at: string`

      When the load balancer was first discovered.

    - `namespace: string`

      Kubernetes namespace of the load balancer.

    - `private_ip: string`

      Private IP address of the load balancer.

    - `public_ip: string`

      Public IP address assigned to this load balancer.

    - `public_ip_enabled: boolean`

      Whether a public IP is enabled for this load balancer.

    - `service_name: string`

      Kubernetes service name of the load balancer.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `updated_at: string`

      When the load balancer was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/load_balancers \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "cluster_id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "namespace": "default",
      "private_ip": "10.0.0.50",
      "public_ip": "198.51.100.10",
      "public_ip_enabled": false,
      "service_name": "my-service",
      "status": "ready",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### NKS Load Balancer

- `NKSLoadBalancer object { id, cluster_id, created_at, 7 more }`

  NKS load balancer details.

  - `id: string`

    Unique identifier for the load balancer.

  - `cluster_id: string`

    Cluster this load balancer belongs to.

  - `created_at: string`

    When the load balancer was first discovered.

  - `namespace: string`

    Kubernetes namespace of the load balancer.

  - `private_ip: string`

    Private IP address of the load balancer.

  - `public_ip: string`

    Public IP address assigned to this load balancer.

  - `public_ip_enabled: boolean`

    Whether a public IP is enabled for this load balancer.

  - `service_name: string`

    Kubernetes service name of the load balancer.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `updated_at: string`

    When the load balancer was last updated.

### NKS Load Balancer List

- `NKSLoadBalancerList object { items, pagination }`

  - `items: array of NKSLoadBalancer`

    - `id: string`

      Unique identifier for the load balancer.

    - `cluster_id: string`

      Cluster this load balancer belongs to.

    - `created_at: string`

      When the load balancer was first discovered.

    - `namespace: string`

      Kubernetes namespace of the load balancer.

    - `private_ip: string`

      Private IP address of the load balancer.

    - `public_ip: string`

      Public IP address assigned to this load balancer.

    - `public_ip_enabled: boolean`

      Whether a public IP is enabled for this load balancer.

    - `service_name: string`

      Kubernetes service name of the load balancer.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `updated_at: string`

      When the load balancer was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

# Pools

## Create NKS Node Pool

**post** `/v1/nks/clusters/{cluster_id}/pools`

Create a node pool in an NKS cluster

### Path Parameters

- `cluster_id: string`

### Body Parameters

- `name: string`

  Name of the node pool.

- `node_config: NKSNodePoolNodeConfig`

  Node configuration.

  - `boot_volume: NKSNodePoolBootVolume`

    Boot volume configuration.

    - `size: number`

      Size of the boot volume in GB.

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

  - `instance_type: string`

    Instance type name used for worker nodes.

  - `labels: optional array of string`

    Kubernetes labels to apply to each node in the pool. Each entry is "key=value".
    Keys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.

- `node_count: number`

  Number of nodes. Must be between 1 and 100.

- `tags: optional array of string`

  Tags to attach to the node pool.

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "name": "my-node-pool",
          "node_config": {
            "boot_volume": {
              "size": 100,
              "type": "abs"
            },
            "instance_type": "n1-standard-8"
          },
          "node_count": 3,
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## Get NKS Node Pool Details

**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}`

Get details about an NKS node pool

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

### Returns

- `NKSNodePool object { id, cluster_id, created_at, 6 more }`

  NKS node pool details.

  - `id: string`

    Unique identifier for the node pool.

  - `cluster_id: string`

    ID of the Cluster this node pool belongs to.

  - `created_at: string`

    When the node pool was created.

  - `name: string`

    Name of the node pool.

  - `node_config: NKSNodePoolNodeConfigResponse`

    Node configuration.

    - `boot_volume: NKSNodePoolBootVolumeResponse`

      Boot volume configuration.

      - `size: number`

        Size of the boot volume in GB.

      - `type: VolumeType`

        Type of the Volume.

        - `"nvme"`

        - `"abs"`

    - `instance_type: string`

      Instance type name.

    - `labels: array of string`

      Kubernetes labels applied to each node in the pool. Each entry is "key=value".

  - `node_count: number`

    Number of nodes.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `tags: array of string`

    Tags attached to the node pool.

  - `updated_at: string`

    When the node pool was last updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "cluster_id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "name": "my-node-pool",
  "node_config": {
    "boot_volume": {
      "size": 100,
      "type": "abs"
    },
    "instance_type": "n1-standard-8",
    "labels": [
      "env=prod",
      "team=platform"
    ]
  },
  "node_count": 3,
  "status": "ready",
  "tags": [
    "production",
    "ethereum"
  ],
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## Update NKS Node Pool

**patch** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}`

Update an NKS node pool

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

### Body Parameters

- `name: optional string`

  Name of the node pool.

- `node_config: optional object { labels }`

  Partial node configuration update.

  - `labels: optional array of string`

    Kubernetes labels to apply to each node in the pool. Each entry is "key=value".
    When provided, the list fully replaces the current labels on the pool and on live nodes.

- `node_count: optional number`

  Number of nodes.

- `tags: optional array of string`

  Tags to attach to the node pool.

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "name": "my-node-pool",
          "node_count": 5,
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## Delete NKS Node Pool

**delete** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}`

Delete an NKS node pool

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID \
    -X DELETE \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Node Pools

**get** `/v1/nks/clusters/{cluster_id}/pools`

List all node pools in an NKS cluster

### Path Parameters

- `cluster_id: string`

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `NKSNodePoolList object { items, pagination }`

  - `items: array of NKSNodePool`

    - `id: string`

      Unique identifier for the node pool.

    - `cluster_id: string`

      ID of the Cluster this node pool belongs to.

    - `created_at: string`

      When the node pool was created.

    - `name: string`

      Name of the node pool.

    - `node_config: NKSNodePoolNodeConfigResponse`

      Node configuration.

      - `boot_volume: NKSNodePoolBootVolumeResponse`

        Boot volume configuration.

        - `size: number`

          Size of the boot volume in GB.

        - `type: VolumeType`

          Type of the Volume.

          - `"nvme"`

          - `"abs"`

      - `instance_type: string`

        Instance type name.

      - `labels: array of string`

        Kubernetes labels applied to each node in the pool. Each entry is "key=value".

    - `node_count: number`

      Number of nodes.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `tags: array of string`

      Tags attached to the node pool.

    - `updated_at: string`

      When the node pool was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "cluster_id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "name": "my-node-pool",
      "node_config": {
        "boot_volume": {
          "size": 100,
          "type": "abs"
        },
        "instance_type": "n1-standard-8",
        "labels": [
          "env=prod",
          "team=platform"
        ]
      },
      "node_count": 3,
      "status": "ready",
      "tags": [
        "production",
        "ethereum"
      ],
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### NKS Node Pool

- `NKSNodePool object { id, cluster_id, created_at, 6 more }`

  NKS node pool details.

  - `id: string`

    Unique identifier for the node pool.

  - `cluster_id: string`

    ID of the Cluster this node pool belongs to.

  - `created_at: string`

    When the node pool was created.

  - `name: string`

    Name of the node pool.

  - `node_config: NKSNodePoolNodeConfigResponse`

    Node configuration.

    - `boot_volume: NKSNodePoolBootVolumeResponse`

      Boot volume configuration.

      - `size: number`

        Size of the boot volume in GB.

      - `type: VolumeType`

        Type of the Volume.

        - `"nvme"`

        - `"abs"`

    - `instance_type: string`

      Instance type name.

    - `labels: array of string`

      Kubernetes labels applied to each node in the pool. Each entry is "key=value".

  - `node_count: number`

    Number of nodes.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `tags: array of string`

    Tags attached to the node pool.

  - `updated_at: string`

    When the node pool was last updated.

### NKS Node Pool Boot Volume

- `NKSNodePoolBootVolume object { size, type }`

  Boot volume configuration.

  - `size: number`

    Size of the boot volume in GB.

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

### NKS Node Pool Boot Volume Response

- `NKSNodePoolBootVolumeResponse object { size, type }`

  Boot volume configuration.

  - `size: number`

    Size of the boot volume in GB.

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

### NKS Node Pool List

- `NKSNodePoolList object { items, pagination }`

  - `items: array of NKSNodePool`

    - `id: string`

      Unique identifier for the node pool.

    - `cluster_id: string`

      ID of the Cluster this node pool belongs to.

    - `created_at: string`

      When the node pool was created.

    - `name: string`

      Name of the node pool.

    - `node_config: NKSNodePoolNodeConfigResponse`

      Node configuration.

      - `boot_volume: NKSNodePoolBootVolumeResponse`

        Boot volume configuration.

        - `size: number`

          Size of the boot volume in GB.

        - `type: VolumeType`

          Type of the Volume.

          - `"nvme"`

          - `"abs"`

      - `instance_type: string`

        Instance type name.

      - `labels: array of string`

        Kubernetes labels applied to each node in the pool. Each entry is "key=value".

    - `node_count: number`

      Number of nodes.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `tags: array of string`

      Tags attached to the node pool.

    - `updated_at: string`

      When the node pool was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### NKS Node Pool Node Config

- `NKSNodePoolNodeConfig object { boot_volume, instance_type, labels }`

  Node configuration.

  - `boot_volume: NKSNodePoolBootVolume`

    Boot volume configuration.

    - `size: number`

      Size of the boot volume in GB.

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

  - `instance_type: string`

    Instance type name used for worker nodes.

  - `labels: optional array of string`

    Kubernetes labels to apply to each node in the pool. Each entry is "key=value".
    Keys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.

### NKS Node Pool Node Config Response

- `NKSNodePoolNodeConfigResponse object { boot_volume, instance_type, labels }`

  Node configuration.

  - `boot_volume: NKSNodePoolBootVolumeResponse`

    Boot volume configuration.

    - `size: number`

      Size of the boot volume in GB.

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

  - `instance_type: string`

    Instance type name.

  - `labels: array of string`

    Kubernetes labels applied to each node in the pool. Each entry is "key=value".

# Availability

## Check Create NKS Node Pool Availability

**post** `/v1/nks/clusters/{cluster_id}/pools/availability`

Check if a node pool can be created in an NKS cluster

### Path Parameters

- `cluster_id: string`

### Body Parameters

- `name: string`

  Name of the node pool.

- `node_config: NKSNodePoolNodeConfig`

  Node configuration.

  - `boot_volume: NKSNodePoolBootVolume`

    Boot volume configuration.

    - `size: number`

      Size of the boot volume in GB.

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

  - `instance_type: string`

    Instance type name used for worker nodes.

  - `labels: optional array of string`

    Kubernetes labels to apply to each node in the pool. Each entry is "key=value".
    Keys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.

- `node_count: number`

  Number of nodes. Must be between 1 and 100.

- `tags: optional array of string`

  Tags to attach to the node pool.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/availability \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "name": "my-node-pool",
          "node_config": {
            "boot_volume": {
              "size": 100,
              "type": "abs"
            },
            "instance_type": "n1-standard-8"
          },
          "node_count": 3,
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

## Check Update NKS Node Pool Availability

**patch** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/availability`

Check if an NKS node pool can be updated

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

### Body Parameters

- `name: optional string`

  Name of the node pool.

- `node_config: optional object { labels }`

  Partial node configuration update.

  - `labels: optional array of string`

    Kubernetes labels to apply to each node in the pool. Each entry is "key=value".
    When provided, the list fully replaces the current labels on the pool and on live nodes.

- `node_count: optional number`

  Number of nodes.

- `tags: optional array of string`

  Tags to attach to the node pool.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID/availability \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "name": "my-node-pool",
          "node_count": 5,
          "tags": [
            "production",
            "ethereum"
          ]
        }'
```

# Nodes

## Get NKS Node Details

**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}`

Get details about an NKS node

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

- `node_id: string`

### Returns

- `NKSNode object { id, created_at, name, 3 more }`

  NKS node details.

  - `id: string`

    Unique identifier for the node.

  - `created_at: string`

    When the node was created.

  - `name: string`

    Name of the node.

  - `private_ip: string`

    Private IP address of the node.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `updated_at: string`

    When the node was last updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID/nodes/$NODE_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "name": "my-node-0",
  "private_ip": "10.0.0.10",
  "status": "ready",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## Delete NKS Node

**delete** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}`

Delete a single node from an NKS node pool

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

- `node_id: string`

### Returns

- `Operation object { id, created_at, details, 6 more }`

  Operation details.

  - `id: string`

    Unique identifier for the Operation.

  - `created_at: string`

    When the Operation was created.

  - `details: OperationDetails`

    Structured details about what an operation is changing.

    - `changes: OperationChanges`

      Map of changed field names to their from/to diffs. Keys depend on the parent operation's kind+type.

      - `from: string or number or boolean or array of string`

        Previous value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

      - `to: string or number or boolean or array of string`

        New value.

        - `string`

        - `number`

        - `boolean`

        - `array of string`

  - `kind: OperationKind`

    Kind of Operation.

    - `"vm"`

    - `"volume"`

    - `"vpc"`

    - `"firewall_rule"`

    - `"nks_cluster"`

    - `"nks_node_pool"`

  - `project_id: string`

    Project ID the Operation belongs to.

  - `resource_id: string`

    ID of the resource that the Operation is acting on.

  - `status: OperationStatus`

    Status of the Operation.

    - `"pending"`

    - `"running"`

    - `"done"`

    - `"failed"`

    - `"unknown"`

  - `type: OperationType`

    Type of Operation.

    - `"create"`

    - `"update"`

    - `"delete"`

    - `"restart"`

  - `updated_at: string`

    When the Operation was updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID/nodes/$NODE_ID \
    -X DELETE \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Nodes

**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes`

List all nodes in an NKS node pool

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `NKSNodeList object { items, pagination }`

  - `items: array of NKSNode`

    - `id: string`

      Unique identifier for the node.

    - `created_at: string`

      When the node was created.

    - `name: string`

      Name of the node.

    - `private_ip: string`

      Private IP address of the node.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `updated_at: string`

      When the node was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID/nodes \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "name": "my-node-0",
      "private_ip": "10.0.0.10",
      "status": "ready",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### NKS Node

- `NKSNode object { id, created_at, name, 3 more }`

  NKS node details.

  - `id: string`

    Unique identifier for the node.

  - `created_at: string`

    When the node was created.

  - `name: string`

    Name of the node.

  - `private_ip: string`

    Private IP address of the node.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `updated_at: string`

    When the node was last updated.

### NKS Node List

- `NKSNodeList object { items, pagination }`

  - `items: array of NKSNode`

    - `id: string`

      Unique identifier for the node.

    - `created_at: string`

      When the node was created.

    - `name: string`

      Name of the node.

    - `private_ip: string`

      Private IP address of the node.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `updated_at: string`

      When the node was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

# Volumes

## Get NKS Node Volume Details

**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}/volumes/{volume_id}`

Get details about a volume attached to an NKS node

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

- `node_id: string`

- `volume_id: string`

### Returns

- `NKSNodeVolume object { id, created_at, kind, 5 more }`

  NKS node volume details.

  - `id: string`

    Unique identifier for the volume.

  - `created_at: string`

    When the volume was created.

  - `kind: VolumeKind`

    Volume kind.

    - `"boot"`

    - `"data"`

  - `name: string`

    Name of the volume.

  - `size: number`

    Size of the volume in GB.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

  - `updated_at: string`

    When the volume was last updated.

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID/nodes/$NODE_ID/volumes/$VOLUME_ID \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "kind": "boot",
  "name": "my-volume",
  "size": 100,
  "status": "ready",
  "type": "abs",
  "updated_at": "2025-01-01T00:00:00Z"
}
```

## List NKS Node Volumes

**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}/volumes`

List all volumes attached to an NKS node

### Path Parameters

- `cluster_id: string`

- `pool_id: string`

- `node_id: string`

### Query Parameters

- `cursor: optional string`

  Pagination cursor returned by a previous request

- `limit: optional number`

  Maximum number of items to return

### Returns

- `NKSNodeVolumeList object { items, pagination }`

  - `items: array of NKSNodeVolume`

    - `id: string`

      Unique identifier for the volume.

    - `created_at: string`

      When the volume was created.

    - `kind: VolumeKind`

      Volume kind.

      - `"boot"`

      - `"data"`

    - `name: string`

      Name of the volume.

    - `size: number`

      Size of the volume in GB.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

    - `updated_at: string`

      When the volume was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`

### Example

```http
curl https://api.nirvanalabs.io/v1/nks/clusters/$CLUSTER_ID/pools/$POOL_ID/nodes/$NODE_ID/volumes \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"
```

#### Response

```json
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "kind": "boot",
      "name": "my-volume",
      "size": 100,
      "status": "ready",
      "type": "abs",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### NKS Node Volume

- `NKSNodeVolume object { id, created_at, kind, 5 more }`

  NKS node volume details.

  - `id: string`

    Unique identifier for the volume.

  - `created_at: string`

    When the volume was created.

  - `kind: VolumeKind`

    Volume kind.

    - `"boot"`

    - `"data"`

  - `name: string`

    Name of the volume.

  - `size: number`

    Size of the volume in GB.

  - `status: ResourceStatus`

    Status of the resource.

    - `"pending"`

    - `"creating"`

    - `"updating"`

    - `"ready"`

    - `"deleting"`

    - `"deleted"`

    - `"error"`

  - `type: VolumeType`

    Type of the Volume.

    - `"nvme"`

    - `"abs"`

  - `updated_at: string`

    When the volume was last updated.

### NKS Node Volume List

- `NKSNodeVolumeList object { items, pagination }`

  - `items: array of NKSNodeVolume`

    - `id: string`

      Unique identifier for the volume.

    - `created_at: string`

      When the volume was created.

    - `kind: VolumeKind`

      Volume kind.

      - `"boot"`

      - `"data"`

    - `name: string`

      Name of the volume.

    - `size: number`

      Size of the volume in GB.

    - `status: ResourceStatus`

      Status of the resource.

      - `"pending"`

      - `"creating"`

      - `"updating"`

      - `"ready"`

      - `"deleting"`

      - `"deleted"`

      - `"error"`

    - `type: VolumeType`

      Type of the Volume.

      - `"nvme"`

      - `"abs"`

    - `updated_at: string`

      When the volume was last updated.

  - `pagination: Pagination`

    Pagination response details.

    - `next_cursor: string`

    - `previous_cursor: string`

    - `total_count: number`
