# Bare Metal Cloud › Dedicated Servers › Features 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

> 25 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/features/

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

## Operations

- `GET /dedicated/server/{serviceName}/features/ipmi` — Get the IPMI interface
- `GET /dedicated/server/{serviceName}/features/ipmi/access` — Get the IPMI session access
- `POST /dedicated/server/{serviceName}/features/ipmi/access` — Request IPMI access
- `POST /dedicated/server/{serviceName}/features/ipmi/resetInterface` — Reset the IPMI interface
- `POST /dedicated/server/{serviceName}/features/ipmi/resetSessions` — Reset IPMI sessions
- `GET /dedicated/server/{serviceName}/features/ipmi/test` — Get an IPMI test result
- `POST /dedicated/server/{serviceName}/features/ipmi/test` — Test the IPMI interface
- `GET /dedicated/server/{serviceName}/features/kvm` — Get the physical KVM
- `GET /dedicated/server/{serviceName}/features/firewall` — Get the firewall
- `PUT /dedicated/server/{serviceName}/features/firewall` — Update the firewall
- `GET /dedicated/server/{serviceName}/features/backupCloud` — Get the cloud backup
- `POST /dedicated/server/{serviceName}/features/backupCloud` — Create the cloud backup
- `DELETE /dedicated/server/{serviceName}/features/backupCloud` — Deactivate the cloud backup
- `POST /dedicated/server/{serviceName}/features/backupCloud/password` — Regenerate cloud backup passwords
- `GET /dedicated/server/{serviceName}/features/backupFTP` — Get the backup FTP space
- `POST /dedicated/server/{serviceName}/features/backupFTP` — Create the backup FTP space
- `DELETE /dedicated/server/{serviceName}/features/backupFTP` — Delete the backup FTP space
- `GET /dedicated/server/{serviceName}/features/backupFTP/access` — List backup FTP ACLs
- `POST /dedicated/server/{serviceName}/features/backupFTP/access` — Create a backup FTP ACL
- `GET /dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}` — Get a backup FTP ACL
- `DELETE /dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}` — Delete a backup FTP ACL
- `PUT /dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}` — Update a backup FTP ACL
- `GET /dedicated/server/{serviceName}/features/backupFTP/authorizableBlocks` — List authorizable IP blocks
- `POST /dedicated/server/{serviceName}/features/backupFTP/password` — Reset the backup FTP password
- `GET /dedicated/server/{serviceName}/backupCloudOfferDetails` — Get the cloud backup offer

## Get the IPMI interface

`GET /1.0/dedicated/server/{serviceName}/features/ipmi`

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

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/ipmi/get`

Get the IPMI interface. Returns whether IPMI is available on the server and which access methods it supports. KVM is reached through an HTML or Java web interface, and the virtual serial port through an HTML interface or an SSH client.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Ipmi | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `activated` | boolean | read-only | true, if IPMI is available on this server |
| `supportedFeatures` | dedicated.server.IpmiSupportedFeatures | read-only | A structure describing the IPMI supported features |
| `supportedFeatures.kvmipHtml5URL` | boolean |  | Access to the KVM through an HTML web interface |
| `supportedFeatures.kvmipJnlp` | boolean |  | Access to the KVM through a Java web launch application |
| `supportedFeatures.serialOverLanSshKey` | boolean |  | Access to the virtual serial port of your server through an SSH client |
| `supportedFeatures.serialOverLanURL` | boolean |  | Access to the virtual serial port of your server through an HTML command line interface |

```json
{
  "activated": true,
  "supportedFeatures": {
    "kvmipHtml5URL": true,
    "kvmipJnlp": true,
    "serialOverLanSshKey": true,
    "serialOverLanURL": true
  }
}
```

### Example

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

# 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/server/{serviceName}/features/ipmi");

print_r($result);
?>
```

## Get the IPMI session access

`GET /1.0/dedicated/server/{serviceName}/features/ipmi/access`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#get-dedicated-server-servicename-features-ipmi-access

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/ipmi/access/get`

Get the IPMI session access. Returns the access value and the session expiration date for the given access type. Request the access with POST on the same route first: before that, and after expiration, the call returns an error.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |
| `type` | query | dedicated.server.IpmiAccessTypeEnum | yes | IPMI console access — one of `kvmipHtml5URL`, `kvmipJnlp`, `serialOverLanSshKey`, `serialOverLanURL` |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.IpmiAccessValue | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `expiration` | string (date-time) |  | Session expiration date |
| `value` | string |  | value |

```json
{
  "expiration": "2024-01-01T12:00:00Z",
  "value": "string"
}
```

### Example

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

# 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/server/{serviceName}/features/ipmi/access");

print_r($result);
?>
```

## Request IPMI access

