# Disaster Recovery API
**Base URL**: https://dev-cloud.acronis.com/api/dr/v2
## Security
### OAuth 2.0
OAuth 2.0 security scheme definition for a user authorization
Supported grant types:
* `password`
* `client_credentials`
* `authorization_code`
* `urn:ietf:params:oauth:grant-type:jwt-bearer`
Authorization URI example: `https://dev-cloud.acronis.com/api/2/idp/authorize`
Access token URI example: `https://dev-cloud.acronis.com/api/2/idp/token`
### Request parameters
#### Headers
| Name | Description |
|------|-------------|
| `Authorization` | (Required) OAuth 2.0 access token.
**Type**: String
**Pattern**: `^Bearer [0-9a-zA-Z\-\._~+/]+={0,2}$` |
### Responses
| Code | Description |
|------|-------------|
| `401` | The request was denied because the bearer access token was invalid or missing. |
| `403` | The request was denied because the bearer access token did not have the required privileges. |
### Scopes
* `acep::consumer`
* `dr::support_operator`
* `dr_backup_processor`
* `dr_service::admin`
* `dr_service::vpn_appliance`
* `dr_service::vpn_server`
* `partner_admin`
* `protection::readonly`
* `root_admin`
* `resource_manager::admin`
## Endpoints
### GET /servers
Fetches the list of cloud servers.
#### Security
The endpoint supports the following authorization methods: `OAuth 2.0`
For OAuth2 authorization method, one of the following scopes is required by the endpoint:
* `dr_service::admin`
* `dr::support_operator`
* `protection::readonly`
#### Request parameters
##### Query parameters
| Name | Description |
|------|-------------|
| `type` | (Optional) Filters the cloud servers by type.
**Type**: String
**Allowed values**:
- `PRIMARY`
- `RECOVERY` |
| `recovery.resource_id` | (Optional) Filters the recovery servers by the original device resource ID. Multiple entries are accepted.
**Type**: String
**Pattern**: `^[a-zA-Z0-9-]+$` |
| `limit` | (Optional) Maximum number of items to fetch per page. Mutually exclusive with the 'before' and 'after' parameters.
**Type**: Integer
**Minimum**: 1
**Maximum**: 50
**Default**: 10 |
| `after` | (Optional) Token from the 'after' field in the previous response. It contains a cursor that points to the next page of the requested collection. Mutually exclusive with the 'limit' and 'before' parameters. If provided, all other query parameters will be ignored.
**Type**: String
**Min length**: 1 |
| `before` | (Optional) Token from the 'before' field in the previous response. It contains a cursor that points to the previous page of the requested collection. Mutually exclusive with the 'limit' and 'after' parameters. If provided, all other query parameters will be ignored.
**Type**: String
**Min length**: 1 |
#### Responses
| Code | Description |
|------|-------------|
| `200` | - |
| `400` | The request could not be validated against the RAML schema. |
| `401` | The request was denied because the bearer access token was invalid or missing. |
| `403` | The request was denied because the bearer access token did not have the required privileges. |
| `404` | The requested resource was not found. |
| `429` | The response status code indicates that the service is overloaded and you must wait before the next request. |
| `500` | An internal server error occurred while processing the request. |
| `504` | Gateway time-out. |
### POST /servers/{uuid}:start_failover_prod
Starts a production failover of the cloud server.
#### Security
The endpoint supports the following authorization methods: `OAuth 2.0`
For OAuth2 authorization method, one of the following scopes is required by the endpoint:
* `dr_service::admin`
#### Request parameters
##### Request body
**Media type**: application/json
**Schema definition**:
| Name | Description |
|------|-------------|
| `recovery_point` | Composite identifier of a recovery point.
**Type**: Object |
**Example**:
```json
{
"recovery_point": {
"backup_id": "c4d81250-bd8a-4b8f-afd7-e88ea0e5cbf6",
"archive_id": "b595c974-0c8b-4802-b71b-238b76c4c05e",
"vault_id": "0a959777-c0c8-40af-b3d3-9ad972040db8"
}
}
```
#### Responses
| Code | Description |
|------|-------------|
| `202` | - |
| `400` | The request could not be validated against the RAML schema. |
| `401` | The request was denied because the bearer access token was invalid or missing. |
| `403` | The request was denied because the bearer access token did not have the required privileges. |
| `404` | The requested resource was not found. |
| `409` | The request could not be completed because there was a conflict with the current state of the resource. |
| `429` | The response status code indicates that the service is overloaded and you must wait before the next request. |
| `500` | An internal server error occurred while processing the request. |
| `504` | Gateway time-out. |
### POST /servers/{uuid}:start_failover_test
Starts a test failover of the cloud server.
#### Security
The endpoint supports the following authorization methods: `OAuth 2.0`
For OAuth2 authorization method, one of the following scopes is required by the endpoint:
* `dr_service::admin`
* `dr::support_operator`
#### Request parameters
##### Request body
**Media type**: application/json
**Schema definition**:
| Name | Description |
|------|-------------|
| `recovery_point` | Composite identifier of a recovery point.
**Type**: Object |
**Example**:
```json
{
"recovery_point": {
"backup_id": "c4d81250-bd8a-4b8f-afd7-e88ea0e5cbf6",
"archive_id": "b595c974-0c8b-4802-b71b-238b76c4c05e",
"vault_id": "0a959777-c0c8-40af-b3d3-9ad972040db8"
}
}
```
#### Responses
| Code | Description |
|------|-------------|
| `202` | - |
| `400` | The request could not be validated against the RAML schema. |
| `401` | The request was denied because the bearer access token was invalid or missing. |
| `403` | The request was denied because the bearer access token did not have the required privileges. |
| `404` | The requested resource was not found. |
| `409` | The request could not be completed because there was a conflict with the current state of the resource. |
| `429` | The response status code indicates that the service is overloaded and you must wait before the next request. |
| `500` | An internal server error occurred while processing the request. |
| `504` | Gateway time-out. |
### POST /servers/{uuid}:stop_failover
Stops the failover of the cloud server.
#### Security
The endpoint supports the following authorization methods: `OAuth 2.0`
For OAuth2 authorization method, one of the following scopes is required by the endpoint:
* `dr_service::admin`
* `dr::support_operator`
#### Request parameters
##### Request body
**Media type**: application/json
**Schema definition**:
| Name | Description |
|------|-------------|
**Example**:
```json
{}
```
#### Responses
| Code | Description |
|------|-------------|
| `202` | - |
| `400` | The request could not be validated against the RAML schema. |
| `401` | The request was denied because the bearer access token was invalid or missing. |
| `403` | The request was denied because the bearer access token did not have the required privileges. |
| `404` | The requested resource was not found. |
| `409` | The request could not be completed because there was a conflict with the current state of the resource. |
| `429` | The response status code indicates that the service is overloaded and you must wait before the next request. |
| `500` | An internal server error occurred while processing the request. |
| `504` | Gateway time-out. |
### GET /sites
Fetches the list of disaster recovery sites.
#### Security
The endpoint supports the following authorization methods: `OAuth 2.0`
For OAuth2 authorization method, one of the following scopes is required by the endpoint:
* `dr_service::admin`
* `dr::support_operator`
* `protection::readonly`
#### Request parameters
##### Query parameters
| Name | Description |
|------|-------------|
| `allow_deleted` | (Optional) Includes resources that are marked as deleted in the request result.
**Type**: Boolean
**Default**: false |
| `limit` | (Optional) Maximum number of items to fetch per page. Mutually exclusive with the 'before' and 'after' parameters.
**Type**: Integer
**Minimum**: 1
**Maximum**: 50
**Default**: 10 |
| `after` | (Optional) Token from the 'after' field in the previous response. It contains a cursor that points to the next page of the requested collection. Mutually exclusive with the 'limit' and 'before' parameters. If provided, all other query parameters will be ignored.
**Type**: String
**Min length**: 1 |
| `before` | (Optional) Token from the 'before' field in the previous response. It contains a cursor that points to the previous page of the requested collection. Mutually exclusive with the 'limit' and 'after' parameters. If provided, all other query parameters will be ignored.
**Type**: String
**Min length**: 1 |
#### Responses
| Code | Description |
|------|-------------|
| `200` | - |
| `400` | The request could not be validated against the RAML schema. |
| `401` | The request was denied because the bearer access token was invalid or missing. |
| `403` | The request was denied because the bearer access token did not have the required privileges. |
| `404` | The requested resource was not found. |
| `429` | The response status code indicates that the service is overloaded and you must wait before the next request. |
| `500` | An internal server error occurred while processing the request. |
| `504` | Gateway time-out. |
### GET /sites/{uuid}
Fetches the details of the disaster recovery site.
#### Security
The endpoint supports the following authorization methods: `OAuth 2.0`
For OAuth2 authorization method, one of the following scopes is required by the endpoint:
* `dr_service::admin`
* `dr::support_operator`
* `protection::readonly`
#### Request parameters
##### Query parameters
| Name | Description |
|------|-------------|
| `allow_deleted` | (Optional) Includes resources that are marked as deleted in the request result.
**Type**: Boolean
**Default**: false |
#### Responses
| Code | Description |
|------|-------------|
| `200` | - |
| `400` | The request could not be validated against the RAML schema. |
| `401` | The request was denied because the bearer access token was invalid or missing. |
| `403` | The request was denied because the bearer access token did not have the required privileges. |
| `404` | The requested resource was not found. |
| `429` | The response status code indicates that the service is overloaded and you must wait before the next request. |
| `500` | An internal server error occurred while processing the request. |
| `504` | Gateway time-out. |