# Public Cloud › Container › Managed Kubernetes Service › Node Pools API

> Part of the OVHcloud developer hub. Index of every page and section: https://developers.eu.ovhcloud.com/llms.txt
> The Public Cloud product's sections: https://developers.eu.ovhcloud.com/reference/public-cloud/llms.txt
> Everything in one file: https://developers.eu.ovhcloud.com/llms-full.txt

> 10 operations of the OVHcloud API. Calls carry `authorization: Bearer $OVH_TOKEN`; the EU host is shown, Canada and the United States answer on api.ca.ovhcloud.com and api.us.ovhcloud.com.

Page: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/

OpenAPI v1: https://api.eu.ovhcloud.com/1.0/__schemas/developer-hub-navigation/public-cloud/container/managed-kubernetes-service/node-pools.json?format=openapi3
OpenAPI v2: https://api.eu.ovhcloud.com/v2/__schemas/developer-hub-navigation/public-cloud/container/managed-kubernetes-service/node-pools.json?format=openapi3

## Operations

- `GET /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool` — List nodepools of a managed Kubernetes cluster
- `GET /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}` — Get a nodepool of a managed Kubernetes cluster
- `POST /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool` — Create a nodepool in a managed Kubernetes cluster
- `DELETE /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}` — Delete a nodepool of a managed Kubernetes cluster
- `PUT /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}` — Update a nodepool of a managed Kubernetes cluster
- `GET /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node` — List nodes of a managed Kubernetes cluster nodepool
- `GET /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node/{nodeId}` — Get a node of a managed Kubernetes cluster nodepool
- `GET /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/event` — List all events related to a managed Kubernetes cluster nodepool
- `GET /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task` — List all tasks related to a managed Kubernetes cluster nodepool
- `GET /publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task/{taskId}` — Get a specific task related to a managed Kubernetes cluster nodepool

## List nodepools of a managed Kubernetes cluster