`POST /1.0/dedicated/server/{serviceName}/features/ipmi/access`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-ipmi-access

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/ipmi/access/create`

Request IPMI access. Requests an IPMI session for the given access type and returns a task. Once the task is done, read the access value and its expiration date with GET on the same route. sshKey, for serial over LAN SSH access, must be a raw public SSH key.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Request body (required)

Type: `object`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ipToAllow` | ipv4 |  | IP to allow connection from for this IPMI session |
| `sshKey` | string |  | Public SSH key for Serial Over Lan SSH access \| ⚠️ Starting 2024-08-27, SSH key name will no longer be accepted and only raw public SSH key will remain accepted |
| `ttl` | dedicated.server.CacheTTLEnum | yes | Session access time to live in minutes — one of `1`, `3`, `5`, `10`, `15` |
| `type` | dedicated.server.IpmiAccessTypeEnum | yes | IPMI console access — one of `kvmipHtml5URL`, `kvmipJnlp`, `serialOverLanSshKey`, `serialOverLanURL` |

```json
{
  "ipToAllow": "192.0.2.0",
  "sshKey": "string",
  "ttl": 1,
  "type": "kvmipHtml5URL"
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/ipmi/access" \
  -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
)

result = client.post("/dedicated/server/{serviceName}/features/ipmi/access",
	ipToAllow = None, # IP to allow connection from for this IPMI session (type: ipv4, nullable)
	sshKey = None, # Public SSH key for Serial Over Lan SSH access | ⚠️ Starting 2024-08-27, SSH key name will no longer be accepted and only raw public SSH key will remain accepted (type: text, nullable)
	ttl = None, # Session access time to live in minutes (type: dedicated.server.CacheTTLEnum)
	type = None, # IPMI console access (type: dedicated.server.IpmiAccessTypeEnum)
)

# 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/server/{serviceName}/features/ipmi/access", array(
	ipToAllow => null, // IP to allow connection from for this IPMI session (type: ipv4, nullable)
	sshKey => null, // Public SSH key for Serial Over Lan SSH access | ⚠️ Starting 2024-08-27, SSH key name will no longer be accepted and only raw public SSH key will remain accepted (type: text, nullable)
	ttl => null, // Session access time to live in minutes (type: dedicated.server.CacheTTLEnum)
	type => null, // IPMI console access (type: dedicated.server.IpmiAccessTypeEnum)
));

print_r($result);
?>
```

## Reset the IPMI interface

`POST /1.0/dedicated/server/{serviceName}/features/ipmi/resetInterface`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-ipmi-resetinterface

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/ipmi/resetInterface`

Reset the IPMI interface. Resets the IPMI interface of the server and returns a task. The task carries the status and the completion date of the reset.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/ipmi/resetInterface" \
  -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/server/{serviceName}/features/ipmi/resetInterface")

# 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/server/{serviceName}/features/ipmi/resetInterface");

print_r($result);
?>
```

## Reset IPMI sessions

`POST /1.0/dedicated/server/{serviceName}/features/ipmi/resetSessions`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-ipmi-resetsessions

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/ipmi/resetSessions`

Reset IPMI sessions. Resets the IPMI sessions of the server and returns a task. Access values obtained before the reset stop working and must be requested again.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/ipmi/resetSessions" \
  -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/server/{serviceName}/features/ipmi/resetSessions")

# 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/server/{serviceName}/features/ipmi/resetSessions");

print_r($result);
?>
```

## Get an IPMI test result

`GET /1.0/dedicated/server/{serviceName}/features/ipmi/test`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#get-dedicated-server-servicename-features-ipmi-test

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/ipmi/test/get`

Get an IPMI test result. Returns the result and the run date of the IPMI test of the given type: http, password or ping. Launch the test with POST on the same route first; the result is kept only for the ttl given at launch.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |
| `type` | query | dedicated.server.IpmiTestTypeEnum | yes | Test type result on KVM IPMI interface — one of `http`, `password`, `ping` |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.IpmiTestResult | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `date` | string (date-time) |  | Test running date |
| `status` | string |  | Test result |

```json
{
  "date": "2024-01-01T12:00:00Z",
  "status": "string"
}
```

### Example

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

# 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/server/{serviceName}/features/ipmi/test");

print_r($result);
?>
```

## Test the IPMI interface

`POST /1.0/dedicated/server/{serviceName}/features/ipmi/test`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-ipmi-test

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/ipmi/test/create`

Test the IPMI interface. Launches an http, password or ping test on the IPMI interface and returns a task. ttl sets how long the result is kept: 1, 3, 5, 10 or 15 minutes. The result is read with GET on the same route.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Request body (required)

Type: `object`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ttl` | dedicated.server.CacheTTLEnum | yes | Result time to live in minutes — one of `1`, `3`, `5`, `10`, `15` |
| `type` | dedicated.server.IpmiTestTypeEnum | yes | Test to make on KVM IPMI interface — one of `http`, `password`, `ping` |

```json
{
  "ttl": 1,
  "type": "http"
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/ipmi/test" \
  -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
)

result = client.post("/dedicated/server/{serviceName}/features/ipmi/test",
	ttl = None, # Result time to live in minutes (type: dedicated.server.CacheTTLEnum)
	type = None, # Test to make on KVM IPMI interface (type: dedicated.server.IpmiTestTypeEnum)
)

# 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/server/{serviceName}/features/ipmi/test", array(
	ttl => null, // Result time to live in minutes (type: dedicated.server.CacheTTLEnum)
	type => null, // Test to make on KVM IPMI interface (type: dedicated.server.IpmiTestTypeEnum)
));

print_r($result);
?>
```

