# Bare Metal Cloud › Dedicated Servers › Cluster API

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

> 9 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/bare-metal-cloud/dedicated-servers/cluster/

OpenAPI v1: https://api.eu.ovhcloud.com/1.0/__schemas/developer-hub-navigation/bare-metal-cloud/dedicated-servers/cluster.json?format=openapi3
OpenAPI v2: https://api.eu.ovhcloud.com/v2/__schemas/developer-hub-navigation/bare-metal-cloud/dedicated-servers/cluster.json?format=openapi3

## Operations

- `GET /dedicated/cluster` — List dedicated clusters
- `GET /dedicated/cluster/availabilities` — List cluster configuration availability
- `GET /dedicated/cluster/availabilities/raw` — List the raw cluster hardware availability
- `GET /dedicated/cluster/{serviceName}` — Get a dedicated cluster
- `POST /dedicated/cluster/{serviceName}/changeContact` — Launch a contact change procedure
- `POST /dedicated/cluster/{serviceName}/confirmTermination` — Confirm service termination
- `GET /dedicated/cluster/{serviceName}/serviceInfos` — Get service information
- `PUT /dedicated/cluster/{serviceName}/serviceInfos` — Update service information
- `POST /dedicated/cluster/{serviceName}/terminate` — Ask for the termination of your service

## List dedicated clusters

`GET /1.0/dedicated/cluster`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#get-dedicated-cluster

**Status:** Beta version  
**IAM actions:** `clusterDelivery:apiovh:get`

Returns the IDs of the dedicated clusters of the account.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `iamTags` | query | object |  | Filter resources on IAM tags |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | string (uuid)[] | successful operation |

```json
[
  "00000000-0000-0000-0000-000000000000"
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster" \
  -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("/dedicated/cluster")

# 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("/dedicated/cluster");

print_r($result);
?>
```

## List cluster configuration availability

`GET /1.0/dedicated/cluster/availabilities`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#get-dedicated-cluster-availabilities

**Status:** Deprecated, will be removed  
**Authentication:** none (public operation)  
**Deprecated** since 2025-09-23, removed on 2025-12-02.