`GET /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#get-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `X-Pagination-Cursor` | header | string |  | Pagination cursor |
| `X-Pagination-Size` | header | integer |  | Pagination size |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `projectId` | path | string | yes | Project ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | publicCloud.managedKubernetes.Nodepool[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `checksum` | string | read-only | Concurrency control hash of the target specification |
| `createdAt` | string (date-time) | read-only | Nodepool creation timestamp |
| `currentState` | publicCloud.managedKubernetes.NodepoolCurrentState | read-only | Actual nodepool state |
| `currentState.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity | read-only | Observed anti-affinity placement of the nodepool nodes |
| `currentState.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `currentState.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `currentState.autoscaler` | publicCloud.managedKubernetes.Autoscaler | read-only | Observed automatic node scaling configuration |
| `currentState.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `currentState.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `currentState.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `currentState.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `currentState.availabilityZone` | string | read-only | Observed availability zone the nodepool nodes are placed in |
| `currentState.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum | read-only | Observed billing period applied to the nodepool nodes — one of `HOURLY`, `MONTHLY` |
| `currentState.desiredNodes` | integer | read-only | Observed desired number of nodes in the nodepool |
| `currentState.name` | string | read-only | Observed nodepool name |
| `currentState.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | read-only | Observed hardware configuration of the nodepool nodes |
| `currentState.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `currentState.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `currentState.rollout` | publicCloud.managedKubernetes.NodepoolRollout | read-only | Observed strategy used to apply node changes across the nodepool |
| `currentState.rollout.strategy` | publicCloud.managedKubernetes.NodepoolRolloutStrategyEnum | read-only | Strategy used to apply node changes across the nodepool — one of `IN_PLACE`, `ROLLING_UPDATE` |
| `currentState.status` | publicCloud.managedKubernetes.NodepoolStatus | read-only | Observed size and readiness of the nodepool nodes |
| `currentState.status.currentNodes` | integer | read-only | Number of nodes currently provisioned in the nodepool |
| `currentState.status.readyNodes` | integer | read-only | Number of nodes reporting a Ready condition |
| `currentState.status.upToDateNodes` | integer | read-only | Number of nodes running the current nodepool specification |
| `currentState.template` | publicCloud.managedKubernetes.NodeTemplate | read-only | Observed Kubernetes metadata and scheduling settings applied to the nodepool nodes |
| `currentState.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `currentState.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `currentTasks` | common.CurrentTask[] | read-only | In-progress asynchronous operations on the nodepool |
| `currentTasks[].errors` | common.TaskError[] | read-only | Errors that occurred on the task |
| `currentTasks[].errors[].message` | string | read-only | Error description |
| `currentTasks[].id` | string (uuid) | read-only | Identifier of the current task |
| `currentTasks[].link` | string | read-only | Link to the task details |
| `currentTasks[].status` | common.CurrentTaskStatusEnum | read-only | Current global status of the current task — one of `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `currentTasks[].type` | string | read-only | Type of the current task |
| `id` | string (uuid) | read-only | Unique identifier of the nodepool |
| `resourceStatus` | common.ResourceStatusEnum | read-only | Current lifecycle status of the nodepool — one of `CREATING`, `CREATION_PLANNED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |
| `targetSpec` | publicCloud.managedKubernetes.NodepoolTargetSpec | read-only | Desired nodepool specification |
| `targetSpec.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity |  | Anti-affinity placement of the nodepool nodes. Immutable after creation. |
| `targetSpec.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `targetSpec.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `targetSpec.autoscaler` | publicCloud.managedKubernetes.Autoscaler |  | Automatic node scaling for the nodepool |
| `targetSpec.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `targetSpec.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `targetSpec.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `targetSpec.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `targetSpec.availabilityZone` | string |  | Availability zone the nodepool nodes are placed in. Immutable after creation. |
| `targetSpec.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum |  | Billing period applied to the nodepool nodes. Immutable after creation. — one of `HOURLY`, `MONTHLY` |
| `targetSpec.desiredNodes` | integer |  | Desired number of nodes in the nodepool. When the autoscaler is enabled, must be at least autoscaler.minNodes. |
| `targetSpec.name` | string |  | Nodepool name. Immutable after creation. |
| `targetSpec.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | yes | Hardware configuration of the nodepool nodes. Immutable after creation. |
| `targetSpec.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `targetSpec.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `targetSpec.template` | publicCloud.managedKubernetes.NodeTemplate |  | Kubernetes metadata and scheduling settings applied to every node of the nodepool |
| `targetSpec.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `targetSpec.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `updatedAt` | string (date-time) | read-only | Last nodepool modification timestamp |

```json
[
  {
    "checksum": "string",
    "createdAt": "2024-01-01T12:00:00Z",
    "currentState": {
      "antiAffinity": {
        "enabled": true,
        "policy": "HARD"
      },
      "autoscaler": {
        "enabled": true,
        "maxNodes": 0,
        "minNodes": 0,
        "scaleDown": {
          "unneededTimeSeconds": 0,
          "unreadyTimeSeconds": 0,
          "utilizationThreshold": 0
        }
      },
      "availabilityZone": "string",
      "billingType": "HOURLY",
      "desiredNodes": 0,
      "name": "string",
      "nodeConfig": {
        "attachFloatingIp": {
          "enabled": true
        },
        "flavor": "string"
      },
      "rollout": {
        "strategy": "IN_PLACE"
      },
      "status": {
        "currentNodes": 0,
        "readyNodes": 0,
        "upToDateNodes": 0
      },
      "template": {
        "metadata": {
          "annotations": {
            "key": "string"
          },
          "finalizers": [
            "string"
          ],
          "labels": {
            "key": "string"
          }
        },
        "spec": {
          "taints": [
            {
              "effect": null,
              "key": null,
              "value": null
            }
          ],
          "unschedulable": true
        }
      }
    },
    "currentTasks": [
      {
        "errors": [
          {
            "message": "string"
          }
        ],
        "id": "00000000-0000-0000-0000-000000000000",
        "link": "string",
        "status": "ERROR",
        "type": "string"
      }
    ],
  …
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool");

print_r($result);
?>
```

## Get a nodepool of a managed Kubernetes cluster

`GET /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#get-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | publicCloud.managedKubernetes.Nodepool | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `checksum` | string | read-only | Concurrency control hash of the target specification |
| `createdAt` | string (date-time) | read-only | Nodepool creation timestamp |
| `currentState` | publicCloud.managedKubernetes.NodepoolCurrentState | read-only | Actual nodepool state |
| `currentState.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity | read-only | Observed anti-affinity placement of the nodepool nodes |
| `currentState.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `currentState.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `currentState.autoscaler` | publicCloud.managedKubernetes.Autoscaler | read-only | Observed automatic node scaling configuration |
| `currentState.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `currentState.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `currentState.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `currentState.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `currentState.availabilityZone` | string | read-only | Observed availability zone the nodepool nodes are placed in |
| `currentState.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum | read-only | Observed billing period applied to the nodepool nodes — one of `HOURLY`, `MONTHLY` |
| `currentState.desiredNodes` | integer | read-only | Observed desired number of nodes in the nodepool |
| `currentState.name` | string | read-only | Observed nodepool name |
| `currentState.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | read-only | Observed hardware configuration of the nodepool nodes |
| `currentState.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `currentState.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `currentState.rollout` | publicCloud.managedKubernetes.NodepoolRollout | read-only | Observed strategy used to apply node changes across the nodepool |
| `currentState.rollout.strategy` | publicCloud.managedKubernetes.NodepoolRolloutStrategyEnum | read-only | Strategy used to apply node changes across the nodepool — one of `IN_PLACE`, `ROLLING_UPDATE` |
| `currentState.status` | publicCloud.managedKubernetes.NodepoolStatus | read-only | Observed size and readiness of the nodepool nodes |
| `currentState.status.currentNodes` | integer | read-only | Number of nodes currently provisioned in the nodepool |
| `currentState.status.readyNodes` | integer | read-only | Number of nodes reporting a Ready condition |
| `currentState.status.upToDateNodes` | integer | read-only | Number of nodes running the current nodepool specification |
| `currentState.template` | publicCloud.managedKubernetes.NodeTemplate | read-only | Observed Kubernetes metadata and scheduling settings applied to the nodepool nodes |
| `currentState.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `currentState.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `currentTasks` | common.CurrentTask[] | read-only | In-progress asynchronous operations on the nodepool |
| `currentTasks[].errors` | common.TaskError[] | read-only | Errors that occurred on the task |
| `currentTasks[].errors[].message` | string | read-only | Error description |
| `currentTasks[].id` | string (uuid) | read-only | Identifier of the current task |
| `currentTasks[].link` | string | read-only | Link to the task details |
| `currentTasks[].status` | common.CurrentTaskStatusEnum | read-only | Current global status of the current task — one of `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `currentTasks[].type` | string | read-only | Type of the current task |
| `id` | string (uuid) | read-only | Unique identifier of the nodepool |
| `resourceStatus` | common.ResourceStatusEnum | read-only | Current lifecycle status of the nodepool — one of `CREATING`, `CREATION_PLANNED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |
| `targetSpec` | publicCloud.managedKubernetes.NodepoolTargetSpec | read-only | Desired nodepool specification |
| `targetSpec.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity |  | Anti-affinity placement of the nodepool nodes. Immutable after creation. |
| `targetSpec.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `targetSpec.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `targetSpec.autoscaler` | publicCloud.managedKubernetes.Autoscaler |  | Automatic node scaling for the nodepool |
| `targetSpec.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `targetSpec.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `targetSpec.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `targetSpec.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `targetSpec.availabilityZone` | string |  | Availability zone the nodepool nodes are placed in. Immutable after creation. |
| `targetSpec.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum |  | Billing period applied to the nodepool nodes. Immutable after creation. — one of `HOURLY`, `MONTHLY` |
| `targetSpec.desiredNodes` | integer |  | Desired number of nodes in the nodepool. When the autoscaler is enabled, must be at least autoscaler.minNodes. |
| `targetSpec.name` | string |  | Nodepool name. Immutable after creation. |
| `targetSpec.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | yes | Hardware configuration of the nodepool nodes. Immutable after creation. |
| `targetSpec.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `targetSpec.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `targetSpec.template` | publicCloud.managedKubernetes.NodeTemplate |  | Kubernetes metadata and scheduling settings applied to every node of the nodepool |
| `targetSpec.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `targetSpec.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `updatedAt` | string (date-time) | read-only | Last nodepool modification timestamp |

```json
{
  "checksum": "string",
  "createdAt": "2024-01-01T12:00:00Z",
  "currentState": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
    "autoscaler": {
      "enabled": true,
      "maxNodes": 0,
      "minNodes": 0,
      "scaleDown": {
        "unneededTimeSeconds": 0,
        "unreadyTimeSeconds": 0,
        "utilizationThreshold": 0
      }
    },
    "availabilityZone": "string",
    "billingType": "HOURLY",
    "desiredNodes": 0,
    "name": "string",
    "nodeConfig": {
      "attachFloatingIp": {
        "enabled": true
      },
      "flavor": "string"
    },
    "rollout": {
      "strategy": "IN_PLACE"
    },
    "status": {
      "currentNodes": 0,
      "readyNodes": 0,
      "upToDateNodes": 0
    },
    "template": {
      "metadata": {
        "annotations": {
          "key": "string"
        },
        "finalizers": [
          "string"
        ],
        "labels": {
          "key": "string"
        }
      },
      "spec": {
        "taints": [
          {
            "effect": "NoExecute",
            "key": "string",
            "value": "string"
          }
        ],
        "unschedulable": true
      }
    }
  },
  "currentTasks": [
    {
      "errors": [
        {
          "message": "string"
        }
      ],
      "id": "00000000-0000-0000-0000-000000000000",
      "link": "string",
      "status": "ERROR",
      "type": "string"
    }
  ],
  "id": "00000000-0000-0000-0000-000000000000",
  "resourceStatus": "CREATING",
  "targetSpec": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
  …
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}");

print_r($result);
?>
```

## Create a nodepool in a managed Kubernetes cluster

`POST /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#post-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/create`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `projectId` | path | string | yes | Project ID |

### Request body (required)

Type: `publicCloud.managedKubernetes.NodepoolCreation`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `targetSpec` | publicCloud.managedKubernetes.NodepoolTargetSpec | yes | Desired nodepool specification |
| `targetSpec.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity |  | Anti-affinity placement of the nodepool nodes. Immutable after creation. |
| `targetSpec.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `targetSpec.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `targetSpec.autoscaler` | publicCloud.managedKubernetes.Autoscaler |  | Automatic node scaling for the nodepool |
| `targetSpec.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `targetSpec.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `targetSpec.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `targetSpec.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `targetSpec.availabilityZone` | string |  | Availability zone the nodepool nodes are placed in. Immutable after creation. |
| `targetSpec.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum |  | Billing period applied to the nodepool nodes. Immutable after creation. — one of `HOURLY`, `MONTHLY` |
| `targetSpec.desiredNodes` | integer |  | Desired number of nodes in the nodepool. When the autoscaler is enabled, must be at least autoscaler.minNodes. |
| `targetSpec.name` | string |  | Nodepool name. Immutable after creation. |
| `targetSpec.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | yes | Hardware configuration of the nodepool nodes. Immutable after creation. |
| `targetSpec.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `targetSpec.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `targetSpec.template` | publicCloud.managedKubernetes.NodeTemplate |  | Kubernetes metadata and scheduling settings applied to every node of the nodepool |
| `targetSpec.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `targetSpec.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |

```json
{
  "targetSpec": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
    "autoscaler": {
      "enabled": true,
      "maxNodes": 0,
      "minNodes": 0,
      "scaleDown": {
        "unneededTimeSeconds": 0,
        "unreadyTimeSeconds": 0,
        "utilizationThreshold": 0
      }
    },
    "availabilityZone": "string",
    "billingType": "HOURLY",
    "desiredNodes": 0,
    "name": "string",
    "nodeConfig": {
      "attachFloatingIp": {
        "enabled": true
      },
      "flavor": "string"
    },
    "template": {
      "metadata": {
        "annotations": {
          "key": "string"
        },
        "finalizers": [
          "string"
        ],
        "labels": {
          "key": "string"
        }
      },
      "spec": {
        "taints": [
          {
            "effect": "NoExecute",
            "key": "string",
            "value": "string"
          }
        ],
        "unschedulable": true
      }
    }
  }
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | publicCloud.managedKubernetes.Nodepool | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `checksum` | string | read-only | Concurrency control hash of the target specification |
| `createdAt` | string (date-time) | read-only | Nodepool creation timestamp |
| `currentState` | publicCloud.managedKubernetes.NodepoolCurrentState | read-only | Actual nodepool state |
| `currentState.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity | read-only | Observed anti-affinity placement of the nodepool nodes |
| `currentState.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `currentState.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `currentState.autoscaler` | publicCloud.managedKubernetes.Autoscaler | read-only | Observed automatic node scaling configuration |
| `currentState.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `currentState.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `currentState.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `currentState.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `currentState.availabilityZone` | string | read-only | Observed availability zone the nodepool nodes are placed in |
| `currentState.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum | read-only | Observed billing period applied to the nodepool nodes — one of `HOURLY`, `MONTHLY` |
| `currentState.desiredNodes` | integer | read-only | Observed desired number of nodes in the nodepool |
| `currentState.name` | string | read-only | Observed nodepool name |
| `currentState.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | read-only | Observed hardware configuration of the nodepool nodes |
| `currentState.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `currentState.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `currentState.rollout` | publicCloud.managedKubernetes.NodepoolRollout | read-only | Observed strategy used to apply node changes across the nodepool |
| `currentState.rollout.strategy` | publicCloud.managedKubernetes.NodepoolRolloutStrategyEnum | read-only | Strategy used to apply node changes across the nodepool — one of `IN_PLACE`, `ROLLING_UPDATE` |
| `currentState.status` | publicCloud.managedKubernetes.NodepoolStatus | read-only | Observed size and readiness of the nodepool nodes |
| `currentState.status.currentNodes` | integer | read-only | Number of nodes currently provisioned in the nodepool |
| `currentState.status.readyNodes` | integer | read-only | Number of nodes reporting a Ready condition |
| `currentState.status.upToDateNodes` | integer | read-only | Number of nodes running the current nodepool specification |
| `currentState.template` | publicCloud.managedKubernetes.NodeTemplate | read-only | Observed Kubernetes metadata and scheduling settings applied to the nodepool nodes |
| `currentState.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `currentState.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `currentTasks` | common.CurrentTask[] | read-only | In-progress asynchronous operations on the nodepool |
| `currentTasks[].errors` | common.TaskError[] | read-only | Errors that occurred on the task |
| `currentTasks[].errors[].message` | string | read-only | Error description |
| `currentTasks[].id` | string (uuid) | read-only | Identifier of the current task |
| `currentTasks[].link` | string | read-only | Link to the task details |
| `currentTasks[].status` | common.CurrentTaskStatusEnum | read-only | Current global status of the current task — one of `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `currentTasks[].type` | string | read-only | Type of the current task |
| `id` | string (uuid) | read-only | Unique identifier of the nodepool |
| `resourceStatus` | common.ResourceStatusEnum | read-only | Current lifecycle status of the nodepool — one of `CREATING`, `CREATION_PLANNED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |
| `targetSpec` | publicCloud.managedKubernetes.NodepoolTargetSpec | read-only | Desired nodepool specification |
| `targetSpec.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity |  | Anti-affinity placement of the nodepool nodes. Immutable after creation. |
| `targetSpec.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `targetSpec.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `targetSpec.autoscaler` | publicCloud.managedKubernetes.Autoscaler |  | Automatic node scaling for the nodepool |
| `targetSpec.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `targetSpec.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `targetSpec.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `targetSpec.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `targetSpec.availabilityZone` | string |  | Availability zone the nodepool nodes are placed in. Immutable after creation. |
| `targetSpec.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum |  | Billing period applied to the nodepool nodes. Immutable after creation. — one of `HOURLY`, `MONTHLY` |
| `targetSpec.desiredNodes` | integer |  | Desired number of nodes in the nodepool. When the autoscaler is enabled, must be at least autoscaler.minNodes. |
| `targetSpec.name` | string |  | Nodepool name. Immutable after creation. |
| `targetSpec.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | yes | Hardware configuration of the nodepool nodes. Immutable after creation. |
| `targetSpec.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `targetSpec.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `targetSpec.template` | publicCloud.managedKubernetes.NodeTemplate |  | Kubernetes metadata and scheduling settings applied to every node of the nodepool |
| `targetSpec.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `targetSpec.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `updatedAt` | string (date-time) | read-only | Last nodepool modification timestamp |

```json
{
  "checksum": "string",
  "createdAt": "2024-01-01T12:00:00Z",
  "currentState": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
    "autoscaler": {
      "enabled": true,
      "maxNodes": 0,
      "minNodes": 0,
      "scaleDown": {
        "unneededTimeSeconds": 0,
        "unreadyTimeSeconds": 0,
        "utilizationThreshold": 0
      }
    },
    "availabilityZone": "string",
    "billingType": "HOURLY",
    "desiredNodes": 0,
    "name": "string",
    "nodeConfig": {
      "attachFloatingIp": {
        "enabled": true
      },
      "flavor": "string"
    },
    "rollout": {
      "strategy": "IN_PLACE"
    },
    "status": {
      "currentNodes": 0,
      "readyNodes": 0,
      "upToDateNodes": 0
    },
    "template": {
      "metadata": {
        "annotations": {
          "key": "string"
        },
        "finalizers": [
          "string"
        ],
        "labels": {
          "key": "string"
        }
      },
      "spec": {
        "taints": [
          {
            "effect": "NoExecute",
            "key": "string",
            "value": "string"
          }
        ],
        "unschedulable": true
      }
    }
  },
  "currentTasks": [
    {
      "errors": [
        {
          "message": "string"
        }
      ],
      "id": "00000000-0000-0000-0000-000000000000",
      "link": "string",
      "status": "ERROR",
      "type": "string"
    }
  ],
  "id": "00000000-0000-0000-0000-000000000000",
  "resourceStatus": "CREATING",
  "targetSpec": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
  …
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN" \
  -H "content-type: application/json" \
  -d '{ }'
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

# Request body type: publicCloud.managedKubernetes.NodepoolCreation
result = client.post("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool",
	targetSpec = None, # Desired nodepool specification (type: publicCloud.managedKubernetes.NodepoolTargetSpec)
)

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

// Request body type: publicCloud.managedKubernetes.NodepoolCreation
$result = $ovh->post("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool", array(
	targetSpec => null, // Desired nodepool specification (type: publicCloud.managedKubernetes.NodepoolTargetSpec)
));

print_r($result);
?>
```

## Delete a nodepool of a managed Kubernetes cluster

`DELETE /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#delete-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/delete`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | publicCloud.managedKubernetes.Nodepool | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `checksum` | string | read-only | Concurrency control hash of the target specification |
| `createdAt` | string (date-time) | read-only | Nodepool creation timestamp |
| `currentState` | publicCloud.managedKubernetes.NodepoolCurrentState | read-only | Actual nodepool state |
| `currentState.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity | read-only | Observed anti-affinity placement of the nodepool nodes |
| `currentState.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `currentState.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `currentState.autoscaler` | publicCloud.managedKubernetes.Autoscaler | read-only | Observed automatic node scaling configuration |
| `currentState.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `currentState.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `currentState.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `currentState.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `currentState.availabilityZone` | string | read-only | Observed availability zone the nodepool nodes are placed in |
| `currentState.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum | read-only | Observed billing period applied to the nodepool nodes — one of `HOURLY`, `MONTHLY` |
| `currentState.desiredNodes` | integer | read-only | Observed desired number of nodes in the nodepool |
| `currentState.name` | string | read-only | Observed nodepool name |
| `currentState.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | read-only | Observed hardware configuration of the nodepool nodes |
| `currentState.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `currentState.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `currentState.rollout` | publicCloud.managedKubernetes.NodepoolRollout | read-only | Observed strategy used to apply node changes across the nodepool |
| `currentState.rollout.strategy` | publicCloud.managedKubernetes.NodepoolRolloutStrategyEnum | read-only | Strategy used to apply node changes across the nodepool — one of `IN_PLACE`, `ROLLING_UPDATE` |
| `currentState.status` | publicCloud.managedKubernetes.NodepoolStatus | read-only | Observed size and readiness of the nodepool nodes |
| `currentState.status.currentNodes` | integer | read-only | Number of nodes currently provisioned in the nodepool |
| `currentState.status.readyNodes` | integer | read-only | Number of nodes reporting a Ready condition |
| `currentState.status.upToDateNodes` | integer | read-only | Number of nodes running the current nodepool specification |
| `currentState.template` | publicCloud.managedKubernetes.NodeTemplate | read-only | Observed Kubernetes metadata and scheduling settings applied to the nodepool nodes |
| `currentState.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `currentState.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `currentTasks` | common.CurrentTask[] | read-only | In-progress asynchronous operations on the nodepool |
| `currentTasks[].errors` | common.TaskError[] | read-only | Errors that occurred on the task |
| `currentTasks[].errors[].message` | string | read-only | Error description |
| `currentTasks[].id` | string (uuid) | read-only | Identifier of the current task |
| `currentTasks[].link` | string | read-only | Link to the task details |
| `currentTasks[].status` | common.CurrentTaskStatusEnum | read-only | Current global status of the current task — one of `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `currentTasks[].type` | string | read-only | Type of the current task |
| `id` | string (uuid) | read-only | Unique identifier of the nodepool |
| `resourceStatus` | common.ResourceStatusEnum | read-only | Current lifecycle status of the nodepool — one of `CREATING`, `CREATION_PLANNED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |
| `targetSpec` | publicCloud.managedKubernetes.NodepoolTargetSpec | read-only | Desired nodepool specification |
| `targetSpec.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity |  | Anti-affinity placement of the nodepool nodes. Immutable after creation. |
| `targetSpec.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `targetSpec.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `targetSpec.autoscaler` | publicCloud.managedKubernetes.Autoscaler |  | Automatic node scaling for the nodepool |
| `targetSpec.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `targetSpec.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `targetSpec.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `targetSpec.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `targetSpec.availabilityZone` | string |  | Availability zone the nodepool nodes are placed in. Immutable after creation. |
| `targetSpec.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum |  | Billing period applied to the nodepool nodes. Immutable after creation. — one of `HOURLY`, `MONTHLY` |
| `targetSpec.desiredNodes` | integer |  | Desired number of nodes in the nodepool. When the autoscaler is enabled, must be at least autoscaler.minNodes. |
| `targetSpec.name` | string |  | Nodepool name. Immutable after creation. |
| `targetSpec.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | yes | Hardware configuration of the nodepool nodes. Immutable after creation. |
| `targetSpec.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `targetSpec.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `targetSpec.template` | publicCloud.managedKubernetes.NodeTemplate |  | Kubernetes metadata and scheduling settings applied to every node of the nodepool |
| `targetSpec.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `targetSpec.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `updatedAt` | string (date-time) | read-only | Last nodepool modification timestamp |

```json
{
  "checksum": "string",
  "createdAt": "2024-01-01T12:00:00Z",
  "currentState": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
    "autoscaler": {
      "enabled": true,
      "maxNodes": 0,
      "minNodes": 0,
      "scaleDown": {
        "unneededTimeSeconds": 0,
        "unreadyTimeSeconds": 0,
        "utilizationThreshold": 0
      }
    },
    "availabilityZone": "string",
    "billingType": "HOURLY",
    "desiredNodes": 0,
    "name": "string",
    "nodeConfig": {
      "attachFloatingIp": {
        "enabled": true
      },
      "flavor": "string"
    },
    "rollout": {
      "strategy": "IN_PLACE"
    },
    "status": {
      "currentNodes": 0,
      "readyNodes": 0,
      "upToDateNodes": 0
    },
    "template": {
      "metadata": {
        "annotations": {
          "key": "string"
        },
        "finalizers": [
          "string"
        ],
        "labels": {
          "key": "string"
        }
      },
      "spec": {
        "taints": [
          {
            "effect": "NoExecute",
            "key": "string",
            "value": "string"
          }
        ],
        "unschedulable": true
      }
    }
  },
  "currentTasks": [
    {
      "errors": [
        {
          "message": "string"
        }
      ],
      "id": "00000000-0000-0000-0000-000000000000",
      "link": "string",
      "status": "ERROR",
      "type": "string"
    }
  ],
  "id": "00000000-0000-0000-0000-000000000000",
  "resourceStatus": "CREATING",
  "targetSpec": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
  …
```

### Example

```bash
curl -X DELETE \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.delete("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->delete("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}");

print_r($result);
?>
```

## Update a nodepool of a managed Kubernetes cluster

`PUT /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#put-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/edit`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |

### Request body (required)

Type: `publicCloud.managedKubernetes.NodepoolUpdate`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `checksum` | string |  | Optional concurrency-control checksum. When supplied, it must match the resource's current checksum or the request is rejected with a 409 checksum-mismatch conflict. When omitted or empty, the concurrency check is skipped and the write is forced (last-write-wins). |
| `targetSpec` | publicCloud.managedKubernetes.NodepoolUpdateTargetSpec | yes | Updated nodepool specification with mutable fields only |
| `targetSpec.autoscaler` | publicCloud.managedKubernetes.Autoscaler |  | Automatic node scaling for the nodepool |
| `targetSpec.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `targetSpec.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `targetSpec.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `targetSpec.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `targetSpec.desiredNodes` | integer |  | Desired number of nodes in the nodepool. When the autoscaler is enabled, must be at least autoscaler.minNodes. |
| `targetSpec.template` | publicCloud.managedKubernetes.NodeTemplate |  | Kubernetes metadata and scheduling settings applied to every node of the nodepool |
| `targetSpec.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `targetSpec.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |

```json
{
  "checksum": "string",
  "targetSpec": {
    "autoscaler": {
      "enabled": true,
      "maxNodes": 0,
      "minNodes": 0,
      "scaleDown": {
        "unneededTimeSeconds": 0,
        "unreadyTimeSeconds": 0,
        "utilizationThreshold": 0
      }
    },
    "desiredNodes": 0,
    "template": {
      "metadata": {
        "annotations": {
          "key": "string"
        },
        "finalizers": [
          "string"
        ],
        "labels": {
          "key": "string"
        }
      },
      "spec": {
        "taints": [
          {
            "effect": "NoExecute",
            "key": "string",
            "value": "string"
          }
        ],
        "unschedulable": true
      }
    }
  }
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | publicCloud.managedKubernetes.Nodepool | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `checksum` | string | read-only | Concurrency control hash of the target specification |
| `createdAt` | string (date-time) | read-only | Nodepool creation timestamp |
| `currentState` | publicCloud.managedKubernetes.NodepoolCurrentState | read-only | Actual nodepool state |
| `currentState.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity | read-only | Observed anti-affinity placement of the nodepool nodes |
| `currentState.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `currentState.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `currentState.autoscaler` | publicCloud.managedKubernetes.Autoscaler | read-only | Observed automatic node scaling configuration |
| `currentState.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `currentState.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `currentState.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `currentState.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `currentState.availabilityZone` | string | read-only | Observed availability zone the nodepool nodes are placed in |
| `currentState.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum | read-only | Observed billing period applied to the nodepool nodes — one of `HOURLY`, `MONTHLY` |
| `currentState.desiredNodes` | integer | read-only | Observed desired number of nodes in the nodepool |
| `currentState.name` | string | read-only | Observed nodepool name |
| `currentState.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | read-only | Observed hardware configuration of the nodepool nodes |
| `currentState.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `currentState.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `currentState.rollout` | publicCloud.managedKubernetes.NodepoolRollout | read-only | Observed strategy used to apply node changes across the nodepool |
| `currentState.rollout.strategy` | publicCloud.managedKubernetes.NodepoolRolloutStrategyEnum | read-only | Strategy used to apply node changes across the nodepool — one of `IN_PLACE`, `ROLLING_UPDATE` |
| `currentState.status` | publicCloud.managedKubernetes.NodepoolStatus | read-only | Observed size and readiness of the nodepool nodes |
| `currentState.status.currentNodes` | integer | read-only | Number of nodes currently provisioned in the nodepool |
| `currentState.status.readyNodes` | integer | read-only | Number of nodes reporting a Ready condition |
| `currentState.status.upToDateNodes` | integer | read-only | Number of nodes running the current nodepool specification |
| `currentState.template` | publicCloud.managedKubernetes.NodeTemplate | read-only | Observed Kubernetes metadata and scheduling settings applied to the nodepool nodes |
| `currentState.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `currentState.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `currentTasks` | common.CurrentTask[] | read-only | In-progress asynchronous operations on the nodepool |
| `currentTasks[].errors` | common.TaskError[] | read-only | Errors that occurred on the task |
| `currentTasks[].errors[].message` | string | read-only | Error description |
| `currentTasks[].id` | string (uuid) | read-only | Identifier of the current task |
| `currentTasks[].link` | string | read-only | Link to the task details |
| `currentTasks[].status` | common.CurrentTaskStatusEnum | read-only | Current global status of the current task — one of `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `currentTasks[].type` | string | read-only | Type of the current task |
| `id` | string (uuid) | read-only | Unique identifier of the nodepool |
| `resourceStatus` | common.ResourceStatusEnum | read-only | Current lifecycle status of the nodepool — one of `CREATING`, `CREATION_PLANNED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |
| `targetSpec` | publicCloud.managedKubernetes.NodepoolTargetSpec | read-only | Desired nodepool specification |
| `targetSpec.antiAffinity` | publicCloud.managedKubernetes.AntiAffinity |  | Anti-affinity placement of the nodepool nodes. Immutable after creation. |
| `targetSpec.antiAffinity.enabled` | boolean |  | Whether anti-affinity placement is enabled for the nodepool |
| `targetSpec.antiAffinity.policy` | publicCloud.managedKubernetes.AntiAffinityPolicyEnum |  | Placement policy applied when anti-affinity is enabled — one of `HARD` |
| `targetSpec.autoscaler` | publicCloud.managedKubernetes.Autoscaler |  | Automatic node scaling for the nodepool |
| `targetSpec.autoscaler.enabled` | boolean |  | Whether automatic scaling is enabled for the nodepool |
| `targetSpec.autoscaler.maxNodes` | integer |  | Maximum number of nodes the autoscaler provisions |
| `targetSpec.autoscaler.minNodes` | integer |  | Minimum number of nodes the autoscaler maintains. Lower bound of desiredNodes. |
| `targetSpec.autoscaler.scaleDown` | publicCloud.managedKubernetes.AutoscalerScaleDown |  | Thresholds governing when the autoscaler removes underused nodes |
| `targetSpec.availabilityZone` | string |  | Availability zone the nodepool nodes are placed in. Immutable after creation. |
| `targetSpec.billingType` | publicCloud.managedKubernetes.NodepoolBillingTypeEnum |  | Billing period applied to the nodepool nodes. Immutable after creation. — one of `HOURLY`, `MONTHLY` |
| `targetSpec.desiredNodes` | integer |  | Desired number of nodes in the nodepool. When the autoscaler is enabled, must be at least autoscaler.minNodes. |
| `targetSpec.name` | string |  | Nodepool name. Immutable after creation. |
| `targetSpec.nodeConfig` | publicCloud.managedKubernetes.NodeConfig | yes | Hardware configuration of the nodepool nodes. Immutable after creation. |
| `targetSpec.nodeConfig.attachFloatingIp` | publicCloud.managedKubernetes.AttachFloatingIp |  | Floating IP attachment for the nodepool nodes |
| `targetSpec.nodeConfig.flavor` | string | yes | Node flavor identifier defining the CPU, memory and disk of each node, for example b3-8. Immutable after creation. |
| `targetSpec.template` | publicCloud.managedKubernetes.NodeTemplate |  | Kubernetes metadata and scheduling settings applied to every node of the nodepool |
| `targetSpec.template.metadata` | publicCloud.managedKubernetes.NodeTemplateMetadata |  | Kubernetes metadata applied to each node |
| `targetSpec.template.spec` | publicCloud.managedKubernetes.NodeTemplateSpec |  | Kubernetes scheduling settings applied to each node |
| `updatedAt` | string (date-time) | read-only | Last nodepool modification timestamp |

```json
{
  "checksum": "string",
  "createdAt": "2024-01-01T12:00:00Z",
  "currentState": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
    "autoscaler": {
      "enabled": true,
      "maxNodes": 0,
      "minNodes": 0,
      "scaleDown": {
        "unneededTimeSeconds": 0,
        "unreadyTimeSeconds": 0,
        "utilizationThreshold": 0
      }
    },
    "availabilityZone": "string",
    "billingType": "HOURLY",
    "desiredNodes": 0,
    "name": "string",
    "nodeConfig": {
      "attachFloatingIp": {
        "enabled": true
      },
      "flavor": "string"
    },
    "rollout": {
      "strategy": "IN_PLACE"
    },
    "status": {
      "currentNodes": 0,
      "readyNodes": 0,
      "upToDateNodes": 0
    },
    "template": {
      "metadata": {
        "annotations": {
          "key": "string"
        },
        "finalizers": [
          "string"
        ],
        "labels": {
          "key": "string"
        }
      },
      "spec": {
        "taints": [
          {
            "effect": "NoExecute",
            "key": "string",
            "value": "string"
          }
        ],
        "unschedulable": true
      }
    }
  },
  "currentTasks": [
    {
      "errors": [
        {
          "message": "string"
        }
      ],
      "id": "00000000-0000-0000-0000-000000000000",
      "link": "string",
      "status": "ERROR",
      "type": "string"
    }
  ],
  "id": "00000000-0000-0000-0000-000000000000",
  "resourceStatus": "CREATING",
  "targetSpec": {
    "antiAffinity": {
      "enabled": true,
      "policy": "HARD"
    },
  …
```

### Example

```bash
curl -X PUT \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN" \
  -H "content-type: application/json" \
  -d '{ }'
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

# Request body type: publicCloud.managedKubernetes.NodepoolUpdate
result = client.put("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}",
	checksum = None, # Optional concurrency-control checksum. When supplied, it must match the resource's current checksum or the request is rejected with a 409 checksum-mismatch conflict. When omitted or empty, the concurrency check is skipped and the write is forced (last-write-wins). (type: string, nullable)
	targetSpec = None, # Updated nodepool specification with mutable fields only (type: publicCloud.managedKubernetes.NodepoolUpdateTargetSpec)
)

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

// Request body type: publicCloud.managedKubernetes.NodepoolUpdate
$result = $ovh->put("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}", array(
	checksum => null, // Optional concurrency-control checksum. When supplied, it must match the resource's current checksum or the request is rejected with a 409 checksum-mismatch conflict. When omitted or empty, the concurrency check is skipped and the write is forced (last-write-wins). (type: string, nullable)
	targetSpec => null, // Updated nodepool specification with mutable fields only (type: publicCloud.managedKubernetes.NodepoolUpdateTargetSpec)
));

print_r($result);
?>
```

## List nodes of a managed Kubernetes cluster nodepool

`GET /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#get-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid-node

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/node/get`

Deleted nodes kept in retention are excluded unless includeDeleted is true.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `X-Pagination-Cursor` | header | string |  | Pagination cursor |
| `X-Pagination-Size` | header | integer |  | Pagination size |
| `includeDeleted` | query | boolean |  | Include deleted nodes still kept in retention |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |
| `resourceStatus` | query | publicCloud.managedKubernetes.NodeResourceStatusEnum |  | Return only the nodes in this lifecycle status. Filtering on DELETED requires includeDeleted set to true, otherwise the request returns 400. — one of `CREATING`, `DELETED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | publicCloud.managedKubernetes.Node[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `createdAt` | string (date-time) | read-only | Node creation timestamp |
| `currentState` | publicCloud.managedKubernetes.NodeCurrentState | read-only | Actual node state |
| `currentState.deletedAt` | string (date-time) | read-only | Timestamp when the node was removed. Present only for a deleted node kept in retention. |
| `currentState.deployedAt` | string (date-time) | read-only | Timestamp when the node joined the cluster. Absent until the node has joined. |
| `currentState.flavor` | string | read-only | Flavor of the Public Cloud instance backing the node |
| `currentState.instanceId` | string (uuid) | read-only | Identifier of the Public Cloud instance backing the node. Absent until the instance is provisioned. |
| `currentState.name` | string | read-only | Node name |
| `currentState.nodePoolId` | string (uuid) | read-only | Identifier of the nodepool the node belongs to |
| `currentState.upToDate` | boolean | read-only | Whether the node runs the current nodepool specification |
| `currentState.version` | string | read-only | Kubernetes version currently installed on the node |
| `id` | string (uuid) | read-only | Unique identifier of the node |
| `resourceStatus` | publicCloud.managedKubernetes.NodeResourceStatusEnum | read-only | Current lifecycle status of the node — one of `CREATING`, `DELETED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |
| `updatedAt` | string (date-time) | read-only | Last node modification timestamp |

```json
[
  {
    "createdAt": "2024-01-01T12:00:00Z",
    "currentState": {
      "deletedAt": "2024-01-01T12:00:00Z",
      "deployedAt": "2024-01-01T12:00:00Z",
      "flavor": "string",
      "instanceId": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "nodePoolId": "00000000-0000-0000-0000-000000000000",
      "upToDate": true,
      "version": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "resourceStatus": "CREATING",
    "updatedAt": "2024-01-01T12:00:00Z"
  }
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node");

print_r($result);
?>
```

## Get a node of a managed Kubernetes cluster nodepool

`GET /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node/{nodeId}`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#get-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid-node-nodeid

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/node/get`

A deleted node kept in retention is returned with resourceStatus DELETED until it expires, after which the call returns 404.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodeId` | path | string (uuid) | yes | Node ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | publicCloud.managedKubernetes.Node | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `createdAt` | string (date-time) | read-only | Node creation timestamp |
| `currentState` | publicCloud.managedKubernetes.NodeCurrentState | read-only | Actual node state |
| `currentState.deletedAt` | string (date-time) | read-only | Timestamp when the node was removed. Present only for a deleted node kept in retention. |
| `currentState.deployedAt` | string (date-time) | read-only | Timestamp when the node joined the cluster. Absent until the node has joined. |
| `currentState.flavor` | string | read-only | Flavor of the Public Cloud instance backing the node |
| `currentState.instanceId` | string (uuid) | read-only | Identifier of the Public Cloud instance backing the node. Absent until the instance is provisioned. |
| `currentState.name` | string | read-only | Node name |
| `currentState.nodePoolId` | string (uuid) | read-only | Identifier of the nodepool the node belongs to |
| `currentState.upToDate` | boolean | read-only | Whether the node runs the current nodepool specification |
| `currentState.version` | string | read-only | Kubernetes version currently installed on the node |
| `id` | string (uuid) | read-only | Unique identifier of the node |
| `resourceStatus` | publicCloud.managedKubernetes.NodeResourceStatusEnum | read-only | Current lifecycle status of the node — one of `CREATING`, `DELETED`, `DELETING`, `ERROR`, `OUT_OF_SYNC`, `READY`, `SUSPENDED`, `UNKNOWN`, `UPDATING` |
| `updatedAt` | string (date-time) | read-only | Last node modification timestamp |

```json
{
  "createdAt": "2024-01-01T12:00:00Z",
  "currentState": {
    "deletedAt": "2024-01-01T12:00:00Z",
    "deployedAt": "2024-01-01T12:00:00Z",
    "flavor": "string",
    "instanceId": "00000000-0000-0000-0000-000000000000",
    "name": "string",
    "nodePoolId": "00000000-0000-0000-0000-000000000000",
    "upToDate": true,
    "version": "string"
  },
  "id": "00000000-0000-0000-0000-000000000000",
  "resourceStatus": "CREATING",
  "updatedAt": "2024-01-01T12:00:00Z"
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node/{nodeId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node/{nodeId}")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/node/{nodeId}");

print_r($result);
?>
```

## List all events related to a managed Kubernetes cluster nodepool

`GET /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/event`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#get-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid-event

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/event/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `X-Pagination-Cursor` | header | string |  | Pagination cursor |
| `X-Pagination-Size` | header | integer |  | Pagination size |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |
| `taskId` | query | string (uuid) |  | Return only the events belonging to this task |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | common.Event[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `createdAt` | string (date-time) | read-only | Creation date of the event |
| `kind` | string | read-only | Nature of the event |
| `link` | string | read-only | Link to the event related resource |
| `message` | string | read-only | Description of what happened on the event |
| `type` | common.EventTypeEnum | read-only | Type of the event — one of `TARGET_SPEC_UPDATE`, `TASK_ERROR`, `TASK_START`, `TASK_SUCCESS` |

```json
[
  {
    "createdAt": "2024-01-01T12:00:00Z",
    "kind": "string",
    "link": "string",
    "message": "string",
    "type": "TARGET_SPEC_UPDATE"
  }
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/event" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/event")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/event");

print_r($result);
?>
```

## List all tasks related to a managed Kubernetes cluster nodepool

`GET /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#get-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid-task

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/task/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `X-Pagination-Cursor` | header | string |  | Pagination cursor |
| `X-Pagination-Size` | header | integer |  | Pagination size |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | common.Task[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `createdAt` | string (date-time) | read-only | Creation date of the task |
| `errors` | common.TaskError[] | read-only | Errors that occurred on the task |
| `errors[].message` | string | read-only | Error description |
| `finishedAt` | string (date-time) | read-only | Ending date of the task |
| `id` | string (uuid) | read-only | Unique identifier of the task |
| `link` | string | read-only | Link to the related resource |
| `message` | string | read-only | Description of the task |
| `progress` | common.TaskProgress[] | read-only | Progress steps of the asynchronous operation |
| `progress[].name` | string | read-only | Progress step name |
| `progress[].status` | common.TaskStatusEnum | read-only | Current status of the progress step — one of `DONE`, `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `startedAt` | string (date-time) | read-only | Starting date of the task |
| `status` | common.TaskStatusEnum | read-only | Current global status of the task — one of `DONE`, `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `type` | string | read-only | Type of the task |
| `updatedAt` | string (date-time) | read-only | Last update of the task |

```json
[
  {
    "createdAt": "2024-01-01T12:00:00Z",
    "errors": [
      {
        "message": "string"
      }
    ],
    "finishedAt": "2024-01-01T12:00:00Z",
    "id": "00000000-0000-0000-0000-000000000000",
    "link": "string",
    "message": "string",
    "progress": [
      {
        "name": "string",
        "status": "DONE"
      }
    ],
    "startedAt": "2024-01-01T12:00:00Z",
    "status": "DONE",
    "type": "string",
    "updatedAt": "2024-01-01T12:00:00Z"
  }
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task");

print_r($result);
?>
```

## Get a specific task related to a managed Kubernetes cluster nodepool

`GET /v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task/{taskId}`

Link: https://developers.eu.ovhcloud.com/reference/public-cloud/container/managed-kubernetes-service/node-pools/#get-publiccloud-project-projectid-managedkubernetes-managedkubernetesid-nodepool-nodepoolid-task-taskid

**Status:** Beta version  
**IAM actions:** `publicCloudProject:apiovh:managedKubernetes/nodepool/task/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `managedKubernetesId` | path | string (uuid) | yes | Managed kubernetes ID |
| `nodePoolId` | path | string (uuid) | yes | Node pool ID |
| `projectId` | path | string | yes | Project ID |
| `taskId` | path | string (uuid) | yes | Task ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | common.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `createdAt` | string (date-time) | read-only | Creation date of the task |
| `errors` | common.TaskError[] | read-only | Errors that occurred on the task |
| `errors[].message` | string | read-only | Error description |
| `finishedAt` | string (date-time) | read-only | Ending date of the task |
| `id` | string (uuid) | read-only | Unique identifier of the task |
| `link` | string | read-only | Link to the related resource |
| `message` | string | read-only | Description of the task |
| `progress` | common.TaskProgress[] | read-only | Progress steps of the asynchronous operation |
| `progress[].name` | string | read-only | Progress step name |
| `progress[].status` | common.TaskStatusEnum | read-only | Current status of the progress step — one of `DONE`, `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `startedAt` | string (date-time) | read-only | Starting date of the task |
| `status` | common.TaskStatusEnum | read-only | Current global status of the task — one of `DONE`, `ERROR`, `PENDING`, `RUNNING`, `SCHEDULED`, `WAITING_USER_INPUT` |
| `type` | string | read-only | Type of the task |
| `updatedAt` | string (date-time) | read-only | Last update of the task |

```json
{
  "createdAt": "2024-01-01T12:00:00Z",
  "errors": [
    {
      "message": "string"
    }
  ],
  "finishedAt": "2024-01-01T12:00:00Z",
  "id": "00000000-0000-0000-0000-000000000000",
  "link": "string",
  "message": "string",
  "progress": [
    {
      "name": "string",
      "status": "DONE"
    }
  ],
  "startedAt": "2024-01-01T12:00:00Z",
  "status": "DONE",
  "type": "string",
  "updatedAt": "2024-01-01T12:00:00Z"
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task/{taskId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task/{taskId}")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/v2/publicCloud/project/{projectId}/managedKubernetes/{managedKubernetesId}/nodepool/{nodePoolId}/task/{taskId}");

print_r($result);
?>
```