## Get the physical KVM

`GET /1.0/dedicated/server/{serviceName}/features/kvm`

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

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/kvm/get`

Get the physical KVM. Returns the physical KVM of the server: its hostname, access IP and expiration date. When no physical KVM is installed on the server, the call returns an error.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.kvm | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `expiration` | string (date-time) | read-only | KVM expiration date |
| `ip` | ipv4 | read-only | KVM access ip |
| `name` | string | read-only | KVM hostname |

```json
{
  "expiration": "2024-01-01T12:00:00Z",
  "ip": "192.0.2.0",
  "name": "string"
}
```

### Example

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

# 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/server/{serviceName}/features/kvm");

print_r($result);
?>
```

## Get the firewall

`GET /1.0/dedicated/server/{serviceName}/features/firewall`

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

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/firewall/get`

Get the firewall. Returns the firewall attached to the server: its management IP, model, mode and whether it is enabled. In transparent mode the firewall is invisible on the network; in routed mode it is a router hop.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Firewall | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `enabled` | boolean |  |  |
| `firewall` | string | read-only |  |
| `ip` | ipv4 | read-only | Firewall management IP |
| `mode` | dedicated.server.FirewallModeEnum | read-only | transparent mode : device is invisible on the network; routed mode : the security appliance is considered to be a router hop in the network — one of `routed`, `transparent` |
| `model` | dedicated.server.FirewallModelEnum | read-only | Firewall model — one of `asa5505`, `asa5510`, `asa5520` |

```json
{
  "enabled": true,
  "firewall": "string",
  "ip": "192.0.2.0",
  "mode": "routed",
  "model": "asa5505"
}
```

### Example

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

# 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/server/{serviceName}/features/firewall");

print_r($result);
?>
```

## Update the firewall

`PUT /1.0/dedicated/server/{serviceName}/features/firewall`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#put-dedicated-server-servicename-features-firewall

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/firewall/edit`

Update the firewall. Updates the firewall attached to the server. Only the enabled field can be changed; the other fields are read-only.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Request body (required)

Type: `dedicated.server.Firewall`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `enabled` | boolean |  |  |
| `firewall` | string | read-only |  |
| `ip` | ipv4 | read-only | Firewall management IP |
| `mode` | dedicated.server.FirewallModeEnum | read-only | transparent mode : device is invisible on the network; routed mode : the security appliance is considered to be a router hop in the network — one of `routed`, `transparent` |
| `model` | dedicated.server.FirewallModelEnum | read-only | Firewall model — one of `asa5505`, `asa5510`, `asa5520` |

```json
{
  "enabled": true
}
```

### Responses

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

### Example

```bash
curl -X PUT \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/firewall" \
  -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: dedicated.server.Firewall
result = client.put("/dedicated/server/{serviceName}/features/firewall",
	enabled = None, #  (type: boolean)
)

# 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: dedicated.server.Firewall
$result = $ovh->put("/dedicated/server/{serviceName}/features/firewall", array(
	enabled => null, //  (type: boolean)
));

