{ "openapi": "3.0.0", "info": { "title": "Disaster Recovery API", "version": "v2" }, "paths": { "/servers": { "get": { "operationId": "Fetch cloud servers", "description": "Fetches the list of cloud servers.", "parameters": [ { "name": "type", "description": "Filters the cloud servers by type.", "in": "query", "schema": { "description": "Filters the cloud servers by type.", "enum": [ "PRIMARY", "RECOVERY" ], "type": "string" } }, { "name": "recovery.resource_id", "description": "Filters the recovery servers by the original device resource ID. Multiple entries are accepted.", "in": "query", "schema": { "description": "Filters the recovery servers by the original device resource ID. Multiple entries are accepted.", "example": "6782e594-781d-4ad2-b8ca-25a0c40f9938", "type": "string", "pattern": "^[a-zA-Z0-9-]+$" } }, { "name": "limit", "description": "Maximum number of items to fetch per page. Mutually exclusive with the 'before' and 'after' parameters.", "required": false, "in": "query", "schema": { "description": "Maximum number of items to fetch per page. Mutually exclusive with the 'before' and 'after' parameters.", "default": 10, "type": "integer", "minimum": 1, "maximum": 50 } }, { "name": "after", "description": "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.", "required": false, "in": "query", "schema": { "description": "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.", "default": "null", "example": "eyJSJdfQ", "type": "string", "minLength": 1 } }, { "name": "before", "description": "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.", "required": false, "in": "query", "schema": { "description": "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.", "default": "null", "example": "eyJSJdfQ", "type": "string", "minLength": 1 } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "items" ], "properties": { "items": { "description": "List of the cloud servers.", "type": "array", "minItems": 0, "items": { "allOf": [ { "oneOf": [ { "type": "object", "required": [ "primary" ], "properties": { "type": { "description": "Type of the cloud server.", "enum": [ "PRIMARY" ], "type": "string" }, "primary": { "description": "Additional parameters of the primary server.", "type": "object", "additionalProperties": false, "required": [ "vault_id" ], "properties": { "vault_id": { "$ref": "#/components/schemas/vault_id" } } }, "_links": { "description": "Links and actions related to the primary server.", "type": "array", "minItems": 1, "items": { "oneOf": [ { "$ref": "#/components/schemas/item0" }, { "$ref": "#/components/schemas/item1" }, { "$ref": "#/components/schemas/item2" } ] } }, "_issues": { "description": "Issues related to the primary server.", "type": "array", "minItems": 0, "items": { "description": "Describes a single issue (constraint violation).", "oneOf": [ { "$ref": "#/components/schemas/item0_1" } ] } } } }, { "type": "object", "required": [ "recovery" ], "properties": { "type": { "description": "Type of the cloud server.", "enum": [ "RECOVERY" ], "type": "string" }, "recovery": { "description": "Additional parameters of recovery server.", "type": "object", "additionalProperties": false, "required": [ "automated_test_failover", "resource_id" ], "properties": { "active_failover": { "description": "Details of the failover that is in progress. Missing for servers in the STAND_BY state.", "type": "object", "additionalProperties": false, "required": [ "backup_uri", "id", "vault_id" ], "properties": { "archive_credentials_id": { "description": "ID of the archive credentials of the backup that is used for the failover operation. Required for automated failback. Missing if failover was initiated from a non-encrypted archive.", "type": "string", "minLength": 1 }, "backup_uri": { "description": "Universal URI identifier of the recovery point that is used for the failover operation.", "type": "string", "minLength": 1 }, "id": { "description": "Unique identifier of the failover that is in progress.", "type": "string", "minLength": 1 }, "vault_id": { "$ref": "#/components/schemas/vault_id" } } }, "automated_test_failover": { "description": "Details of the automated test failover. All properties except the schedule are omitted if automated test failover is disabled for the server.", "oneOf": [ { "description": "Automated test failover is disabled.", "type": "object", "additionalProperties": false, "required": [ "schedule" ], "properties": { "schedule": { "description": "Schedule of the automated test failover. 'NEVER' means that automated test failover is disabled for the server.", "enum": [ "NEVER" ], "type": "string" } } }, { "description": "Automated test failover was performed at least one time.", "type": "object", "additionalProperties": false, "required": [ "recovery_point", "last_start", "last_status", "last_task_uuid", "next_start", "schedule", "screenshot_link", "screenshot_preview_link", "timeout" ], "properties": { "recovery_point": { "$ref": "#/components/schemas/recovery_point" }, "last_start": { "description": "Date and time of the last automated test failover.", "type": "string", "format": "date-time" }, "last_status": { "description": "Result of the last automated test failover.", "enum": [ "SUCCESS", "FAILURE" ], "type": "string" }, "last_task_uuid": { "$ref": "#/components/schemas/last_task_uuid" }, "next_start": { "nullable": true, "type": "string", "format": "date-time" }, "schedule": { "description": "Interval at which automated test failover is performed.", "enum": [ "HOURLY", "DAILY", "WEEKLY", "MONTHLY" ], "type": "string" }, "screenshot_link": { "nullable": true, "type": "string", "format": "uri" }, "screenshot_preview_link": { "nullable": true, "type": "string", "format": "uri" }, "timeout": { "description": "Timeout in seconds for the complete operation: performing a test failover, taking a screenshot, and evaluating the result.", "type": "integer", "minimum": 1 } } }, { "description": "Automated test failover is enabled but has not been performed yet.", "type": "object", "additionalProperties": false, "required": [ "recovery_point", "last_start", "last_status", "next_start", "last_task_uuid", "schedule", "screenshot_link", "screenshot_preview_link", "timeout" ], "properties": { "recovery_point": { "nullable": true, "type": "string" }, "last_start": { "nullable": true, "type": "string" }, "last_status": { "nullable": true, "type": "string" }, "next_start": { "nullable": true, "type": "string", "format": "date-time" }, "last_task_uuid": { "nullable": true, "type": "string" }, "schedule": { "description": "Interval at which automated test failover is performed.", "enum": [ "HOURLY", "DAILY", "WEEKLY", "MONTHLY" ], "type": "string" }, "screenshot_link": { "nullable": true, "type": "string" }, "screenshot_preview_link": { "nullable": true, "type": "string" }, "timeout": { "description": "Timeout in seconds for the complete operation: performing a test failover, taking a screenshot, and evaluating the result.", "type": "integer", "minimum": 1 } } } ], "type": "object" }, "ip_mapped": { "description": "Optional mapping of the specified server IP in the production network to make the server accessible during test failover.", "type": "string", "format": "ipv4" }, "resource_id": { "description": "Identifier of the original device that is protected by the recovery server.", "type": "string" }, "test_failover": { "description": "Details of the test failover.", "type": "object", "additionalProperties": false, "required": [ "recovery_point", "last_start", "last_task_uuid" ], "properties": { "recovery_point": { "$ref": "#/components/schemas/recovery_point" }, "last_start": { "description": "Date and time of the test failover.", "type": "string", "format": "date-time" }, "last_task_uuid": { "$ref": "#/components/schemas/last_task_uuid" } } } } }, "_links": { "description": "Links and actions related to the recovery server.", "type": "array", "minItems": 1, "items": { "anyOf": [ { "$ref": "#/components/schemas/item0" }, { "$ref": "#/components/schemas/item1" }, { "$ref": "#/components/schemas/item2" }, { "description": "Link used in a POST request to initiate a production failover of the cloud server.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link used in a POST request to initiate a production failover of the cloud server.", "enum": [ "DR_CLOUD_SERVER_START_FAILOVER_PROD" ], "type": "string" }, "type": { "description": "Media type of the response to the action.", "type": "string" }, "href": { "description": "URL for the POST request to start production failover for the cloud server.", "type": "string", "format": "uri" } } }, { "description": "Link to the POST request to start test failover for the cloud server.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the POST request to start test failover for the cloud server.", "enum": [ "DR_CLOUD_SERVER_START_FAILOVER_TEST" ], "type": "string" }, "type": { "description": "Media type of the response to the action.", "type": "string" }, "href": { "description": "URL for the POST request to start test failover for the cloud server.", "type": "string", "format": "uri" } } }, { "description": "Link to the POST request to stop failover for the cloud server.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the POST request to stop failover for the cloud server.", "enum": [ "DR_CLOUD_SERVER_STOP_FAILOVER" ], "type": "string" }, "type": { "description": "Media type of the response to the action.", "type": "string" }, "href": { "description": "URL for the POST request to stop failover for the cloud server.", "type": "string", "format": "uri" } } } ] } }, "_issues": { "description": "Issues related to the recovery server.", "type": "array", "minItems": 0, "items": { "description": "Describes a single issue (constraint violation).", "oneOf": [ { "$ref": "#/components/schemas/item0_1" }, { "description": "Issue with the unavailability of the start failover operation for the cloud server.", "allOf": [ { "$ref": "#/components/schemas/item0_2" }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "link": { "description": "Name of the affected link.", "enum": [ "DR_CLOUD_SERVER_START_FAILOVER_PROD", "DR_CLOUD_SERVER_START_FAILOVER_TEST" ], "type": "string" }, "target": { "description": "UUID of the cloud server on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "$ref": "#/components/schemas/SiteNotReady" }, { "description": "The \"DR and Direct Backup to Azure\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundAzureDR" ], "type": "string" } } } ] }, { "description": "The \"Disaster recovery storage\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundDrStorage" ], "type": "string" } } } ] }, { "description": "The \"Compute points\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundComputePoints" ], "type": "string" } } } ] }, { "description": "The \"Cloud servers\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundCloudServers" ], "type": "string" } } } ] }, { "description": "There are no available compute points for testing the Disaster Recovery functionality. {{additionalComputePoints}} additional compute points will be added next month. To enable the complete functionality, contact your partner and activate the Disaster Recovery service.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededBaseDR" ], "type": "string" }, "context": { "type": "object", "required": [ "additionalComputePoints" ], "properties": { "additionalComputePoints": { "type": "integer", "minimum": 0 } } } } } ] }, { "description": "You have exceeded the \"Cloud servers\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededCloudServers" ], "type": "string" } } } ] }, { "description": "You have exceeded the \"Compute points\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededComputePoints" ], "type": "string" } } } ] }, { "$ref": "#/components/schemas/VPNGatewayUnreachable" }, { "$ref": "#/components/schemas/NotAllowed" }, { "description": "With Demo Disaster Recovery, you cannot perform a test failover of more than {{testFailoverMaxNumber}} recovery servers at the same time. To perform a test failover of more than {{testFailoverMaxNumber}} recovery servers at the same time, contact your partner and activate the Disaster Recovery service.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "BaseDrTestFailoverLimitReached" ], "type": "string" }, "context": { "type": "object", "required": [ "testFailoverMaxNumber" ], "properties": { "testFailoverMaxNumber": { "type": "integer", "minimum": 0 } } } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionWorkerIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] }, { "$ref": "#/components/schemas/ResourceBusy" }, { "description": "Operation is not allowed for the server because it does not have an active disaster recovery license.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "ServerNotLicensed" ], "type": "string" }, "context": { "type": "object", "required": [ "server_id", "server_type" ], "properties": { "server_id": { "type": "string" }, "server_type": { "type": "string" } } } } } ] }, { "$ref": "#/components/schemas/ServerNotReady" } ] } } } ], "type": "object" }, { "description": "Issue with the unavailability of the stop failover operation for the cloud server.", "allOf": [ { "$ref": "#/components/schemas/item0_2" }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "link": { "description": "Name of the affected link.", "enum": [ "DR_CLOUD_SERVER_STOP_FAILOVER" ], "type": "string" }, "target": { "description": "UUID of the cloud server on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "$ref": "#/components/schemas/SiteNotReady" }, { "$ref": "#/components/schemas/VPNGatewayUnreachable" }, { "$ref": "#/components/schemas/NotAllowed" }, { "$ref": "#/components/schemas/ResourceBusy" }, { "$ref": "#/components/schemas/ServerNotReady" } ] } } } ], "type": "object" } ] } } } } ] }, { "type": "object", "required": [ "site_uuid", "name", "created_at", "uuid", "description", "type", "status", "vm" ], "properties": { "site_uuid": {}, "name": {}, "created_at": {}, "uuid": {}, "description": {}, "type": {}, "status": {}, "vm": {} } } ], "type": "object", "properties": { "created_at": { "description": "Date and time when the cloud server was created.", "type": "string", "format": "date-time" }, "description": { "description": "Description of the cloud server.", "type": "string", "minLength": 0, "maxLength": 4096 }, "name": { "description": "Name of the cloud server.", "type": "string", "minLength": 1, "maxLength": 1024 }, "public_ip": { "description": "Public IP address of the cloud server. Missing if the Public IP address setting of the server is not enabled.", "type": "string", "format": "ipv4" }, "rpo": { "description": "RPO and server status.", "type": "object", "additionalProperties": false, "required": [ "status", "threshold_seconds" ], "properties": { "ratio": { "description": "Time since the last backup (in seconds) divided by the threshold (in seconds). Available only if there is a backup.", "type": "number", "minimum": 0 }, "status": { "description": "OK - compliant; warning - violates the threshold; error - violates the threshold more than 2x times; critical - violates the threshold more than 4x times.", "enum": [ "OK", "WARNING", "ERROR", "CRITICAL" ], "type": "string" }, "threshold_seconds": { "description": "Threshold for RPO status, in seconds.", "type": "integer", "minimum": 0, "exclusiveMinimum": true } } }, "status": { "description": "List of available cloud server statuses.", "enum": [ "CREATING", "DELETING", "FAILING_BACK", "FAILBACK_DATA_TRANSFER", "FAILBACK_SWITCHOVER", "FAILBACK_VALIDATION", "FAILOVER_PROD", "FAILOVER_TEST", "FAILOVER_TEST_AUTO", "FINALIZATION", "FINALIZATION_FAILED", "RESTORING_FROM_BACKUP", "POWERING_OFF", "POWERING_ON", "RECONFIGURING", "STAND_BY", "STARTING_FAILBACK", "STARTING_FAILBACK_DATA_TRANSFER_RESUME", "STARTING_FAILBACK_DATA_TRANSFER_STOP", "STARTING_FAILBACK_SWITCHOVER_BEGIN", "STARTING_FAILBACK_SWITCHOVER_COMPLETE", "STARTING_FAILBACK_COMMIT", "STARTING_FAILBACK_ROLLBACK", "STARTING_FAILOVER_PROD", "STARTING_FAILOVER_TEST", "STARTING_FAILOVER_TEST_AUTO", "STOPPING_FAILOVER", "STOPPING_RESTORE_FROM_BACKUP" ], "type": "string" }, "site_uuid": { "$ref": "#/components/schemas/last_task_uuid" }, "task_uuid": { "$ref": "#/components/schemas/last_task_uuid" }, "vm": { "description": "Properties of the virtual machine.", "type": "object", "required": [ "cpu", "ram_mb", "status" ], "properties": { "cpu": { "description": "Number of vCPU cores that will be allocated to the virtual machine.", "type": "integer" }, "os": { "description": "Information about the OS of the virtual machine. Not available if the status of the virtual machine is 'NOT_READY'.", "type": "string" }, "ram_mb": { "description": "Amount of RAM in mebibytes that will be allocated to the virtual machine.", "type": "integer" }, "status": { "enum": [ "NOT_READY", "STARTED", "STOPPED", "SUSPENDED" ], "type": "string" }, "storage": { "description": "Information about the disks that are configured for the virtual machine. Not available if the status of the virtual machine is 'NOT_READY'.", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "protected", "size_gb" ], "properties": { "id": { "$ref": "#/components/schemas/vault_id" }, "protected": { "description": "True if the disk cannot be removed.", "type": "boolean" }, "size_gb": { "description": "Size of the storage volume in gibibytes.", "type": "integer" } } } } } }, "uuid": { "$ref": "#/components/schemas/last_task_uuid" } } } }, "paging": { "description": "Response properties related to the pagination.", "type": "object", "additionalProperties": false, "required": [ "count", "total" ], "properties": { "count": { "description": "Number of items fetched for the current page.", "type": "integer", "minimum": 0 }, "cursors": { "type": "object", "additionalProperties": false, "properties": { "after": { "description": "Cursor that points to the next page with results, if available.", "type": "string" }, "before": { "description": "Cursor that points to the previous page with results, if available.", "type": "string" } } }, "total": { "description": "Total amount of items to fetch.", "type": "integer", "minimum": 0 } } } } } } } }, "400": { "description": "The request could not be validated against the RAML schema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "401": { "description": "The request was denied because the bearer access token was invalid or missing.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "403": { "description": "The request was denied because the bearer access token did not have the required privileges.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "429": { "description": "The response status code indicates that the service is overloaded and you must wait before the next request.", "headers": { "Retry-After": { "description": "The time (in seconds) that the client must wait before the next request.", "required": true, "schema": { "description": "The time (in seconds) that the client must wait before the next request.", "type": "integer", "minimum": 1, "maximum": 3600 } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "500": { "description": "An internal server error occurred while processing the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "504": { "description": "Gateway time-out.", "content": {} } }, "security": [ { "oauth2": [ "dr_service::admin", "dr::support_operator", "protection::readonly" ] } ] } }, "/servers/{uuid}": { "get": { "operationId": "Fetch cloud server by UUID", "description": "Fetches the details of the cloud server.", "parameters": [ { "name": "uuid", "description": "A unique identifier of the cloud server.", "required": true, "in": "path", "schema": { "description": "A unique identifier of the cloud server.", "example": "6782e594-781d-4ad2-b8ca-25a0c40f9938", "type": "string", "pattern": "^[a-zA-Z0-9-]+$" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "allOf": [ { "oneOf": [ { "type": "object", "required": [ "primary" ], "properties": { "type": { "description": "Type of the cloud server.", "enum": [ "PRIMARY" ], "type": "string" }, "primary": { "description": "Additional parameters of the primary server.", "type": "object", "additionalProperties": false, "required": [ "vault_id" ], "properties": { "vault_id": { "$ref": "#/components/schemas/vault_id_4" } } }, "_links": { "description": "Links and actions related to the primary server.", "type": "array", "minItems": 1, "items": { "oneOf": [ { "$ref": "#/components/schemas/item0_5" }, { "$ref": "#/components/schemas/item1_6" }, { "$ref": "#/components/schemas/item2_7" } ] } }, "_issues": { "description": "Issues related to the primary server.", "type": "array", "minItems": 0, "items": { "description": "Describes a single issue (constraint violation).", "oneOf": [ { "$ref": "#/components/schemas/item0_8" } ] } } } }, { "type": "object", "required": [ "recovery" ], "properties": { "type": { "description": "Type of the cloud server.", "enum": [ "RECOVERY" ], "type": "string" }, "recovery": { "description": "Additional parameters of recovery server.", "type": "object", "additionalProperties": false, "required": [ "automated_test_failover", "resource_id" ], "properties": { "active_failover": { "description": "Details of the failover that is in progress. Missing for servers in the STAND_BY state.", "type": "object", "additionalProperties": false, "required": [ "backup_uri", "id", "vault_id" ], "properties": { "archive_credentials_id": { "description": "ID of the archive credentials of the backup that is used for the failover operation. Required for automated failback. Missing if failover was initiated from a non-encrypted archive.", "type": "string", "minLength": 1 }, "backup_uri": { "description": "Universal URI identifier of the recovery point that is used for the failover operation.", "type": "string", "minLength": 1 }, "id": { "description": "Unique identifier of the failover that is in progress.", "type": "string", "minLength": 1 }, "vault_id": { "$ref": "#/components/schemas/vault_id_4" } } }, "automated_test_failover": { "description": "Details of the automated test failover. All properties except the schedule are omitted if automated test failover is disabled for the server.", "oneOf": [ { "description": "Automated test failover is disabled.", "type": "object", "additionalProperties": false, "required": [ "schedule" ], "properties": { "schedule": { "description": "Schedule of the automated test failover. 'NEVER' means that automated test failover is disabled for the server.", "enum": [ "NEVER" ], "type": "string" } } }, { "description": "Automated test failover was performed at least one time.", "type": "object", "additionalProperties": false, "required": [ "recovery_point", "last_start", "last_status", "last_task_uuid", "next_start", "schedule", "screenshot_link", "screenshot_preview_link", "timeout" ], "properties": { "recovery_point": { "$ref": "#/components/schemas/recovery_point_9" }, "last_start": { "description": "Date and time of the last automated test failover.", "type": "string", "format": "date-time" }, "last_status": { "description": "Result of the last automated test failover.", "enum": [ "SUCCESS", "FAILURE" ], "type": "string" }, "last_task_uuid": { "$ref": "#/components/schemas/last_task_uuid_10" }, "next_start": { "nullable": true, "type": "string", "format": "date-time" }, "schedule": { "description": "Interval at which automated test failover is performed.", "enum": [ "HOURLY", "DAILY", "WEEKLY", "MONTHLY" ], "type": "string" }, "screenshot_link": { "nullable": true, "type": "string", "format": "uri" }, "screenshot_preview_link": { "nullable": true, "type": "string", "format": "uri" }, "timeout": { "description": "Timeout in seconds for the complete operation: performing a test failover, taking a screenshot, and evaluating the result.", "type": "integer", "minimum": 1 } } }, { "description": "Automated test failover is enabled but has not been performed yet.", "type": "object", "additionalProperties": false, "required": [ "recovery_point", "last_start", "last_status", "next_start", "last_task_uuid", "schedule", "screenshot_link", "screenshot_preview_link", "timeout" ], "properties": { "recovery_point": { "nullable": true, "type": "string" }, "last_start": { "nullable": true, "type": "string" }, "last_status": { "nullable": true, "type": "string" }, "next_start": { "nullable": true, "type": "string", "format": "date-time" }, "last_task_uuid": { "nullable": true, "type": "string" }, "schedule": { "description": "Interval at which automated test failover is performed.", "enum": [ "HOURLY", "DAILY", "WEEKLY", "MONTHLY" ], "type": "string" }, "screenshot_link": { "nullable": true, "type": "string" }, "screenshot_preview_link": { "nullable": true, "type": "string" }, "timeout": { "description": "Timeout in seconds for the complete operation: performing a test failover, taking a screenshot, and evaluating the result.", "type": "integer", "minimum": 1 } } } ], "type": "object" }, "ip_mapped": { "description": "Optional mapping of the specified server IP in the production network to make the server accessible during test failover.", "type": "string", "format": "ipv4" }, "resource_id": { "description": "Identifier of the original device that is protected by the recovery server.", "type": "string" }, "test_failover": { "description": "Details of the test failover.", "type": "object", "additionalProperties": false, "required": [ "recovery_point", "last_start", "last_task_uuid" ], "properties": { "recovery_point": { "$ref": "#/components/schemas/recovery_point_9" }, "last_start": { "description": "Date and time of the test failover.", "type": "string", "format": "date-time" }, "last_task_uuid": { "$ref": "#/components/schemas/last_task_uuid_10" } } } } }, "_links": { "description": "Links and actions related to the recovery server.", "type": "array", "minItems": 1, "items": { "anyOf": [ { "$ref": "#/components/schemas/item0_5" }, { "$ref": "#/components/schemas/item1_6" }, { "$ref": "#/components/schemas/item2_7" }, { "description": "Link used in a POST request to initiate a production failover of the cloud server.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link used in a POST request to initiate a production failover of the cloud server.", "enum": [ "DR_CLOUD_SERVER_START_FAILOVER_PROD" ], "type": "string" }, "type": { "description": "Media type of the response to the action.", "type": "string" }, "href": { "description": "URL for the POST request to start production failover for the cloud server.", "type": "string", "format": "uri" } } }, { "description": "Link to the POST request to start test failover for the cloud server.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the POST request to start test failover for the cloud server.", "enum": [ "DR_CLOUD_SERVER_START_FAILOVER_TEST" ], "type": "string" }, "type": { "description": "Media type of the response to the action.", "type": "string" }, "href": { "description": "URL for the POST request to start test failover for the cloud server.", "type": "string", "format": "uri" } } }, { "description": "Link to the POST request to stop failover for the cloud server.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the POST request to stop failover for the cloud server.", "enum": [ "DR_CLOUD_SERVER_STOP_FAILOVER" ], "type": "string" }, "type": { "description": "Media type of the response to the action.", "type": "string" }, "href": { "description": "URL for the POST request to stop failover for the cloud server.", "type": "string", "format": "uri" } } } ] } }, "_issues": { "description": "Issues related to the recovery server.", "type": "array", "minItems": 0, "items": { "description": "Describes a single issue (constraint violation).", "oneOf": [ { "$ref": "#/components/schemas/item0_8" }, { "description": "Issue with the unavailability of the start failover operation for the cloud server.", "allOf": [ { "$ref": "#/components/schemas/item0_11" }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "link": { "description": "Name of the affected link.", "enum": [ "DR_CLOUD_SERVER_START_FAILOVER_PROD", "DR_CLOUD_SERVER_START_FAILOVER_TEST" ], "type": "string" }, "target": { "description": "UUID of the cloud server on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "$ref": "#/components/schemas/SiteNotReady_12" }, { "description": "The \"DR and Direct Backup to Azure\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundAzureDR" ], "type": "string" } } } ] }, { "description": "The \"Disaster recovery storage\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundDrStorage" ], "type": "string" } } } ] }, { "description": "The \"Compute points\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundComputePoints" ], "type": "string" } } } ] }, { "description": "The \"Cloud servers\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundCloudServers" ], "type": "string" } } } ] }, { "description": "There are no available compute points for testing the Disaster Recovery functionality. {{additionalComputePoints}} additional compute points will be added next month. To enable the complete functionality, contact your partner and activate the Disaster Recovery service.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededBaseDR" ], "type": "string" }, "context": { "type": "object", "required": [ "additionalComputePoints" ], "properties": { "additionalComputePoints": { "type": "integer", "minimum": 0 } } } } } ] }, { "description": "You have exceeded the \"Cloud servers\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededCloudServers" ], "type": "string" } } } ] }, { "description": "You have exceeded the \"Compute points\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededComputePoints" ], "type": "string" } } } ] }, { "$ref": "#/components/schemas/VPNGatewayUnreachable_14" }, { "$ref": "#/components/schemas/NotAllowed_15" }, { "description": "With Demo Disaster Recovery, you cannot perform a test failover of more than {{testFailoverMaxNumber}} recovery servers at the same time. To perform a test failover of more than {{testFailoverMaxNumber}} recovery servers at the same time, contact your partner and activate the Disaster Recovery service.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "BaseDrTestFailoverLimitReached" ], "type": "string" }, "context": { "type": "object", "required": [ "testFailoverMaxNumber" ], "properties": { "testFailoverMaxNumber": { "type": "integer", "minimum": 0 } } } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionWorkerIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] }, { "$ref": "#/components/schemas/ResourceBusy_16" }, { "description": "Operation is not allowed for the server because it does not have an active disaster recovery license.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "ServerNotLicensed" ], "type": "string" }, "context": { "type": "object", "required": [ "server_id", "server_type" ], "properties": { "server_id": { "type": "string" }, "server_type": { "type": "string" } } } } } ] }, { "$ref": "#/components/schemas/ServerNotReady_17" } ] } } } ], "type": "object" }, { "description": "Issue with the unavailability of the stop failover operation for the cloud server.", "allOf": [ { "$ref": "#/components/schemas/item0_11" }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "link": { "description": "Name of the affected link.", "enum": [ "DR_CLOUD_SERVER_STOP_FAILOVER" ], "type": "string" }, "target": { "description": "UUID of the cloud server on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "$ref": "#/components/schemas/SiteNotReady_12" }, { "$ref": "#/components/schemas/VPNGatewayUnreachable_14" }, { "$ref": "#/components/schemas/NotAllowed_15" }, { "$ref": "#/components/schemas/ResourceBusy_16" }, { "$ref": "#/components/schemas/ServerNotReady_17" } ] } } } ], "type": "object" } ] } } } } ] }, { "type": "object", "required": [ "vm", "type", "name", "site_uuid", "description", "created_at", "status", "uuid" ], "properties": { "vm": {}, "type": {}, "name": {}, "site_uuid": {}, "description": {}, "created_at": {}, "status": {}, "uuid": {} } } ], "type": "object", "properties": { "created_at": { "description": "Date and time when the cloud server was created.", "type": "string", "format": "date-time" }, "description": { "description": "Description of the cloud server.", "type": "string", "minLength": 0, "maxLength": 4096 }, "name": { "description": "Name of the cloud server.", "type": "string", "minLength": 1, "maxLength": 1024 }, "public_ip": { "description": "Public IP address of the cloud server. Missing if the Public IP address setting of the server is not enabled.", "type": "string", "format": "ipv4" }, "rpo": { "description": "RPO and server status.", "type": "object", "additionalProperties": false, "required": [ "status", "threshold_seconds" ], "properties": { "ratio": { "description": "Time since the last backup (in seconds) divided by the threshold (in seconds). Available only if there is a backup.", "type": "number", "minimum": 0 }, "status": { "description": "OK - compliant; warning - violates the threshold; error - violates the threshold more than 2x times; critical - violates the threshold more than 4x times.", "enum": [ "OK", "WARNING", "ERROR", "CRITICAL" ], "type": "string" }, "threshold_seconds": { "description": "Threshold for RPO status, in seconds.", "type": "integer", "minimum": 0, "exclusiveMinimum": true } } }, "status": { "description": "List of available cloud server statuses.", "enum": [ "CREATING", "DELETING", "FAILING_BACK", "FAILBACK_DATA_TRANSFER", "FAILBACK_SWITCHOVER", "FAILBACK_VALIDATION", "FAILOVER_PROD", "FAILOVER_TEST", "FAILOVER_TEST_AUTO", "FINALIZATION", "FINALIZATION_FAILED", "RESTORING_FROM_BACKUP", "POWERING_OFF", "POWERING_ON", "RECONFIGURING", "STAND_BY", "STARTING_FAILBACK", "STARTING_FAILBACK_DATA_TRANSFER_RESUME", "STARTING_FAILBACK_DATA_TRANSFER_STOP", "STARTING_FAILBACK_SWITCHOVER_BEGIN", "STARTING_FAILBACK_SWITCHOVER_COMPLETE", "STARTING_FAILBACK_COMMIT", "STARTING_FAILBACK_ROLLBACK", "STARTING_FAILOVER_PROD", "STARTING_FAILOVER_TEST", "STARTING_FAILOVER_TEST_AUTO", "STOPPING_FAILOVER", "STOPPING_RESTORE_FROM_BACKUP" ], "type": "string" }, "site_uuid": { "$ref": "#/components/schemas/last_task_uuid_10" }, "task_uuid": { "$ref": "#/components/schemas/last_task_uuid_10" }, "vm": { "description": "Properties of the virtual machine.", "type": "object", "required": [ "cpu", "ram_mb", "status" ], "properties": { "cpu": { "description": "Number of vCPU cores that will be allocated to the virtual machine.", "type": "integer" }, "os": { "description": "Information about the OS of the virtual machine. Not available if the status of the virtual machine is 'NOT_READY'.", "type": "string" }, "ram_mb": { "description": "Amount of RAM in mebibytes that will be allocated to the virtual machine.", "type": "integer" }, "status": { "enum": [ "NOT_READY", "STARTED", "STOPPED", "SUSPENDED" ], "type": "string" }, "storage": { "description": "Information about the disks that are configured for the virtual machine. Not available if the status of the virtual machine is 'NOT_READY'.", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "protected", "size_gb" ], "properties": { "id": { "$ref": "#/components/schemas/vault_id_4" }, "protected": { "description": "True if the disk cannot be removed.", "type": "boolean" }, "size_gb": { "description": "Size of the storage volume in gibibytes.", "type": "integer" } } } } } }, "uuid": { "$ref": "#/components/schemas/last_task_uuid_10" } } } } } }, "400": { "description": "The request could not be validated against the RAML schema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "401": { "description": "The request was denied because the bearer access token was invalid or missing.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "403": { "description": "The request was denied because the bearer access token did not have the required privileges.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "429": { "description": "The response status code indicates that the service is overloaded and you must wait before the next request.", "headers": { "Retry-After": { "description": "The time (in seconds) that the client must wait before the next request.", "required": true, "schema": { "description": "The time (in seconds) that the client must wait before the next request.", "type": "integer", "minimum": 1, "maximum": 3600 } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "500": { "description": "An internal server error occurred while processing the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "504": { "description": "Gateway time-out.", "content": {} } }, "security": [ { "oauth2": [ "dr_service::admin", "dr::support_operator", "protection::readonly" ] } ] } }, "/servers/{uuid}:start_failover_prod": { "post": { "operationId": "Start production failover on cloud server", "description": "Starts a production failover of the cloud server.", "parameters": [ { "name": "uuid", "description": "A unique identifier of the cloud server.", "required": true, "in": "path", "schema": { "description": "A unique identifier of the cloud server.", "example": "6782e594-781d-4ad2-b8ca-25a0c40f9938", "type": "string", "pattern": "^[a-zA-Z0-9-]+$" } } ], "requestBody": { "content": { "application/json": { "schema": { "title": "Start failover payload", "description": "Parameters of the failover operation of the cloud server.", "type": "object", "properties": { "recovery_point": { "description": "Composite identifier of a recovery point.", "type": "object", "additionalProperties": false, "required": [ "archive_id", "backup_id", "vault_id" ], "properties": { "archive_id": { "$ref": "#/components/schemas/backup_id" }, "backup_id": { "$ref": "#/components/schemas/backup_id" }, "vault_id": { "$ref": "#/components/schemas/backup_id" } } } } } } } }, "responses": { "202": { "description": "", "content": { "application/json": { "schema": { "title": "Async action initialization successful response", "example": { "task_uuid": "f1b3b3b4-4b1b-4b1b-4b1b-4b1b4b1b4b1b" }, "type": "object", "additionalProperties": true, "required": [ "task_uuid" ], "properties": { "task_uuid": { "title": "UUID", "description": "Universally unique object identifier.", "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" } } } } } }, "400": { "description": "The request could not be validated against the RAML schema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "401": { "description": "The request was denied because the bearer access token was invalid or missing.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "403": { "description": "The request was denied because the bearer access token did not have the required privileges.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "409": { "description": "The request could not be completed because there was a conflict with the current state of the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "429": { "description": "The response status code indicates that the service is overloaded and you must wait before the next request.", "headers": { "Retry-After": { "description": "The time (in seconds) that the client must wait before the next request.", "required": true, "schema": { "description": "The time (in seconds) that the client must wait before the next request.", "type": "integer", "minimum": 1, "maximum": 3600 } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "500": { "description": "An internal server error occurred while processing the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "504": { "description": "Gateway time-out.", "content": {} } }, "security": [ { "oauth2": [ "dr_service::admin" ] } ] } }, "/servers/{uuid}:start_failover_test": { "post": { "operationId": "Start test failover on cloud server", "description": "Starts a test failover of the cloud server.", "parameters": [ { "name": "uuid", "description": "A unique identifier of the cloud server.", "required": true, "in": "path", "schema": { "description": "A unique identifier of the cloud server.", "example": "6782e594-781d-4ad2-b8ca-25a0c40f9938", "type": "string", "pattern": "^[a-zA-Z0-9-]+$" } } ], "requestBody": { "content": { "application/json": { "schema": { "title": "Start failover payload", "description": "Parameters of the failover operation of the cloud server.", "type": "object", "properties": { "recovery_point": { "description": "Composite identifier of a recovery point.", "type": "object", "additionalProperties": false, "required": [ "archive_id", "backup_id", "vault_id" ], "properties": { "archive_id": { "$ref": "#/components/schemas/backup_id" }, "backup_id": { "$ref": "#/components/schemas/backup_id" }, "vault_id": { "$ref": "#/components/schemas/backup_id" } } } } } } } }, "responses": { "202": { "description": "", "content": { "application/json": { "schema": { "title": "Async action initialization successful response", "example": { "task_uuid": "f1b3b3b4-4b1b-4b1b-4b1b-4b1b4b1b4b1b" }, "type": "object", "additionalProperties": true, "required": [ "task_uuid" ], "properties": { "task_uuid": { "title": "UUID", "description": "Universally unique object identifier.", "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" } } } } } }, "400": { "description": "The request could not be validated against the RAML schema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "401": { "description": "The request was denied because the bearer access token was invalid or missing.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "403": { "description": "The request was denied because the bearer access token did not have the required privileges.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "409": { "description": "The request could not be completed because there was a conflict with the current state of the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "429": { "description": "The response status code indicates that the service is overloaded and you must wait before the next request.", "headers": { "Retry-After": { "description": "The time (in seconds) that the client must wait before the next request.", "required": true, "schema": { "description": "The time (in seconds) that the client must wait before the next request.", "type": "integer", "minimum": 1, "maximum": 3600 } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "500": { "description": "An internal server error occurred while processing the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "504": { "description": "Gateway time-out.", "content": {} } }, "security": [ { "oauth2": [ "dr_service::admin", "dr::support_operator" ] } ] } }, "/servers/{uuid}:stop_failover": { "post": { "operationId": "Stop failover on cloud server", "description": "Stops the failover of the cloud server.", "parameters": [ { "name": "uuid", "description": "A unique identifier of the cloud server.", "required": true, "in": "path", "schema": { "description": "A unique identifier of the cloud server.", "example": "6782e594-781d-4ad2-b8ca-25a0c40f9938", "type": "string", "pattern": "^[a-zA-Z0-9-]+$" } } ], "requestBody": { "content": { "application/json": { "schema": { "title": "Stop failover payload", "description": "Parameters for stopping the failover operation of the cloud server.", "example": {}, "type": "object", "additionalProperties": false } } } }, "responses": { "202": { "description": "", "content": { "application/json": { "schema": { "title": "Async action initialization successful response", "example": { "task_uuid": "f1b3b3b4-4b1b-4b1b-4b1b-4b1b4b1b4b1b" }, "type": "object", "additionalProperties": true, "required": [ "task_uuid" ], "properties": { "task_uuid": { "title": "UUID", "description": "Universally unique object identifier.", "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" } } } } } }, "400": { "description": "The request could not be validated against the RAML schema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "401": { "description": "The request was denied because the bearer access token was invalid or missing.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "403": { "description": "The request was denied because the bearer access token did not have the required privileges.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "409": { "description": "The request could not be completed because there was a conflict with the current state of the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "429": { "description": "The response status code indicates that the service is overloaded and you must wait before the next request.", "headers": { "Retry-After": { "description": "The time (in seconds) that the client must wait before the next request.", "required": true, "schema": { "description": "The time (in seconds) that the client must wait before the next request.", "type": "integer", "minimum": 1, "maximum": 3600 } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "500": { "description": "An internal server error occurred while processing the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "504": { "description": "Gateway time-out.", "content": {} } }, "security": [ { "oauth2": [ "dr_service::admin", "dr::support_operator" ] } ] } }, "/sites": { "get": { "operationId": "Fetch disaster recovery sites", "description": "Fetches the list of disaster recovery sites.", "parameters": [ { "name": "allow_deleted", "description": "Includes resources that are marked as deleted in the request result.", "required": false, "in": "query", "schema": { "description": "Includes resources that are marked as deleted in the request result.", "default": false, "example": true, "type": "boolean" } }, { "name": "limit", "description": "Maximum number of items to fetch per page. Mutually exclusive with the 'before' and 'after' parameters.", "required": false, "in": "query", "schema": { "description": "Maximum number of items to fetch per page. Mutually exclusive with the 'before' and 'after' parameters.", "default": 10, "type": "integer", "minimum": 1, "maximum": 50 } }, { "name": "after", "description": "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.", "required": false, "in": "query", "schema": { "description": "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.", "default": "null", "example": "eyJSJdfQ", "type": "string", "minLength": 1 } }, { "name": "before", "description": "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.", "required": false, "in": "query", "schema": { "description": "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.", "default": "null", "example": "eyJSJdfQ", "type": "string", "minLength": 1 } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "items" ], "properties": { "items": { "description": "List of the disaster recovery sites.", "type": "array", "minItems": 0, "items": { "type": "object", "required": [ "default", "failover_readiness", "status", "tenant_uuid", "uuid" ], "properties": { "default": { "description": "This property determines if the disaster recovery site is set as default. You can have only one default disaster recovery site at a time.", "type": "boolean" }, "deleted_at": { "description": "Deletion date of the disaster recovery site.", "type": "string", "format": "date-time" }, "failover_readiness": { "description": "Failover readiness status of the disaster recovery site. This property can have the following values: OK - ready for failover; WARNING - proceed with caution; or ERROR - not ready for failover.", "enum": [ "ERROR", "OK", "WARNING" ], "type": "string" }, "status": { "description": "The status of the disaster recovery site.", "enum": [ "DEPROVISIONING", "PROVISIONING", "PROVISIONED" ], "type": "string" }, "task_uuid": { "$ref": "#/components/schemas/tenant_uuid" }, "tenant_uuid": { "$ref": "#/components/schemas/tenant_uuid" }, "uuid": { "$ref": "#/components/schemas/tenant_uuid" }, "_links": { "description": "Links and actions related to the disaster recovery site.", "type": "array", "minItems": 1, "items": { "oneOf": [ { "description": "Link to the Connectivity page of the disaster recovery site. The link must be opened in a web browser.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the Connectivity page of the disaster recovery site.", "enum": [ "DR_SITE_CONNECTIVITY_PAGE" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL to access the Connectivity page of the disaster recovery site.", "type": "string", "format": "uri" } } } ] } }, "_issues": { "description": "Issues of the disaster recovery site.", "type": "array", "minItems": 0, "items": { "description": "Describes a single issue (constraint violation).", "oneOf": [ { "oneOf": [ { "description": "Issue that causes the failover readiness to be in the 'WARNING' state.", "allOf": [ { "description": "Describes a single issue (constraint violation).", "type": "object", "required": [ "target", "severity", "error" ], "properties": { "link": { "description": "Name or ID of the link for which the issue is returned.", "type": "string" }, "domain": { "description": "Domain from which the constraint originates.", "enum": [ "Access", "Licensing", "DisasterRecovery" ], "type": "string" }, "target": { "description": "Path to or ID of the sub-resource that is linked to the issue. May be required for composite resources.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "warning", "WARNING", "error", "ERROR" ], "type": "string" }, "error": { "$ref": "#/components/schemas/item0_18" } } }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "target": { "description": "UUID of the disaster recovery site on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "WARNING" ], "type": "string" }, "error": { "oneOf": [ { "description": "No VPN appliance is registered for the DR site with Site-to-Site VPN connectivity.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNS2SApplianceNotRegistered" ], "type": "string" } } } ] }, { "description": "VPN appliance error. This might happen when the last report from the VPN appliance was received too long ago or if the VPN appliance reported an error.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNS2SApplianceUnreachable" ], "type": "string" } } } ] }, { "description": "The VPN tunnel between the VPN gateway and the VPN appliance cannot be established for the DR site with Site-to-Site VPN connectivity.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNS2SConnectionFailure" ], "type": "string" } } } ] }, { "description": "No IPSec tunnels are configured for the DR site with IPSec VPN connectivity.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNIPSecNotConfigured" ], "type": "string" } } } ] }, { "description": "At least one of the IPSec tunnels could not be established.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNIPSecConnectionError" ], "type": "string" } } } ] }, { "description": "You have reached the \"Disaster recovery storage\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaReachedDrStorage" ], "type": "string" } } } ] }, { "description": "You have reached the \"Cloud servers\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaReachedCloudServers" ], "type": "string" } } } ] }, { "description": "You have reached the \"Compute points\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaReachedComputePoints" ], "type": "string" } } } ] } ] } } } ], "type": "object" }, { "description": "Issue that causes the failover readiness to be in the 'ERROR' state.", "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Domain from which the constraint originates.", "enum": [ "DisasterRecovery" ], "type": "string" }, "target": { "description": "UUID of the DR site on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "description": "You cannot perform any operations because the DR site is being deployed or removed.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SiteNotReady" ], "type": "string" } } } ] }, { "description": "The \"DR and Direct Backup to Azure\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundAzureDR" ], "type": "string" } } } ] }, { "description": "The \"Disaster recovery storage\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundDrStorage" ], "type": "string" } } } ] }, { "description": "The \"Compute points\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundComputePoints" ], "type": "string" } } } ] }, { "description": "The \"Cloud servers\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundCloudServers" ], "type": "string" } } } ] }, { "description": "You exceeded the \"DR and Direct Backup to Azure\" quota. As a result, the DR functionality was disabled on some protected servers. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededAzureDR" ], "type": "string" } } } ] }, { "description": "There are no available compute points for testing the Disaster Recovery functionality. {{additionalComputePoints}} additional compute points will be added next month. To enable the complete functionality, contact your partner and activate the Disaster Recovery service.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededBaseDR" ], "type": "string" }, "context": { "type": "object", "required": [ "additionalComputePoints" ], "properties": { "additionalComputePoints": { "type": "integer", "minimum": 0 } } } } } ] }, { "description": "You have exceeded the \"Cloud servers\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededCloudServers" ], "type": "string" } } } ] }, { "description": "You have exceeded the \"Compute points\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededComputePoints" ], "type": "string" } } } ] }, { "description": "VPN gateway error. This might happen when the last report from the VPN gateway was received too long ago or if the VPN gateway reported an error.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNGatewayUnreachable" ], "type": "string" } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_18" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionWorkerIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] } ] } } } ], "type": "object" } ] } } } } }, "paging": { "description": "Response properties related to the pagination.", "type": "object", "additionalProperties": false, "required": [ "count", "total" ], "properties": { "count": { "description": "Number of items fetched for the current page.", "type": "integer", "minimum": 0 }, "cursors": { "type": "object", "additionalProperties": false, "properties": { "after": { "description": "Cursor that points to the next page with results, if available.", "type": "string" }, "before": { "description": "Cursor that points to the previous page with results, if available.", "type": "string" } } }, "total": { "description": "Total amount of items to fetch.", "type": "integer", "minimum": 0 } } } } } } } }, "400": { "description": "The request could not be validated against the RAML schema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "401": { "description": "The request was denied because the bearer access token was invalid or missing.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "403": { "description": "The request was denied because the bearer access token did not have the required privileges.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "429": { "description": "The response status code indicates that the service is overloaded and you must wait before the next request.", "headers": { "Retry-After": { "description": "The time (in seconds) that the client must wait before the next request.", "required": true, "schema": { "description": "The time (in seconds) that the client must wait before the next request.", "type": "integer", "minimum": 1, "maximum": 3600 } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "500": { "description": "An internal server error occurred while processing the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "504": { "description": "Gateway time-out.", "content": {} } }, "security": [ { "oauth2": [ "dr_service::admin", "dr::support_operator", "protection::readonly" ] } ] } }, "/sites/{uuid}": { "get": { "operationId": "Fetch disaster recovery site by UUID", "description": "Fetches the details of the disaster recovery site.", "parameters": [ { "name": "allow_deleted", "description": "Includes resources that are marked as deleted in the request result.", "required": false, "in": "query", "schema": { "description": "Includes resources that are marked as deleted in the request result.", "default": false, "example": true, "type": "boolean" } }, { "name": "uuid", "description": "A unique identifier of the disaster recovery site.", "required": true, "in": "path", "schema": { "description": "A unique identifier of the disaster recovery site.", "example": "6782e594-781d-4ad2-b8ca-25a0c40f9938", "type": "string", "pattern": "^[a-zA-Z0-9-]+$" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "required": [ "default", "failover_readiness", "status", "tenant_uuid", "uuid" ], "properties": { "default": { "description": "This property determines if the disaster recovery site is set as default. You can have only one default disaster recovery site at a time.", "type": "boolean" }, "deleted_at": { "description": "Deletion date of the disaster recovery site.", "type": "string", "format": "date-time" }, "failover_readiness": { "description": "Failover readiness status of the disaster recovery site. This property can have the following values: OK - ready for failover; WARNING - proceed with caution; or ERROR - not ready for failover.", "enum": [ "ERROR", "OK", "WARNING" ], "type": "string" }, "status": { "description": "The status of the disaster recovery site.", "enum": [ "DEPROVISIONING", "PROVISIONING", "PROVISIONED" ], "type": "string" }, "task_uuid": { "$ref": "#/components/schemas/tenant_uuid_19" }, "tenant_uuid": { "$ref": "#/components/schemas/tenant_uuid_19" }, "uuid": { "$ref": "#/components/schemas/tenant_uuid_19" }, "_links": { "description": "Links and actions related to the disaster recovery site.", "type": "array", "minItems": 1, "items": { "oneOf": [ { "description": "Link to the Connectivity page of the disaster recovery site. The link must be opened in a web browser.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the Connectivity page of the disaster recovery site.", "enum": [ "DR_SITE_CONNECTIVITY_PAGE" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL to access the Connectivity page of the disaster recovery site.", "type": "string", "format": "uri" } } } ] } }, "_issues": { "description": "Issues of the disaster recovery site.", "type": "array", "minItems": 0, "items": { "description": "Describes a single issue (constraint violation).", "oneOf": [ { "oneOf": [ { "description": "Issue that causes the failover readiness to be in the 'WARNING' state.", "allOf": [ { "description": "Describes a single issue (constraint violation).", "type": "object", "required": [ "target", "severity", "error" ], "properties": { "link": { "description": "Name or ID of the link for which the issue is returned.", "type": "string" }, "domain": { "description": "Domain from which the constraint originates.", "enum": [ "Access", "Licensing", "DisasterRecovery" ], "type": "string" }, "target": { "description": "Path to or ID of the sub-resource that is linked to the issue. May be required for composite resources.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "warning", "WARNING", "error", "ERROR" ], "type": "string" }, "error": { "$ref": "#/components/schemas/item0_20" } } }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "target": { "description": "UUID of the disaster recovery site on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "WARNING" ], "type": "string" }, "error": { "oneOf": [ { "description": "No VPN appliance is registered for the DR site with Site-to-Site VPN connectivity.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNS2SApplianceNotRegistered" ], "type": "string" } } } ] }, { "description": "VPN appliance error. This might happen when the last report from the VPN appliance was received too long ago or if the VPN appliance reported an error.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNS2SApplianceUnreachable" ], "type": "string" } } } ] }, { "description": "The VPN tunnel between the VPN gateway and the VPN appliance cannot be established for the DR site with Site-to-Site VPN connectivity.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNS2SConnectionFailure" ], "type": "string" } } } ] }, { "description": "No IPSec tunnels are configured for the DR site with IPSec VPN connectivity.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNIPSecNotConfigured" ], "type": "string" } } } ] }, { "description": "At least one of the IPSec tunnels could not be established.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNIPSecConnectionError" ], "type": "string" } } } ] }, { "description": "You have reached the \"Disaster recovery storage\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaReachedDrStorage" ], "type": "string" } } } ] }, { "description": "You have reached the \"Cloud servers\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaReachedCloudServers" ], "type": "string" } } } ] }, { "description": "You have reached the \"Compute points\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaReachedComputePoints" ], "type": "string" } } } ] } ] } } } ], "type": "object" }, { "description": "Issue that causes the failover readiness to be in the 'ERROR' state.", "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Domain from which the constraint originates.", "enum": [ "DisasterRecovery" ], "type": "string" }, "target": { "description": "UUID of the DR site on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "description": "You cannot perform any operations because the DR site is being deployed or removed.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SiteNotReady" ], "type": "string" } } } ] }, { "description": "The \"DR and Direct Backup to Azure\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundAzureDR" ], "type": "string" } } } ] }, { "description": "The \"Disaster recovery storage\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundDrStorage" ], "type": "string" } } } ] }, { "description": "The \"Compute points\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundComputePoints" ], "type": "string" } } } ] }, { "description": "The \"Cloud servers\" quota is not enabled for your tenant. To enable the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SubscriptionNotFoundCloudServers" ], "type": "string" } } } ] }, { "description": "You exceeded the \"DR and Direct Backup to Azure\" quota. As a result, the DR functionality was disabled on some protected servers. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededAzureDR" ], "type": "string" } } } ] }, { "description": "There are no available compute points for testing the Disaster Recovery functionality. {{additionalComputePoints}} additional compute points will be added next month. To enable the complete functionality, contact your partner and activate the Disaster Recovery service.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededBaseDR" ], "type": "string" }, "context": { "type": "object", "required": [ "additionalComputePoints" ], "properties": { "additionalComputePoints": { "type": "integer", "minimum": 0 } } } } } ] }, { "description": "You have exceeded the \"Cloud servers\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededCloudServers" ], "type": "string" } } } ] }, { "description": "You have exceeded the \"Compute points\" quota. To increase the quota, contact the Support team.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "QuotaExceededComputePoints" ], "type": "string" } } } ] }, { "description": "VPN gateway error. This might happen when the last report from the VPN gateway was received too long ago or if the VPN gateway reported an error.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNGatewayUnreachable" ], "type": "string" } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] }, { "description": "The operation cannot be performed due to an issue with the cloud connection agent in public cloud connection '{{connectionName}}'. Please go to Infrastructure > Public clouds, select the corresponding cloud connection, click Renew access, and follow the instructions. If the issue persists, contact support.", "allOf": [ { "$ref": "#/components/schemas/item0_20" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "CloudConnectionWorkerIssue" ], "type": "string" }, "context": { "type": "object", "required": [ "connectionName" ], "properties": { "connectionName": { "type": "string" }, "issueCodes": { "type": "array", "items": { "type": "string" } } } } } } ] } ] } } } ], "type": "object" } ] } } } } } } }, "400": { "description": "The request could not be validated against the RAML schema.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "401": { "description": "The request was denied because the bearer access token was invalid or missing.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "403": { "description": "The request was denied because the bearer access token did not have the required privileges.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "429": { "description": "The response status code indicates that the service is overloaded and you must wait before the next request.", "headers": { "Retry-After": { "description": "The time (in seconds) that the client must wait before the next request.", "required": true, "schema": { "description": "The time (in seconds) that the client must wait before the next request.", "type": "integer", "minimum": 1, "maximum": 3600 } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "500": { "description": "An internal server error occurred while processing the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error_api_response" } } } }, "504": { "description": "Gateway time-out.", "content": {} } }, "security": [ { "oauth2": [ "dr_service::admin", "dr::support_operator", "protection::readonly" ] } ] } } }, "components": { "schemas": { "vault_id": { "title": "ID", "description": "Generic object identifier.", "type": "string", "pattern": "^[a-zA-Z0-9-@]+$" }, "item0": { "description": "Link to the cloud server configuration page. The link must be opened in a web browser.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the cloud server configuration page.", "enum": [ "DR_CLOUD_SERVER_PAGE" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL of the cloud server configuration page.", "type": "string", "format": "uri" } } }, "item1": { "description": "Link to the page with the remote console of the cloud server. The link must be opened in a web browser.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the page with the remote console of the cloud server.", "enum": [ "DR_CLOUD_SERVER_REMOTE_CONSOLE_PAGE" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL of the page with the remote console of the cloud server.", "type": "string", "format": "uri" } } }, "item2": { "description": "Link that fetches the list of recovery points that are available for the cloud server recovery and failover.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link that fetches the list of recovery points that are available for the cloud server recovery and failover.", "enum": [ "DR_CLOUD_SERVER_RECOVERY_POINTS" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL from which the GET request fetches the list of recovery points that are available for the cloud server recovery and failover.", "type": "string", "format": "uri" } } }, "item0_1": { "description": "Issue with the unavailability of the remote VM console of the cloud server.", "allOf": [ { "$ref": "#/components/schemas/item0_2" }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "link": { "description": "Name of the affected link.", "enum": [ "DR_CLOUD_SERVER_REMOTE_CONSOLE_PAGE" ], "type": "string" }, "target": { "description": "UUID of the cloud server on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "$ref": "#/components/schemas/SiteNotReady" }, { "$ref": "#/components/schemas/ServerNotReady" } ] } } } ], "type": "object" }, "recovery_point": { "description": "Composite identifier of a recovery point.", "type": "object", "additionalProperties": false, "required": [ "archive_id", "backup_id", "vault_id" ], "properties": { "archive_id": { "$ref": "#/components/schemas/vault_id" }, "backup_id": { "$ref": "#/components/schemas/vault_id" }, "vault_id": { "$ref": "#/components/schemas/vault_id" } } }, "last_task_uuid": { "title": "UUID", "description": "Universally unique object identifier.", "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" }, "item0_2": { "description": "Describes a single issue (constraint violation).", "type": "object", "required": [ "target", "severity", "error" ], "properties": { "link": { "description": "Name or ID of the link for which the issue is returned.", "type": "string" }, "domain": { "description": "Domain from which the constraint originates.", "enum": [ "Access", "Licensing", "DisasterRecovery" ], "type": "string" }, "target": { "description": "Path to or ID of the sub-resource that is linked to the issue. May be required for composite resources.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "warning", "WARNING", "error", "ERROR" ], "type": "string" }, "error": { "$ref": "#/components/schemas/item0_3" } } }, "SiteNotReady": { "description": "You cannot perform any operations because the DR site is being deployed or removed.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SiteNotReady" ], "type": "string" } } } ] }, "item0_3": {}, "VPNGatewayUnreachable": { "description": "VPN gateway error. This might happen when the last report from the VPN gateway was received too long ago or if the VPN gateway reported an error.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNGatewayUnreachable" ], "type": "string" } } } ] }, "NotAllowed": { "description": "Method specified in REST request is not allowed.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "NotAllowed" ], "type": "string" }, "context": {} } } ] }, "ResourceBusy": { "description": "The resource is busy, another task is currently in progress. Try again later.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "ResourceBusy" ], "type": "string" }, "context": { "type": "object", "required": [ "resource_id", "task_uuids" ], "properties": { "resource_id": { "type": "string" }, "task_uuids": { "type": "array", "items": { "$ref": "#/components/schemas/last_task_uuid" } } } } } } ] }, "ServerNotReady": { "description": "The operation is not applicable to cloud servers in this state.", "allOf": [ { "$ref": "#/components/schemas/item0_3" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "ServerNotReady" ], "type": "string" } } } ] }, "error_api_response": { "type": "object", "required": [ "error" ], "properties": { "error": {} } }, "vault_id_4": { "title": "ID", "description": "Generic object identifier.", "type": "string", "pattern": "^[a-zA-Z0-9-@]+$" }, "item0_5": { "description": "Link to the cloud server configuration page. The link must be opened in a web browser.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the cloud server configuration page.", "enum": [ "DR_CLOUD_SERVER_PAGE" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL of the cloud server configuration page.", "type": "string", "format": "uri" } } }, "item1_6": { "description": "Link to the page with the remote console of the cloud server. The link must be opened in a web browser.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link to the page with the remote console of the cloud server.", "enum": [ "DR_CLOUD_SERVER_REMOTE_CONSOLE_PAGE" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL of the page with the remote console of the cloud server.", "type": "string", "format": "uri" } } }, "item2_7": { "description": "Link that fetches the list of recovery points that are available for the cloud server recovery and failover.", "type": "object", "required": [ "rel", "type", "href" ], "properties": { "rel": { "description": "Identifier of the link that fetches the list of recovery points that are available for the cloud server recovery and failover.", "enum": [ "DR_CLOUD_SERVER_RECOVERY_POINTS" ], "type": "string" }, "type": { "description": "Media type of the linked resource.", "type": "string" }, "href": { "description": "URL from which the GET request fetches the list of recovery points that are available for the cloud server recovery and failover.", "type": "string", "format": "uri" } } }, "item0_8": { "description": "Issue with the unavailability of the remote VM console of the cloud server.", "allOf": [ { "$ref": "#/components/schemas/item0_11" }, { "type": "object", "required": [ "target", "severity", "error" ], "properties": { "domain": { "description": "Disaster Recovery domain.", "enum": [ "DisasterRecovery" ], "type": "string" }, "link": { "description": "Name of the affected link.", "enum": [ "DR_CLOUD_SERVER_REMOTE_CONSOLE_PAGE" ], "type": "string" }, "target": { "description": "UUID of the cloud server on which the issue occurred.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "ERROR" ], "type": "string" }, "error": { "oneOf": [ { "$ref": "#/components/schemas/SiteNotReady_12" }, { "$ref": "#/components/schemas/ServerNotReady_17" } ] } } } ], "type": "object" }, "recovery_point_9": { "description": "Composite identifier of a recovery point.", "type": "object", "additionalProperties": false, "required": [ "archive_id", "backup_id", "vault_id" ], "properties": { "archive_id": { "$ref": "#/components/schemas/vault_id_4" }, "backup_id": { "$ref": "#/components/schemas/vault_id_4" }, "vault_id": { "$ref": "#/components/schemas/vault_id_4" } } }, "last_task_uuid_10": { "title": "UUID", "description": "Universally unique object identifier.", "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" }, "item0_11": { "description": "Describes a single issue (constraint violation).", "type": "object", "required": [ "target", "severity", "error" ], "properties": { "link": { "description": "Name or ID of the link for which the issue is returned.", "type": "string" }, "domain": { "description": "Domain from which the constraint originates.", "enum": [ "Access", "Licensing", "DisasterRecovery" ], "type": "string" }, "target": { "description": "Path to or ID of the sub-resource that is linked to the issue. May be required for composite resources.", "type": "string" }, "severity": { "description": "Severity of the issue.", "enum": [ "warning", "WARNING", "error", "ERROR" ], "type": "string" }, "error": { "$ref": "#/components/schemas/item0_13" } } }, "SiteNotReady_12": { "description": "You cannot perform any operations because the DR site is being deployed or removed.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "SiteNotReady" ], "type": "string" } } } ] }, "item0_13": {}, "VPNGatewayUnreachable_14": { "description": "VPN gateway error. This might happen when the last report from the VPN gateway was received too long ago or if the VPN gateway reported an error.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "VPNGatewayUnreachable" ], "type": "string" } } } ] }, "NotAllowed_15": { "description": "Method specified in REST request is not allowed.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "NotAllowed" ], "type": "string" }, "context": {} } } ] }, "ResourceBusy_16": { "description": "The resource is busy, another task is currently in progress. Try again later.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code", "context" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "ResourceBusy" ], "type": "string" }, "context": { "type": "object", "required": [ "resource_id", "task_uuids" ], "properties": { "resource_id": { "type": "string" }, "task_uuids": { "type": "array", "items": { "$ref": "#/components/schemas/last_task_uuid_10" } } } } } } ] }, "ServerNotReady_17": { "description": "The operation is not applicable to cloud servers in this state.", "allOf": [ { "$ref": "#/components/schemas/item0_13" }, { "type": "object", "required": [ "domain", "code" ], "properties": { "domain": { "enum": [ "DisasterRecovery" ], "type": "string" }, "code": { "enum": [ "ServerNotReady" ], "type": "string" } } } ] }, "backup_id": { "title": "ID", "description": "Generic object identifier.", "type": "string", "pattern": "^[a-zA-Z0-9-@]+$" }, "tenant_uuid": { "title": "UUID", "description": "Universally unique object identifier.", "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" }, "item0_18": {}, "tenant_uuid_19": { "title": "UUID", "description": "Universally unique object identifier.", "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" }, "item0_20": {} }, "securitySchemes": { "oauth2": { "type": "oauth2", "description": "OAuth 2.0 security scheme definition for a user authorization", "flows": { "password": { "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": "" }, "tokenUrl": "https://dev-cloud.acronis.com/api/2/idp/token" }, "clientCredentials": { "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": "" }, "tokenUrl": "https://dev-cloud.acronis.com/api/2/idp/token" }, "authorizationCode": { "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": "" }, "authorizationUrl": "https://dev-cloud.acronis.com/api/2/idp/authorize", "tokenUrl": "https://dev-cloud.acronis.com/api/2/idp/token" } } } } }, "servers": [ { "url": "https://dev-cloud.acronis.com/api/dr/v2", "variables": {} } ] }