Returns the cluster configurations that match the requested quantity, hardware parts and plan code, with their availability for each region. This call does not require authentication.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `memory` | query | string |  | The name of the memory hardware part |
| `planCode` | query | string |  | The plan code in which the hardware is involved |
| `quantity` | query | integer | yes | Cluster quantity |
| `server` | query | string |  | The name of the base hardware |
| `storage` | query | string |  | The name of the storage hardware part |
| `systemStorage` | query | string |  | The name of the system storage hardware part |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.cluster.availability[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `clusterPlanCode` | string | read-only | Plan code in which the hardware is involved |
| `fqn` | string | read-only | Fully qualified name and unique name of the hardware |
| `memory` | string | read-only | Name of the memory hardware part |
| `planCode` | string | read-only | Plan code in which the hardware is involved |
| `regions` | dedicated.cluster.RegionAvailability[] | read-only | A structure describing the hardware availability for each datacenter |
| `regions[].availability` | dedicated.server.AvailabilityEnum | read-only | The availability — one of `120H`, `1440H`, `1H-high`, `1H-low`, `2160H`, `240H`, `24H`, `480H`, `720H`, `72H`, `comingSoon`, `unavailable`, … |
| `regions[].region` | dedicated.server.AvailabilityRegionalizationEnum | read-only | The region — one of `ap-south-1`, `ap-southeast-sgp`, `ap-southeast-syd`, `ca-east-1`, `ca-east-bhs`, `eu-central-waw`, `eu-west-eri`, `eu-west-gra`, `eu-west-lim`, `eu-west-par`, `eu-west-rbx`, `eu-west-sbg`, … |
| `server` | string | read-only | Name of the base hardware |
| `storage` | string | read-only | Name of the storage hardware part |
| `systemStorage` | string | read-only | Name of the system storage hardware part |

```json
[
  {
    "clusterPlanCode": "string",
    "fqn": "string",
    "memory": "string",
    "planCode": "string",
    "regions": [
      {
        "availability": "120H",
        "region": "ap-south-1"
      }
    ],
    "server": "string",
    "storage": "string",
    "systemStorage": "string"
  }
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/availabilities" \
  -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("/dedicated/cluster/availabilities")

# 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("/dedicated/cluster/availabilities");

print_r($result);
?>
```

## List the raw cluster hardware availability

`GET /1.0/dedicated/cluster/availabilities/raw`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#get-dedicated-cluster-availabilities-raw

**Status:** Beta version

Returns the raw availability of cluster hardware: for each region, the real stock, the real stock including parent references, and the last rule applied. Filter by quantity, hardware parts, plan code and regions, and set excludeRegions to return every region except those listed.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `excludeRegions` | query | boolean |  | If true, all regions are returned except those listed in regions parameter |
| `memory` | query | string |  | The name of the memory hardware part |
| `planCode` | query | string |  | The plan code in which the hardware is involved |
| `quantity` | query | integer | yes | Node quantity |
| `regions` | query | dedicated.server.AvailabilityRegionalizationEnum |  | The names of regions separated by commas — one of `ap-south-1`, `ap-southeast-sgp`, `ap-southeast-syd`, `ca-east-1`, `ca-east-bhs`, `eu-central-waw`, `eu-west-eri`, `eu-west-gra`, `eu-west-lim`, `eu-west-par`, `eu-west-rbx`, `eu-west-sbg`, … |
| `server` | query | string |  | The name of the base hardware |
| `storage` | query | string |  | The name of the storage hardware part |
| `systemStorage` | query | string |  | The name of the system storage hardware part |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.cluster.AvailabilitiesRaw[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `clusterPlanCode` | string | read-only | Plan code in which the hardware is involved |
| `fqn` | string | read-only | Fully qualified name and unique name of the hardware |
| `memory` | string | read-only | Name of the memory hardware part |
| `planCode` | string | read-only | Plan code in which the hardware is involved |
| `regions` | dedicated.cluster.AvailabilitiesRawRegion[] | read-only | A structure describing the hardware availability for each region |
| `regions[].availability` | dedicated.server.AvailabilityEnum | read-only | The availability — one of `120H`, `1440H`, `1H-high`, `1H-low`, `2160H`, `240H`, `24H`, `480H`, `720H`, `72H`, `comingSoon`, `unavailable`, … |
| `regions[].lastRule` | string | read-only | Last availability rule applied |
| `regions[].parentAvailable` | integer | read-only | Real stock including parent references |
| `regions[].region` | dedicated.server.AvailabilityEnum | read-only | The region code — one of `120H`, `1440H`, `1H-high`, `1H-low`, `2160H`, `240H`, `24H`, `480H`, `720H`, `72H`, `comingSoon`, `unavailable`, … |
| `regions[].trueAvailable` | integer | read-only | Real stock |
| `server` | string | read-only | Name of the base hardware |
| `storage` | string | read-only | Name of the storage hardware part |
| `systemStorage` | string | read-only | Name of the system storage hardware part |

```json
[
  {
    "clusterPlanCode": "string",
    "fqn": "string",
    "memory": "string",
    "planCode": "string",
    "regions": [
      {
        "availability": "120H",
        "lastRule": "string",
        "parentAvailable": 0,
        "region": "120H",
        "trueAvailable": 0
      }
    ],
    "server": "string",
    "storage": "string",
    "systemStorage": "string"
  }
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/availabilities/raw" \
  -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("/dedicated/cluster/availabilities/raw")

# 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("/dedicated/cluster/availabilities/raw");

print_r($result);
?>
```

## Get a dedicated cluster

`GET /1.0/dedicated/cluster/{serviceName}`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#get-dedicated-cluster-servicename

**Status:** Beta version  
**IAM actions:** `clusterDelivery:apiovh:get`

Returns the ID, model, region and status of a dedicated cluster, and its nodes.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string (uuid) | yes | Service name |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.cluster.ClusterWithIAM | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `iam` | iam.ResourceMetadata | read-only | IAM resource metadata |
| `iam.displayName` | string | read-only | Resource display name |
| `iam.id` | string (uuid) | read-only | Unique identifier of the resource |
| `iam.state` | iam.ResourceMetadata.StateEnum | read-only | Resource state — one of `EXPIRED`, `IN_CREATION`, `OK`, `SUSPENDED` |
| `iam.tags` | object | read-only | Resource tags. Tags that were internally computed are prefixed with ovh: |
| `iam.urn` | string | read-only | Unique resource name used in policies |
| `id` | string (uuid) | read-only | Cluster's ID |
| `model` | string | read-only | Model of the cluster |
| `nodes` | dedicated.cluster.Node[] | read-only | Cluster's nodes |
| `nodes[].id` | string (uuid) | read-only | ID of the node |
| `nodes[].serverId` | integer | read-only | ID of the server |
| `nodes[].serverName` | string | read-only | Name of the server |
| `region` | string | read-only | Region where cluster is located |
| `status` | string | read-only | Cluster status |

```json
{
  "iam": {
    "displayName": "string",
    "id": "00000000-0000-0000-0000-000000000000",
    "state": "EXPIRED",
    "tags": {
      "key": "string"
    },
    "urn": "string"
  },
  "id": "00000000-0000-0000-0000-000000000000",
  "model": "string",
  "nodes": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "serverId": 0,
      "serverName": "string"
    }
  ],
  "region": "string",
  "status": "string"
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/{serviceName}" \
  -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("/dedicated/cluster/{serviceName}")

# 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("/dedicated/cluster/{serviceName}");

print_r($result);
?>
```

## Launch a contact change procedure

`POST /1.0/dedicated/cluster/{serviceName}/changeContact`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#post-dedicated-cluster-servicename-changecontact

**Status:** Beta version  
**IAM actions:** `clusterDelivery:apiovh:changeContact`

Starts a contact change procedure for the admin, billing or tech contact of the cluster. Returns the IDs of the contact change tasks.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string (uuid) | yes | Service name |

### Request body (required)

Type: `services.changeContact`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `contactAdmin` | string |  | The contact to set as admin contact |
| `contactBilling` | string |  | The contact to set as billing contact |
| `contactTech` | string |  | The contact to set as tech contact |

```json
{
  "contactAdmin": "string",
  "contactBilling": "string",
  "contactTech": "string"
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | integer[] | successful operation |

```json
[
  0
]
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/{serviceName}/changeContact" \
  -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: services.changeContact
result = client.post("/dedicated/cluster/{serviceName}/changeContact",
	contactAdmin = None, # The contact to set as admin contact (type: string)
	contactBilling = None, # The contact to set as billing contact (type: string)
	contactTech = None, # The contact to set as tech contact (type: string)
)

# 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: services.changeContact
$result = $ovh->post("/dedicated/cluster/{serviceName}/changeContact", array(
	contactAdmin => null, // The contact to set as admin contact (type: string)
	contactBilling => null, // The contact to set as billing contact (type: string)
	contactTech => null, // The contact to set as tech contact (type: string)
));

print_r($result);
?>
```

## Confirm service termination

`POST /1.0/dedicated/cluster/{serviceName}/confirmTermination`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#post-dedicated-cluster-servicename-confirmtermination

**Status:** Beta version  
**IAM actions:** `clusterDelivery:apiovh:confirmTermination`

Confirms the termination of the cluster with the token sent by email to the admin contact.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string (uuid) | yes | Service name |

### Request body (required)

Type: `services.confirmTermination`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `commentary` | string |  | Commentary about your termination request |
| `commentaryFutureUse` | string |  | Commentary about your future use |
| `commentaryReason` | string |  | Commentary about your reason for termination request |
| `futureUse` | service.TerminationFutureUseEnum |  | All future uses you can provide for a service termination — one of `NOT_REPLACING_SERVICE`, `OTHER`, `SUBSCRIBE_AN_OTHER_SERVICE`, `SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR`, `SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR` |
| `reason` | service.TerminationReasonEnum |  | All reasons you can provide for a service termination — one of `FEATURES_DONT_SUIT_ME`, `LACK_OF_PERFORMANCES`, `MIGRATED_TO_ANOTHER_OVH_PRODUCT`, `MIGRATED_TO_COMPETITOR`, `NOT_ENOUGH_RECOGNITION`, `NOT_NEEDED_ANYMORE`, `NOT_RELIABLE`, `NO_ANSWER`, `OTHER`, `PRODUCT_DIMENSION_DONT_SUIT_ME`, `PRODUCT_TOOLS_DONT_SUIT_ME`, `TOO_EXPENSIVE`, … |
| `token` | string | yes | The termination token sent by email to the admin contact |

```json
{
  "commentary": "string",
  "commentaryFutureUse": "string",
  "commentaryReason": "string",
  "futureUse": "NOT_REPLACING_SERVICE",
  "reason": "FEATURES_DONT_SUIT_ME",
  "token": "string"
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | string | successful operation |

```json
"string"
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/{serviceName}/confirmTermination" \
  -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: services.confirmTermination
result = client.post("/dedicated/cluster/{serviceName}/confirmTermination",
	commentary = None, # Commentary about your termination request (type: string)
	commentaryFutureUse = None, # Commentary about your future use (type: string)
	commentaryReason = None, # Commentary about your reason for termination request (type: string)
	futureUse = None, # All future uses you can provide for a service termination (type: service.TerminationFutureUseEnum)
	reason = None, # All reasons you can provide for a service termination (type: service.TerminationReasonEnum)
	token = None, # The termination token sent by email to the admin contact (type: string)
)

# 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: services.confirmTermination
$result = $ovh->post("/dedicated/cluster/{serviceName}/confirmTermination", array(
	commentary => null, // Commentary about your termination request (type: string)
	commentaryFutureUse => null, // Commentary about your future use (type: string)
	commentaryReason => null, // Commentary about your reason for termination request (type: string)
	futureUse => null, // All future uses you can provide for a service termination (type: service.TerminationFutureUseEnum)
	reason => null, // All reasons you can provide for a service termination (type: service.TerminationReasonEnum)
	token => null, // The termination token sent by email to the admin contact (type: string)
));

print_r($result);
?>
```

## Get service information

`GET /1.0/dedicated/cluster/{serviceName}/serviceInfos`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#get-dedicated-cluster-servicename-serviceinfos

**Status:** Beta version  
**IAM actions:** `clusterDelivery:apiovh:serviceInfos/get`

Returns the billing information of the cluster, such as creation and expiration dates, contacts and renewal settings.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string (uuid) | yes | Service name |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | services.Service | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `canDeleteAtExpiration` | boolean | read-only | Indicates that the service can be set up to be deleted at expiration |
| `contactAdmin` | string | read-only |  |
| `contactBilling` | string | read-only |  |
| `contactTech` | string | read-only |  |
| `creation` | string (date) | read-only |  |
| `domain` | string | read-only |  |
| `engagedUpTo` | string (date) | read-only |  |
| `expiration` | string (date) | read-only |  |
| `possibleRenewPeriod` | integer[] | read-only | All the possible renew period of your service in month |
| `renew` | service.RenewType |  | Way of handling the renew |
| `renew.automatic` | boolean |  | The service is automatically renewed |
| `renew.deleteAtExpiration` | boolean |  | The service will be deleted at expiration |
| `renew.forced` | boolean |  | The service forced to be renewed |
| `renew.manualPayment` | boolean |  | The service needs to be manually renewed and paid |
| `renew.period` | integer |  | period of renew in month |
| `renewalType` | service.RenewalTypeEnum | read-only | Detailed renewal type of a service — one of `automaticForcedProduct`, `automaticV2012`, `automaticV2014`, `automaticV2016`, `automaticV2024`, `manual`, `oneShot`, `option` |
| `serviceId` | integer | read-only |  |
| `status` | service.StateEnum | read-only | one of `autorenewInProgress`, `expired`, `inCreation`, `ok`, `pendingDebt`, `unPaid` |

```json
{
  "canDeleteAtExpiration": true,
  "contactAdmin": "string",
  "contactBilling": "string",
  "contactTech": "string",
  "creation": "2024-01-01",
  "domain": "string",
  "engagedUpTo": "2024-01-01",
  "expiration": "2024-01-01",
  "possibleRenewPeriod": [
    0
  ],
  "renew": {
    "automatic": true,
    "deleteAtExpiration": true,
    "forced": true,
    "manualPayment": true,
    "period": 0
  },
  "renewalType": "automaticForcedProduct",
  "serviceId": 0,
  "status": "autorenewInProgress"
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/{serviceName}/serviceInfos" \
  -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("/dedicated/cluster/{serviceName}/serviceInfos")

# 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("/dedicated/cluster/{serviceName}/serviceInfos");

print_r($result);
?>
```

## Update service information

`PUT /1.0/dedicated/cluster/{serviceName}/serviceInfos`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#put-dedicated-cluster-servicename-serviceinfos

**Status:** Beta version  
**IAM actions:** `clusterDelivery:apiovh:serviceInfos/edit`

Updates the renewal settings of the cluster.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string (uuid) | yes | Service name |

### Request body (required)

Type: `services.Service`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `canDeleteAtExpiration` | boolean | read-only | Indicates that the service can be set up to be deleted at expiration |
| `contactAdmin` | string | read-only |  |
| `contactBilling` | string | read-only |  |
| `contactTech` | string | read-only |  |
| `creation` | string (date) | read-only |  |
| `domain` | string | read-only |  |
| `engagedUpTo` | string (date) | read-only |  |
| `expiration` | string (date) | read-only |  |
| `possibleRenewPeriod` | integer[] | read-only | All the possible renew period of your service in month |
| `renew` | service.RenewType |  | Way of handling the renew |
| `renew.automatic` | boolean |  | The service is automatically renewed |
| `renew.deleteAtExpiration` | boolean |  | The service will be deleted at expiration |
| `renew.forced` | boolean |  | The service forced to be renewed |
| `renew.manualPayment` | boolean |  | The service needs to be manually renewed and paid |
| `renew.period` | integer |  | period of renew in month |
| `renewalType` | service.RenewalTypeEnum | read-only | Detailed renewal type of a service — one of `automaticForcedProduct`, `automaticV2012`, `automaticV2014`, `automaticV2016`, `automaticV2024`, `manual`, `oneShot`, `option` |
| `serviceId` | integer | read-only |  |
| `status` | service.StateEnum | read-only | one of `autorenewInProgress`, `expired`, `inCreation`, `ok`, `pendingDebt`, `unPaid` |

```json
{
  "renew": {
    "automatic": true,
    "deleteAtExpiration": true,
    "forced": true,
    "manualPayment": true,
    "period": 0
  }
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | — | successful operation |

### Example

```bash
curl -X PUT \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/{serviceName}/serviceInfos" \
  -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: services.Service
result = client.put("/dedicated/cluster/{serviceName}/serviceInfos",
	renew = None, # Way of handling the renew (type: service.RenewType, nullable)
)

# 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: services.Service
$result = $ovh->put("/dedicated/cluster/{serviceName}/serviceInfos", array(
	renew => null, // Way of handling the renew (type: service.RenewType, nullable)
));

print_r($result);
?>
```

## Ask for the termination of your service

`POST /1.0/dedicated/cluster/{serviceName}/terminate`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/cluster/#post-dedicated-cluster-servicename-terminate

**Status:** Beta version  
**IAM actions:** `clusterDelivery:apiovh:terminate`

Starts the termination of the cluster and sends a confirmation token by email to the admin contact. Confirm it with the termination confirmation.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string (uuid) | yes | Service name |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | string | successful operation |

```json
"string"
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/cluster/{serviceName}/terminate" \
  -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.post("/dedicated/cluster/{serviceName}/terminate")

# 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->post("/dedicated/cluster/{serviceName}/terminate");

print_r($result);
?>
```