print_r($result);
?>
```

## Get the cloud backup

`GET /1.0/dedicated/server/{serviceName}/features/backupCloud`

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

**Status:** Beta version  
**IAM actions:** `dedicatedServer:apiovh:features/backupCloud/get`

Get the cloud backup. Returns the cloud backup of the server: its storage and archive containers, its status and the agreements waiting for validation.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.BackupCloud | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `agreements` | integer[] | read-only | Agreement ids waiting for validation |
| `archive` | dedicated.server.backup.BackupContainer | read-only | Archive space info. |
| `archive.cloudProject` | dedicated.server.backup.BackupProject |  | /cloud project which the container belongs to. |
| `archive.cloudProject.description` | string |  | Project description. |
| `archive.cloudProject.projectId` | string |  | Project id. |
| `archive.id` | string |  | Container id (can also be used to retrieve the resource in the /cloud api). |
| `archive.name` | string |  | Container name. |
| `archive.quota` | dedicated.server.backup.BackupQuota |  | Quota on the current container |
| `archive.quota.maxBandwidth` | complexType.UnitAndValue_long |  | Volume r/w bandwidth limit: read/write volume offered per month on the container. |
| `archive.quota.maxStorage` | complexType.UnitAndValue_long |  | Container max size. |
| `archive.quota.storageUsed` | complexType.UnitAndValue_long |  | Volume usage. |
| `archive.quota.usagePercent` | number |  | Volume usage in percent |
| `archive.region` | string |  | The cloud region which the container belongs to. |
| `archive.sftp` | dedicated.server.backup.BackupSftp |  | Sftp connection info |
| `archive.sftp.password` | string (password) |  | Sftp password. |
| `archive.sftp.url` | string |  | Url |
| `archive.sftp.username` | string |  | Username |
| `archive.swift` | dedicated.server.backup.BackupSwift |  | Swift related information to reach the container |
| `archive.swift.authUrl` | string |  | Auth url. |
| `archive.swift.password` | string (password) |  | Openstack password. |
| `archive.swift.username` | string |  | Openstack username to use swift. |
| `status` | dedicated.server.backup.BackupStatus | read-only | Status of the container. |
| `status.code` | dedicated.server.backup.BackupStatusCodeEnum |  | Status code — one of `DELETING`, `ERROR`, `OK`, `SUSPENDED`, `SUSPENDING`, `UNKNOWN`, `WAITING_AGREEMENTS_VALIDATION` |
| `status.reason` | string |  | Status code reason (when not ok) |
| `storage` | dedicated.server.backup.BackupContainer | read-only | Storage space info. |
| `storage.cloudProject` | dedicated.server.backup.BackupProject |  | /cloud project which the container belongs to. |
| `storage.cloudProject.description` | string |  | Project description. |
| `storage.cloudProject.projectId` | string |  | Project id. |
| `storage.id` | string |  | Container id (can also be used to retrieve the resource in the /cloud api). |
| `storage.name` | string |  | Container name. |
| `storage.quota` | dedicated.server.backup.BackupQuota |  | Quota on the current container |
| `storage.quota.maxBandwidth` | complexType.UnitAndValue_long |  | Volume r/w bandwidth limit: read/write volume offered per month on the container. |
| `storage.quota.maxStorage` | complexType.UnitAndValue_long |  | Container max size. |
| `storage.quota.storageUsed` | complexType.UnitAndValue_long |  | Volume usage. |
| `storage.quota.usagePercent` | number |  | Volume usage in percent |
| `storage.region` | string |  | The cloud region which the container belongs to. |
| `storage.sftp` | dedicated.server.backup.BackupSftp |  | Sftp connection info |
| `storage.sftp.password` | string (password) |  | Sftp password. |
| `storage.sftp.url` | string |  | Url |
| `storage.sftp.username` | string |  | Username |
| `storage.swift` | dedicated.server.backup.BackupSwift |  | Swift related information to reach the container |
| `storage.swift.authUrl` | string |  | Auth url. |
| `storage.swift.password` | string (password) |  | Openstack password. |
| `storage.swift.username` | string |  | Openstack username to use swift. |

```json
{
  "agreements": [
    0
  ],
  "archive": {
    "cloudProject": {
      "description": "string",
      "projectId": "string"
    },
    "id": "string",
    "name": "string",
    "quota": {
      "maxBandwidth": {
        "unit": "string",
        "value": 0
      },
      "maxStorage": {
        "unit": "string",
        "value": 0
      },
      "storageUsed": {
        "unit": "string",
        "value": 0
      },
      "usagePercent": 0
    },
    "region": "string",
    "sftp": {
      "password": "string",
      "url": "string",
      "username": "string"
    },
    "swift": {
      "authUrl": "string",
      "password": "string",
      "username": "string"
    }
  },
  "status": {
    "code": "DELETING",
    "reason": "string"
  },
  "storage": {
    "cloudProject": {
      "description": "string",
      "projectId": "string"
    },
    "id": "string",
    "name": "string",
    "quota": {
      "maxBandwidth": {
        "unit": "string",
        "value": 0
      },
      "maxStorage": {
        "unit": "string",
        "value": 0
      },
      "storageUsed": {
        "unit": "string",
        "value": 0
      },
      "usagePercent": 0
    },
    "region": "string",
    "sftp": {
      "password": "string",
      "url": "string",
      "username": "string"
    },
    "swift": {
      "authUrl": "string",
      "password": "string",
      "username": "string"
    }
  }
}
```

### Example

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

# 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/server/{serviceName}/features/backupCloud");

print_r($result);
?>
```

## Create the cloud backup

`POST /1.0/dedicated/server/{serviceName}/features/backupCloud`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-backupcloud

**Status:** Beta version  
**IAM actions:** `dedicatedServer:apiovh:features/backupCloud/create`

Create the cloud backup. Creates the cloud backup of the server, with storage and archive containers in a cloud project. Set cloudProjectId to use an existing project; otherwise a project is created, described by projectDescription.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Request body (required)

Type: `object`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cloudProjectId` | string |  | cloud project id |
| `projectDescription` | string |  | Project description of the project to be created (ignored when an existing project is already specified) |

```json
{
  "cloudProjectId": "string",
  "projectDescription": "string"
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.BackupCloud | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `agreements` | integer[] | read-only | Agreement ids waiting for validation |
| `archive` | dedicated.server.backup.BackupContainer | read-only | Archive space info. |
| `archive.cloudProject` | dedicated.server.backup.BackupProject |  | /cloud project which the container belongs to. |
| `archive.cloudProject.description` | string |  | Project description. |
| `archive.cloudProject.projectId` | string |  | Project id. |
| `archive.id` | string |  | Container id (can also be used to retrieve the resource in the /cloud api). |
| `archive.name` | string |  | Container name. |
| `archive.quota` | dedicated.server.backup.BackupQuota |  | Quota on the current container |
| `archive.quota.maxBandwidth` | complexType.UnitAndValue_long |  | Volume r/w bandwidth limit: read/write volume offered per month on the container. |
| `archive.quota.maxStorage` | complexType.UnitAndValue_long |  | Container max size. |
| `archive.quota.storageUsed` | complexType.UnitAndValue_long |  | Volume usage. |
| `archive.quota.usagePercent` | number |  | Volume usage in percent |
| `archive.region` | string |  | The cloud region which the container belongs to. |
| `archive.sftp` | dedicated.server.backup.BackupSftp |  | Sftp connection info |
| `archive.sftp.password` | string (password) |  | Sftp password. |
| `archive.sftp.url` | string |  | Url |
| `archive.sftp.username` | string |  | Username |
| `archive.swift` | dedicated.server.backup.BackupSwift |  | Swift related information to reach the container |
| `archive.swift.authUrl` | string |  | Auth url. |
| `archive.swift.password` | string (password) |  | Openstack password. |
| `archive.swift.username` | string |  | Openstack username to use swift. |
| `status` | dedicated.server.backup.BackupStatus | read-only | Status of the container. |
| `status.code` | dedicated.server.backup.BackupStatusCodeEnum |  | Status code — one of `DELETING`, `ERROR`, `OK`, `SUSPENDED`, `SUSPENDING`, `UNKNOWN`, `WAITING_AGREEMENTS_VALIDATION` |
| `status.reason` | string |  | Status code reason (when not ok) |
| `storage` | dedicated.server.backup.BackupContainer | read-only | Storage space info. |
| `storage.cloudProject` | dedicated.server.backup.BackupProject |  | /cloud project which the container belongs to. |
| `storage.cloudProject.description` | string |  | Project description. |
| `storage.cloudProject.projectId` | string |  | Project id. |
| `storage.id` | string |  | Container id (can also be used to retrieve the resource in the /cloud api). |
| `storage.name` | string |  | Container name. |
| `storage.quota` | dedicated.server.backup.BackupQuota |  | Quota on the current container |
| `storage.quota.maxBandwidth` | complexType.UnitAndValue_long |  | Volume r/w bandwidth limit: read/write volume offered per month on the container. |
| `storage.quota.maxStorage` | complexType.UnitAndValue_long |  | Container max size. |
| `storage.quota.storageUsed` | complexType.UnitAndValue_long |  | Volume usage. |
| `storage.quota.usagePercent` | number |  | Volume usage in percent |
| `storage.region` | string |  | The cloud region which the container belongs to. |
| `storage.sftp` | dedicated.server.backup.BackupSftp |  | Sftp connection info |
| `storage.sftp.password` | string (password) |  | Sftp password. |
| `storage.sftp.url` | string |  | Url |
| `storage.sftp.username` | string |  | Username |
| `storage.swift` | dedicated.server.backup.BackupSwift |  | Swift related information to reach the container |
| `storage.swift.authUrl` | string |  | Auth url. |
| `storage.swift.password` | string (password) |  | Openstack password. |
| `storage.swift.username` | string |  | Openstack username to use swift. |

```json
{
  "agreements": [
    0
  ],
  "archive": {
    "cloudProject": {
      "description": "string",
      "projectId": "string"
    },
    "id": "string",
    "name": "string",
    "quota": {
      "maxBandwidth": {
        "unit": "string",
        "value": 0
      },
      "maxStorage": {
        "unit": "string",
        "value": 0
      },
      "storageUsed": {
        "unit": "string",
        "value": 0
      },
      "usagePercent": 0
    },
    "region": "string",
    "sftp": {
      "password": "string",
      "url": "string",
      "username": "string"
    },
    "swift": {
      "authUrl": "string",
      "password": "string",
      "username": "string"
    }
  },
  "status": {
    "code": "DELETING",
    "reason": "string"
  },
  "storage": {
    "cloudProject": {
      "description": "string",
      "projectId": "string"
    },
    "id": "string",
    "name": "string",
    "quota": {
      "maxBandwidth": {
        "unit": "string",
        "value": 0
      },
      "maxStorage": {
        "unit": "string",
        "value": 0
      },
      "storageUsed": {
        "unit": "string",
        "value": 0
      },
      "usagePercent": 0
    },
    "region": "string",
    "sftp": {
      "password": "string",
      "url": "string",
      "username": "string"
    },
    "swift": {
      "authUrl": "string",
      "password": "string",
      "username": "string"
    }
  }
}
```

### Example

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

result = client.post("/dedicated/server/{serviceName}/features/backupCloud",
	cloudProjectId = None, # cloud project id (type: string, nullable)
	projectDescription = None, # Project description of the project to be created (ignored when an existing project is already specified) (type: string, 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

$result = $ovh->post("/dedicated/server/{serviceName}/features/backupCloud", array(
	cloudProjectId => null, // cloud project id (type: string, nullable)
	projectDescription => null, // Project description of the project to be created (ignored when an existing project is already specified) (type: string, nullable)
));

print_r($result);
?>
```

## Deactivate the cloud backup

`DELETE /1.0/dedicated/server/{serviceName}/features/backupCloud`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#delete-dedicated-server-servicename-features-backupcloud

**Status:** Beta version  
**IAM actions:** `dedicatedServer:apiovh:features/backupCloud/delete`

Deactivate the cloud backup. Deactivates the cloud backup of the server. The container data is not deleted.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

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

### Example

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

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

print_r($result);
?>
```

## Regenerate cloud backup passwords

`POST /1.0/dedicated/server/{serviceName}/features/backupCloud/password`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-backupcloud-password

**Status:** Beta version  
**IAM actions:** `dedicatedServer:apiovh:features/backupCloud/password/create`

Regenerate cloud backup passwords. Regenerates the cloud backup passwords and returns them: the Swift and SFTP passwords of the storage and archive containers.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.backup.BackupPassword | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `sftpArchive` | string (password) |  | Password to reach the archive container through the sftp gw. |
| `sftpStorage` | string (password) |  | Password to reach the storage container through the sftp gw. |
| `swiftArchive` | string (password) |  | Password to reach the archive container through swift. |
| `swiftStorage` | string (password) |  | Password to reach the storage container through swift. |

```json
{
  "sftpArchive": "string",
  "sftpStorage": "string",
  "swiftArchive": "string",
  "swiftStorage": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/backupCloud/password" \
  -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/server/{serviceName}/features/backupCloud/password")

# 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/server/{serviceName}/features/backupCloud/password");

print_r($result);
?>
```

## Get the backup FTP space

`GET /1.0/dedicated/server/{serviceName}/features/backupFTP`

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

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/get`

Get the backup FTP space. Returns the backup FTP space: its server name, type, available disk space and usage. readOnlyDate is set when the account was switched to read-only because the quota was exceeded.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.BackupFtp | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ftpBackupName` | string | read-only | The backup FTP server name |
| `quota` | complexType.UnitAndValue_long | read-only | The disk space available in gigabytes |
| `quota.unit` | string |  |  |
| `quota.value` | integer |  |  |
| `readOnlyDate` | string (date-time) | read-only | If not-null, gives the date since when your account was set in read-only mode because the quota was exceeded |
| `type` | dedicated.server.BackupStorageTypeEnum | read-only | The backup FTP type — one of `included`, `storage` |
| `usage` | complexType.UnitAndValue_long | read-only | The disk space currently used on your backup FTP in percent |
| `usage.unit` | string |  |  |
| `usage.value` | integer |  |  |

```json
{
  "ftpBackupName": "string",
  "quota": {
    "unit": "string",
    "value": 0
  },
  "readOnlyDate": "2024-01-01T12:00:00Z",
  "type": "included",
  "usage": {
    "unit": "string",
    "value": 0
  }
}
```

### Example

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

# 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/server/{serviceName}/features/backupFTP");

print_r($result);
?>
```

## Create the backup FTP space

`POST /1.0/dedicated/server/{serviceName}/features/backupFTP`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-backupftp

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/create`

Create the backup FTP space. Creates the backup FTP space and returns a task. The IP blocks allowed to reach it, and their protocols, are managed with the access routes.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

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

# 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/server/{serviceName}/features/backupFTP");

print_r($result);
?>
```

## Delete the backup FTP space

`DELETE /1.0/dedicated/server/{serviceName}/features/backupFTP`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#delete-dedicated-server-servicename-features-backupftp

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/delete`

Delete the backup FTP space. Terminates the backup FTP space and returns a task. All data stored on it is permanently deleted.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

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

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

print_r($result);
?>
```

## List backup FTP ACLs

`GET /1.0/dedicated/server/{serviceName}/features/backupFTP/access`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#get-dedicated-server-servicename-features-backupftp-access

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/access/get`

List backup FTP ACLs. Returns the IP blocks authorized on the backup FTP space. Get an ACL to see the protocols it allows: FTP, NFS and CIFS (SMB).

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

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

```json
[
  "192.0.2.0/24"
]
```

### Example

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

# 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/server/{serviceName}/features/backupFTP/access");

print_r($result);
?>
```

## Create a backup FTP ACL

`POST /1.0/dedicated/server/{serviceName}/features/backupFTP/access`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-backupftp-access

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/access/create`

Create a backup FTP ACL. Authorizes an IP block on the backup FTP space with the chosen protocols and returns a task. At least one of ftp, nfs and cifs must be enabled; ftp is false when omitted. authorizableBlocks lists the eligible blocks.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Request body (required)

Type: `object`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cifs` | boolean | yes | Whether to allow the CIFS (SMB) protocol for this ACL |
| `ftp` | boolean |  | Whether to allow the FTP protocol for this ACL |
| `ipBlock` | ipBlock | yes | The IP Block specific to this ACL. It musts belong to your server. |
| `nfs` | boolean | yes | Whether to allow the NFS protocol for this ACL |

```json
{
  "cifs": true,
  "ftp": true,
  "ipBlock": "192.0.2.0/24",
  "nfs": true
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/backupFTP/access" \
  -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
)

result = client.post("/dedicated/server/{serviceName}/features/backupFTP/access",
	cifs = None, # Whether to allow the CIFS (SMB) protocol for this ACL (type: boolean)
	ftp = None, # Whether to allow the FTP protocol for this ACL (type: boolean, nullable)
	ipBlock = None, # The IP Block specific to this ACL. It musts belong to your server. (type: ipBlock)
	nfs = None, # Whether to allow the NFS protocol for this ACL (type: boolean)
)

# 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/server/{serviceName}/features/backupFTP/access", array(
	cifs => null, // Whether to allow the CIFS (SMB) protocol for this ACL (type: boolean)
	ftp => null, // Whether to allow the FTP protocol for this ACL (type: boolean, nullable)
	ipBlock => null, // The IP Block specific to this ACL. It musts belong to your server. (type: ipBlock)
	nfs => null, // Whether to allow the NFS protocol for this ACL (type: boolean)
));

print_r($result);
?>
```

## Get a backup FTP ACL

`GET /1.0/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#get-dedicated-server-servicename-features-backupftp-access-ipblock

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/access/get`

Get a backup FTP ACL. Returns the protocols allowed for the IP block (FTP, NFS, CIFS), whether the rule is applied on the backup FTP space and its last update date.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ipBlock` | path | ipBlock | yes | The IP Block specific to this ACL |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.BackupFtpAcl | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cifs` | boolean |  | Whether to allow the CIFS (SMB) protocol for this ACL |
| `ftp` | boolean |  | Whether to allow the FTP protocol for this ACL |
| `ipBlock` | ipBlock | read-only | The IP Block specific to this ACL |
| `isApplied` | boolean | read-only | Whether the rule has been applied on the Backup Ftp |
| `lastUpdate` | string (date-time) | read-only | Date of the last object modification |
| `nfs` | boolean |  | Whether to allow the NFS protocol for this ACL |

```json
{
  "cifs": true,
  "ftp": true,
  "ipBlock": "192.0.2.0/24",
  "isApplied": true,
  "lastUpdate": "2024-01-01T12:00:00Z",
  "nfs": true
}
```

### Example

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

# 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/server/{serviceName}/features/backupFTP/access/{ipBlock}");

print_r($result);
?>
```

## Delete a backup FTP ACL

`DELETE /1.0/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#delete-dedicated-server-servicename-features-backupftp-access-ipblock

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/access/delete`

Delete a backup FTP ACL. Revokes the access of the IP block to the backup FTP space and returns a task. The task carries the status of the revocation.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ipBlock` | path | ipBlock | yes | The IP Block specific to this ACL |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

```bash
curl -X DELETE \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}" \
  -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("/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}")

# 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("/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}");

print_r($result);
?>
```

## Update a backup FTP ACL

`PUT /1.0/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#put-dedicated-server-servicename-features-backupftp-access-ipblock

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/access/edit`

Update a backup FTP ACL. Updates the protocols allowed for the IP block: ftp, nfs and cifs. The change is applied asynchronously: isApplied stays false until it is in effect.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ipBlock` | path | ipBlock | yes | The IP Block specific to this ACL |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Request body (required)

Type: `dedicated.server.BackupFtpAcl`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cifs` | boolean |  | Whether to allow the CIFS (SMB) protocol for this ACL |
| `ftp` | boolean |  | Whether to allow the FTP protocol for this ACL |
| `ipBlock` | ipBlock | read-only | The IP Block specific to this ACL |
| `isApplied` | boolean | read-only | Whether the rule has been applied on the Backup Ftp |
| `lastUpdate` | string (date-time) | read-only | Date of the last object modification |
| `nfs` | boolean |  | Whether to allow the NFS protocol for this ACL |

```json
{
  "cifs": true,
  "ftp": true,
  "nfs": true
}
```

### Responses

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

### Example

```bash
curl -X PUT \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}" \
  -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: dedicated.server.BackupFtpAcl
result = client.put("/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}",
	cifs = None, # Whether to allow the CIFS (SMB) protocol for this ACL (type: boolean)
	ftp = None, # Whether to allow the FTP protocol for this ACL (type: boolean)
	nfs = None, # Whether to allow the NFS protocol for this ACL (type: boolean)
)

# 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: dedicated.server.BackupFtpAcl
$result = $ovh->put("/dedicated/server/{serviceName}/features/backupFTP/access/{ipBlock}", array(
	cifs => null, // Whether to allow the CIFS (SMB) protocol for this ACL (type: boolean)
	ftp => null, // Whether to allow the FTP protocol for this ACL (type: boolean)
	nfs => null, // Whether to allow the NFS protocol for this ACL (type: boolean)
));

print_r($result);
?>
```

## List authorizable IP blocks

`GET /1.0/dedicated/server/{serviceName}/features/backupFTP/authorizableBlocks`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#get-dedicated-server-servicename-features-backupftp-authorizableblocks

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/authorizableBlocks/get`

List authorizable IP blocks. Returns the IP blocks of the account that can be authorized in a backup FTP ACL. They include blocks routed to other services of the account, not only to this server.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

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

```json
[
  "192.0.2.0/24"
]
```

### Example

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

# 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/server/{serviceName}/features/backupFTP/authorizableBlocks");

print_r($result);
?>
```

## Reset the backup FTP password

`POST /1.0/dedicated/server/{serviceName}/features/backupFTP/password`

Link: https://developers.eu.ovhcloud.com/reference/bare-metal-cloud/dedicated-servers/features/#post-dedicated-server-servicename-features-backupftp-password

**Status:** Stable production version  
**IAM actions:** `dedicatedServer:apiovh:features/backupFTP/password/create`

Reset the backup FTP password. Resets the backup FTP password and returns a task. The response does not contain the new password.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.Task | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `changeUuid` | string | read-only | UUID of the change linked to this task |
| `comment` | string | read-only | Details of this task |
| `doneDate` | string (date-time) | read-only | Completion date |
| `function` | dedicated.TaskFunctionEnum | read-only | Function name — one of `INFRA_002_VirtualNetworkInterface`, `INFRA_002_VirtualNetworkInterface_group`, `INFRA_002_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_ONEAPI_VirtualNetworkInterface_ungroup`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_group`, `INFRA_ONE_NETWORK_VirtualNetworkInterface_ungroup`, `addVirtualMac`, `addWindowSplaFromExistingSerial`, `applyBackupFtpAcls`, `applyBackupFtpQuota`, `bypassAntiDDosGame`, … |
| `lastUpdate` | string (date-time) | read-only | last update |
| `needSchedule` | boolean | read-only | Whether this task need to be scheduled or not |
| `note` | string | read-only | Extra information about this task |
| `plannedInterventionId` | integer | read-only | ID of the planned intervention for this task |
| `startDate` | string (date-time) | read-only | Task Creation date |
| `status` | dedicated.TaskStatusEnum | read-only | Task status — one of `cancelled`, `customerError`, `doing`, `done`, `init`, `ovhError`, `todo` |
| `tags` | complexType.SafeKeyValueCanBeNull_string[] | read-only | Task result tags output |
| `tags[].key` | string |  |  |
| `tags[].value` | string |  |  |
| `taskId` | integer | read-only | the id of the task |
| `ticketReference` | string | read-only | Reference of the thread on the support tool |

```json
{
  "changeUuid": "string",
  "comment": "string",
  "doneDate": "2024-01-01T12:00:00Z",
  "function": "INFRA_002_VirtualNetworkInterface",
  "lastUpdate": "2024-01-01T12:00:00Z",
  "needSchedule": true,
  "note": "string",
  "plannedInterventionId": 0,
  "startDate": "2024-01-01T12:00:00Z",
  "status": "cancelled",
  "tags": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "taskId": 0,
  "ticketReference": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/dedicated/server/{serviceName}/features/backupFTP/password" \
  -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/server/{serviceName}/features/backupFTP/password")

# 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/server/{serviceName}/features/backupFTP/password");

print_r($result);
?>
```

## Get the cloud backup offer

`GET /1.0/dedicated/server/{serviceName}/backupCloudOfferDetails`

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

**Status:** Beta version  
**IAM actions:** `dedicatedServer:apiovh:backupCloudOfferDetails/get`

Get the cloud backup offer. Returns the cloud backup offer available for the server: the maximum size and the monthly read/write volume of the storage and archive containers. When no offer is available, the call returns an error.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serviceName` | path | string | yes | The internal name of your dedicated server |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | dedicated.server.backup.BackupOffer | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `maxArchive` | complexType.UnitAndValue_long |  | Archive container max size. |
| `maxArchive.unit` | string |  |  |
| `maxArchive.value` | integer |  |  |
| `maxBandwidthArchive` | complexType.UnitAndValue_long |  | Archive volume r/w bandwidth limit: read/write volume offered per month on the container. |
| `maxBandwidthArchive.unit` | string |  |  |
| `maxBandwidthArchive.value` | integer |  |  |
| `maxBandwidthStorage` | complexType.UnitAndValue_long |  | Storage volume r/w bandwidth limit: read/write volume offered per month on the container. |
| `maxBandwidthStorage.unit` | string |  |  |
| `maxBandwidthStorage.value` | integer |  |  |
| `maxStorage` | complexType.UnitAndValue_long |  | Storage container max size. |
| `maxStorage.unit` | string |  |  |
| `maxStorage.value` | integer |  |  |

```json
{
  "maxArchive": {
    "unit": "string",
    "value": 0
  },
  "maxBandwidthArchive": {
    "unit": "string",
    "value": 0
  },
  "maxBandwidthStorage": {
    "unit": "string",
    "value": 0
  },
  "maxStorage": {
    "unit": "string",
    "value": 0
  }
}
```

### Example

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

# 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/server/{serviceName}/backupCloudOfferDetails");

print_r($result);
?>
```
