Proposed Pull Request Change

title description ms.topic ms.service ms.date ms.assetid author ms.author
Restore Azure VMs using REST API In this article, learn how to manage to restore operations of Azure Virtual Machine Backup using REST API. how-to azure-backup 02/09/2025 b8487516-7ac5-4435-9680-674d9ecf5642 AbhishekMallick-MS v-mallicka
📄 Document Links
GitHub View on GitHub Microsoft Learn View on Microsoft Learn
Raw New Markdown
Generating updated version of doc...
Rendered New Markdown
Generating updated version of doc...
+0 -0
+0 -0
--- title: Restore Azure VMs using REST API description: In this article, learn how to manage to restore operations of Azure Virtual Machine Backup using REST API. ms.topic: how-to ms.service: azure-backup ms.date: 02/09/2025 ms.assetid: b8487516-7ac5-4435-9680-674d9ecf5642 author: AbhishekMallick-MS ms.author: v-mallicka # Customer intent: As a cloud administrator, I want to restore Azure Virtual Machines using REST API, so that I can manage backup recoveries efficiently and minimize downtime in case of data loss or system failures. --- # Restore Azure Virtual machines using REST API This article describes how to restore an Azure VM or disks using the REST API. ## Prerequisites After completing an Azure VM backup with Azure Backup, you can restore entire VMs, disks, or files from the same backup copy. For any restore operation, you have to first identify the relevant recovery point. ## Select Recovery point The available recovery points of a backup item can be listed using the [list recovery point REST API](/rest/api/backup/recovery-points/list). It's a simple *GET* operation with all the relevant values. ```http GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints?api-version=2019-05-13 ``` The `{containerName}` and `{protectedItemName}` are as constructed [here](backup-azure-arm-userestapi-backupazurevms.md#responses-to-get-operation). `{fabricName}` is `Azure`. The *GET* URI has all the required parameters. There's no need for an additional request body. ### Responses |Name |Type |Description | |---------|---------|---------| |200 OK | [RecoveryPointResourceList](/rest/api/backup/recovery-points/list#recoverypointresourcelist) | OK | #### Example response Once the *GET* URI is submitted, a 200 (OK) response is returned. ```http HTTP/1.1 200 OK Pragma: no-cache X-Content-Type-Options: nosniff x-ms-request-id: 03453538-2f8d-46de-8374-143ccdf60f40 x-ms-client-request-id: c48f4436-ce3f-42da-b537-12710d4d1a24; c48f4436-ce3f-42da-b537-12710d4d1a24 Strict-Transport-Security: max-age=31536000; includeSubDomains x-ms-ratelimit-remaining-subscription-reads: 14998 x-ms-correlation-request-id: 03453538-2f8d-46de-8374-143ccdf60f40 x-ms-routing-request-id: SOUTHINDIA:20180604T071851Z:03453538-2f8d-46de-8374-143ccdf60f40 Cache-Control: no-cache Date: Mon, 04 Jun 2018 07:18:51 GMT Server: Microsoft-IIS/8.0 X-Powered-By: ASP.NET { "value": [ { "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/microsoft.recoveryservices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;testRG;testVM/protectedItems/VM;testRG;testVM/recoveryPoints/20982486783671", "name": "20982486783671", "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints", "properties": { "objectType": "IaasVMRecoveryPoint", "recoveryPointType": "AppConsistent", "recoveryPointTime": "2018-06-04T06:06:00.5121087Z", "recoveryPointAdditionalInfo": "", "sourceVMStorageType": "NormalStorage", "isSourceVMEncrypted": false, "isInstantIlrSessionActive": false, "recoveryPointTierDetails": [ { "type": 1, "status": 1 }, { "type": 2, "status": 1 } ], "isManagedVirtualMachine": true, "virtualMachineSize": "Standard_A1_v2", "originalStorageAccountOption": false } }, { "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/microsoft.recoveryservices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;testRG;testVM/protectedItems/VM;testRG;testVM/recoveryPoints/23358112038108", "name": "23358112038108", "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints", "properties": { "objectType": "IaasVMRecoveryPoint", "recoveryPointType": "CrashConsistent", "recoveryPointTime": "2018-06-03T06:20:56.3043878Z", "recoveryPointAdditionalInfo": "", "sourceVMStorageType": "NormalStorage", "isSourceVMEncrypted": false, "isInstantIlrSessionActive": false, "recoveryPointTierDetails": [ { "type": 1, "status": 1 }, { "type": 2, "status": 1 } ], "isManagedVirtualMachine": true, "virtualMachineSize": "Standard_A1_v2", "originalStorageAccountOption": false } }, ...... ``` The recovery point is identified with the `{name}` field in the given response. ## Restore operations After selecting the [relevant restore point](#select-recovery-point), proceed to trigger the restore operation. ***All restore operations on the backup item are performed with the same *POST* API. Only the request body changes with the restore scenarios.*** > [!IMPORTANT] > All details about various restore options and their dependencies are mentioned [here](./backup-azure-arm-restore-vms.md#restore-options). Please review before proceeding to triggering these operations. Triggering restore operations is a *POST* request. Learn more about the ["trigger restore" REST API](/rest/api/backup/restores/trigger). ```http POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/restore?api-version=2019-05-13 ``` The `{containerName}` and `{protectedItemName}` are as constructed [here](backup-azure-arm-userestapi-backupazurevms.md#responses-to-get-operation). `{fabricName}` is "Azure" and the `{recoveryPointId}` is the `{name}` field of the recovery point mentioned [above](#example-response). Once the recovery point is obtained, construct the request body for the relevant restore scenario. The following sections outline the request body for each scenario: - [Restore disks](#restore-disks) - [Replace disks](#replace-disks-in-a-backed-up-virtual-machine) - [Restore as a new virtual machine](#restore-as-another-virtual-machine) ### Restore Response The triggering of any restore operation is an [asynchronous operation](../azure-resource-manager/management/async-operations.md). It means this operation creates another operation that needs to be tracked separately. It returns two responses: 202 (Accepted) when another operation is created, and then 200 (OK) when that operation completes. |Name |Type |Description | |---------|---------|---------| |202 Accepted | | Accepted | #### Example responses Once you submit the *POST* URI for triggering restore disks, the initial response is 202 (Accepted) with a location header or Azure-async-header. ```http HTTP/1.1 202 Accepted Pragma: no-cache Retry-After: 60 Azure-AsyncOperation: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/microsoft.recoveryservices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;testRG;testVM/protectedItems/vm;testRG;testVM/operationsStatus/781a0f18-e250-4d73-b059-5e9ffed4069e?api-version=2019-05-13 X-Content-Type-Options: nosniff x-ms-request-id: 893fe372-8d6c-4c56-b589-45a95eeef95f x-ms-client-request-id: a15ce064-25bd-4ac6-87e5-e3bc6ec65c0b; a15ce064-25bd-4ac6-87e5-e3bc6ec65c0b Strict-Transport-Security: max-age=31536000; includeSubDomains x-ms-ratelimit-remaining-subscription-writes: 1198 x-ms-correlation-request-id: 893fe372-8d6c-4c56-b589-45a95eeef95f x-ms-routing-request-id: SOUTHINDIA:20180604T130003Z:893fe372-8d6c-4c56-b589-45a95eeef95f Cache-Control: no-cache Date: Mon, 04 Jun 2018 13:00:03 GMT Location: https://management.azure.com/subscriptions//subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/microsoft.recoveryservices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;testRG;testVM/protectedItems/vm;testRG;testVM/operationResults/781a0f18-e250-4d73-b059-5e9ffed4069e?api-version=2019-05-13 X-Powered-By: ASP.NET ``` Then track the resulting operation using the location header or Azure-AsyncOperation header with a simple *GET* command. ```http GET https://management.azure.com/subscriptions//subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/microsoft.recoveryservices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;testRG;testVM/protectedItems/vm;testRG;testVM/operationResults/781a0f18-e250-4d73-b059-5e9ffed4069e?api-version=2019-05-13 ``` Once the operation completes, it returns 200 (OK) with the ID of the resulting restore job in the response body. ```http HTTP/1.1 200 OK Pragma: no-cache X-Content-Type-Options: nosniff x-ms-request-id: ea2a8011-eb83-4a4b-9ed2-e694070a966a x-ms-client-request-id: a7f3a144-ed80-41ee-bffe-ae6a90c35a2f; a7f3a144-ed80-41ee-bffe-ae6a90c35a2f Strict-Transport-Security: max-age=31536000; includeSubDomains x-ms-ratelimit-remaining-subscription-reads: 14973 x-ms-correlation-request-id: ea2a8011-eb83-4a4b-9ed2-e694070a966a x-ms-routing-request-id: SOUTHINDIA:20180604T130917Z:ea2a8011-eb83-4a4b-9ed2-e694070a966a Cache-Control: no-cache Date: Mon, 04 Jun 2018 13:09:17 GMT Server: Microsoft-IIS/8.0 X-Powered-By: ASP.NET { "id": "781a0f18-e250-4d73-b059-5e9ffed4069e", "name": "781a0f18-e250-4d73-b059-5e9ffed4069e", "status": "Succeeded", "startTime": "2018-06-04T13:00:03.8068176Z", "endTime": "2018-06-04T13:00:03.8068176Z", "properties": { "objectType": "OperationStatusJobExtendedInfo", "jobId": "3021262a-fb3a-4538-9b37-e3e97a386093" } } ``` Since the restore job is a long running operation, it should be tracked as explained in the [monitor jobs using REST API document](backup-azure-arm-userestapi-managejobs.md#track-the-job). ### Restore disks If there's a need to customize the creation of a VM from the backup data, restore the disks into a chosen storage account and create a VM from those disks according to their requirements. The storage account should be in the same region as the Recovery Services vault and shouldn't be zone redundant. The disks, as well as the configuration of the backed-up VM ("vmconfig.json"), is stored in the given storage account. As explained [here](#restore-operations), the relevant request body for restore disks is provided below. #### Create request body To trigger a disk restore from an Azure VM backup, following are the components of the request body: |Name |Type |Description | |---------|---------|---------| |properties | [IaaSVMRestoreRequest](/rest/api/backup/restores/trigger#iaasvmrestorerequest) | RestoreRequestResourceProperties | For the complete list of definitions of the request body and other details, see the [trigger Restore REST API article](/rest/api/backup/restores/trigger#request-body). ##### Example request The following request body defines properties required to trigger a disk restore: ```json { "properties": { "objectType": "IaasVMRestoreRequest", "recoveryPointId": "20982486783671", "recoveryType": "RestoreDisks", "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Compute/virtualMachines/testVM", "storageAccountId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Storage/storageAccounts/testAccount", "region": "westus", "createNewCloudService": false, "originalStorageAccountOption": false, "encryptionDetails": { "encryptionEnabled": false } } } ``` ### Restore disks selectively If you're [selectively backing up disks](backup-azure-arm-userestapi-backupazurevms.md#excluding-disks-in-azure-vm-backup), then the current backed-up disk list is provided in the [recovery point summary](#select-recovery-point) and [detailed response](/rest/api/backup/recovery-points/get). You can also selectively restore disks and more details are provided [here](selective-disk-backup-restore.md#selective-disk-restore). To selectively restore a disk among the list of backed up disks, find the LUN of the disk from the recovery point response and add the **restoreDiskLunList** property to the [request body above](#example-request) as shown below. ```json { "properties": { "objectType": "IaasVMRestoreRequest", "recoveryPointId": "20982486783671", "recoveryType": "RestoreDisks", "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Compute/virtualMachines/testVM", "storageAccountId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Storage/storageAccounts/testAccount", "region": "westus", "createNewCloudService": false, "originalStorageAccountOption": false, "encryptionDetails": { "encryptionEnabled": false }, "restoreDiskLunList" : [0] } } ``` Once you track the response as explained [here](#responses), and the long running job is complete, the disks and the configuration of the backed up virtual machine ("VMConfig.json") appears in the given storage account. ### Replace disks in a backed-up virtual machine While restore disks creates disks from the recovery point, replace disks replaces the current disks of the backed-up VM with the disks from the recovery point. As explained [here](#restore-operations), the relevant request body for replacing disks is provided below. #### Create request body To trigger a disk replacement from an Azure VM backup, following are the components of the request body. |Name |Type |Description | |---------|---------|---------| |properties | [IaaSVMRestoreRequest](/rest/api/backup/restores/trigger#iaasvmrestorerequest) | RestoreRequestResourceProperties | For the complete list of definitions of the request body and other details, refer to [trigger Restore REST API document](/rest/api/backup/restores/trigger#request-body). #### Example request The following request body defines properties required to trigger a disk restore. ```json { "properties": { "objectType": "IaasVMRestoreRequest", "recoveryPointId": "20982486783671", "recoveryType": "OriginalLocation", "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Compute/virtualMachines/testVM", "storageAccountId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Storage/storageAccounts/testAccount", "region": "westus", "createNewCloudService": false, "originalStorageAccountOption": false, "affinityGroup": "", "diskEncryptionSetId": null, "subnetId": null, "targetDomainNameId": null, "targetResourceGroupId": null, "targetVirtualMachineId": null, "virtualNetworkId": null } } ``` ### Restore as another virtual machine As explained [above](#restore-operations), the following request body defines properties required to trigger a virtual machine restore. ```json { "properties": { "objectType": "IaasVMRestoreRequest", "recoveryPointId": "348916168024334", "recoveryType": "AlternateLocation", "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Compute/virtualMachines/testVM", "targetVirtualMachineId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/targetRG/providers/Microsoft.Compute/virtualmachines/targetVM", "targetResourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/targetRG", "storageAccountId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Storage/storageAccounts/testingAccount", "virtualNetworkId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/targetRG/providers/Microsoft.Network/virtualNetworks/testNet", "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/targetRG/providers/Microsoft.Network/virtualNetworks/testNet/subnets/default", "region": "westus", "createNewCloudService": false, "originalStorageAccountOption": false, "encryptionDetails": { "encryptionEnabled": false } } } ``` The response should be handled in the same way as [explained above for restoring disks](#responses). ## Cross Region Restore If Cross Region Restore (CRR) is enabled on the vault with which you've protected your VMs, the backup data is replicated to the secondary region. You can use the backup data to perform a restore operation. To trigger a restore operation in the secondary region using REST API, follow these steps: ### Select recovery point in secondary region You can list the available recovery points of a backup item in the secondary region using the [list recovery points REST API for CRR](/rest/api/backup/recovery-points-crr/list). It's a simple GET operation with all the relevant values. ```http GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints?api-version=2018-12-20 ``` The `{containerName}` and `{protectedItemName}` are as constructed [here](backup-azure-arm-userestapi-backupazurevms.md#responses-to-get-operation). `{fabricName}` is `Azure`. The *GET* URI has all the required parameters. An additional request body isn't required. >[!NOTE] >For getting recovery points in the secondary region, use API version 2018-12-20 as in the above example. #### Responses |Name |Type |Description | |---------|---------|---------| |200 OK | [RecoveryPointResourceList](/rest/api/backup/recovery-points-crr/list#recoverypointresourcelist) | OK | #### Example response Once the *GET* URI is submitted, a 200 (OK) response is returned. ```http Headers: Pragma : no-cache X-Content-Type-Options : nosniff x-ms-request-id : bfc4a4e6-c585-46e0-8e38-f11a86093701 x-ms-client-request-id : 4344a9c2-70d8-482d-b200-0ca9cc498812,4344a9c2-70d8-482d-b200-0ca9cc498812 Strict-Transport-Security : max-age=31536000; includeSubDomains x-ms-ratelimit-remaining-subscription-resource-requests: 149 x-ms-correlation-request-id : bfc4a4e6-c585-46e0-8e38-f11a86093701 x-ms-routing-request-id : SOUTHINDIA:20210731T112441Z:bfc4a4e6-c585-46e0-8e38-f11a86093701 Cache-Control : no-cache Date : Sat, 31 Jul 2021 11:24:40 GMT Server : Microsoft-IIS/10.0 X-Powered-By : ASP.NET Body: { "value": [ { "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainerv2;testRG1;testVM/protectedItems/VM;iaasvmcontainerv2;testRG1;testVM/recoveryPoints/932895704780058094", "name": "932895704780058094", "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints", "properties": { "objectType": "IaasVMRecoveryPoint", "recoveryPointType": "CrashConsistent", "recoveryPointTime": "2021-07-31T09:24:34.687561Z", "recoveryPointAdditionalInfo": "", "sourceVMStorageType": "PremiumVMOnPartialPremiumStorage", "isSourceVMEncrypted": false, "isInstantIlrSessionActive": false, "recoveryPointTierDetails": [ { "type": 1, "status": 1 } ], "isManagedVirtualMachine": true, "virtualMachineSize": "Standard_D2s_v3", "originalStorageAccountOption": false, "osType": "Windows" } }, { "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainerv2;testRG1;testVM/protectedItems/VM;iaasvmcontainerv2;testRG1;testVM/recoveryPoints/932891484644960954", "name": "932891484644960954", "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints", "properties": { "objectType": "IaasVMRecoveryPoint", "recoveryPointType": "CrashConsistent", "recoveryPointTime": "2021-07-30T09:20:01.8355052Z", "recoveryPointAdditionalInfo": "", "sourceVMStorageType": "PremiumVMOnPartialPremiumStorage", "isSourceVMEncrypted": false, "isInstantIlrSessionActive": false, "recoveryPointTierDetails": [ { "type": 1, "status": 1 }, { "type": 2, "status": 1 } ], "isManagedVirtualMachine": true, "virtualMachineSize": "Standard_D2s_v3", "originalStorageAccountOption": false, "osType": "Windows" } }, ..... ``` The recovery point is identified with the `{name}` field in the above response. ### Get access token To perform cross-region restore, you require an access token to authorize your request to access replicated restore points in the secondary region. To get an access token, follow these steps: #### Step 1: Use the [AAD Properties API](/rest/api/backup/aad-properties/get) to get AAD properties for the secondary region (*westus* in the below example): ```http GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/westus/backupAadProperties?api-version=2018-12-20 ``` ##### Response example The response is returned in the following format: ```json { "properties": { "tenantId": "00000000-0000-0000-0000-000000000000", "audience": "https://RecoveryServices/IaasCoord/aadmgmt/wus", "servicePrincipalObjectId": "00000000-0000-0000-0000-000000000000" } } ``` #### Step 2: Use the Get Access Token API to authorize your request to access replicated restore points in the secondary region: ```http POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/accessToken?api-version=2018-12-20 ``` For the request body, paste the contents of the response returned by the AAD Properties API in the previous step. ```json { "properties": { "tenantId": "00000000-0000-0000-0000-000000000000", "audience": "https://RecoveryServices/IaasCoord/aadmgmt/wus", "servicePrincipalObjectId": "00000000-0000-0000-0000-000000000000" } } ``` ##### Response example The response is returned in the following format: ```json { "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainerv2;testRG1;testVM/protectedItems/VM;iaasvmcontainerv2;testRG1;testVM/recoveryPoints/26083826328862", "name": "932879774590051503", "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints", "properties": { "objectType": "CrrAccessToken", "accessTokenString": "<access-token-string>", "subscriptionId": "00000000-0000-0000-0000-000000000000", "resourceGroupName": "testVaultRG", "resourceName": "testVault", "resourceId": "000000000000000000", "protectionContainerId": 000000, "recoveryPointId": "932879774590051503", "recoveryPointTime": "7/26/2021 3:35:36 PM", "containerName": "iaasvmcontainerv2;testRG1;testVM", "containerType": "IaasVMContainer", "backupManagementType": "AzureIaasVM", "datasourceType": "VM", "datasourceName": "testvm1234", "datasourceId": "000000000000000000", "datasourceContainerName": "iaasvmcontainerv2;testRG1;testVM", "coordinatorServiceStampUri": "https://pod01-coord1.eus.backup.windowsazure.com", "protectionServiceStampId": "00000000-0000-0000-0000-000000000000", "protectionServiceStampUri": "https://pod01-prot1h-int.eus.backup.windowsazure.com", "tokenExtendedInformation": "<IaaSVMRecoveryPointMetadataBase xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" i:type=\"IaaSVMRecoveryPointMetadata_V2015_09\" xmlns=\"http://windowscloudbackup.com/CloudCommon/V2011_09\"><MetadataVersion>V2015_09</MetadataVersion><ContainerType i:nil=\"true\" /><InstantRpGCId>ef4ab5a7-c2c0-4304-af80-af49f48af3d1;AzureBackup_testvm1234_932843259176972511;AzureBackup_20210726_033536;AzureBackupRG_eastus_1</InstantRpGCId><IsBlockBlobEnabled>true</IsBlockBlobEnabled><IsManagedVirtualMachine>true</IsManagedVirtualMachine><OriginalSAOption>false</OriginalSAOption><OsType>Windows</OsType><ReadMetadaFromConfigBlob i:nil=\"true\" /><RecoveryPointConsistencyType>CrashConsistent</RecoveryPointConsistencyType><RpDiskDetails i:nil=\"true\" /><SourceIaaSVMRPKeyAndSecret i:nil=\"true\" /><SourceIaaSVMStorageType>PremiumVMOnPartialPremiumStorage</SourceIaaSVMStorageType><VMSizeDescription>Standard_D2s_v3</VMSizeDescription><Zones xmlns:d2p1=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" i:nil=\"true\" /></IaaSVMRecoveryPointMetadataBase>", "rpTierInformation": { "InstantRP": "Valid", "HardenedRP": "Valid" }, "rpOriginalSAOption": false, "rpIsManagedVirtualMachine": true, "rpVMSizeDescription": "Standard_D2s_v3", "bMSActiveRegion": "EastUS" } } ``` ### Restore disks to the secondary region Use the [Cross-Region Restore Trigger API](/rest/api/backup/cross-region-restore/trigger) to restore an item to the secondary region. ```http POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{azureRegion}/backupCrossRegionRestore?api-version=2018-12-20 ``` The request body should have two parts: 1. ***crossRegionRestoreAccessDetails***: Paste the *properties* block of the response from the Get Access Token API request performed in the previous step to fill this segment of the request body. 1. ***restoreRequest***: To fill the *restoreRequest* segment of the request body, you'll need to pass the recovery point ID obtained earlier, along with the Azure Resource Manager (ARM) ID of the source VM, as well as the details of the storage account in the secondary region to be used as a staging location. To perform disk restore, specify *RestoreDisks* as the recovery type. The following is a sample request body to restore the disks of a VM to the secondary region: ```json { "crossRegionRestoreAccessDetails": { "objectType": "CrrAccessToken", "accessTokenString": "<access-token-string>", "subscriptionId": "00000000-0000-0000-0000-000000000000", "resourceGroupName": "azurefiles", "resourceName": "azurefilesvault", "resourceId": "000000000000000000", "protectionContainerId": 000000, "recoveryPointId": "932879774590051503", "recoveryPointTime": "7/26/2021 3:35:36 PM", "containerName": "iaasvmcontainerv2;testRG1;testVM", "containerType": "IaasVMContainer", "backupManagementType": "AzureIaasVM", "datasourceType": "VM", "datasourceName": "testvm1234", "datasourceId": "000000000000000000", "datasourceContainerName": "iaasvmcontainerv2;testRG1;testVM", "coordinatorServiceStampUri": "https://pod01-coord1.eus.backup.windowsazure.com", "protectionServiceStampId": "00000000-0000-0000-0000-000000000000", "protectionServiceStampUri": "https://pod01-prot1h-int.eus.backup.windowsazure.com", "tokenExtendedInformation": "<IaaSVMRecoveryPointMetadataBase xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" i:type=\"IaaSVMRecoveryPointMetadata_V2015_09\" xmlns=\"http://windowscloudbackup.com/CloudCommon/V2011_09\"><MetadataVersion>V2015_09</MetadataVersion><ContainerType i:nil=\"true\" /><InstantRpGCId>ef4ab5a7-c2c0-4304-af80-af49f48af3d1;AzureBackup_testvm1234_932843259176972511;AzureBackup_20210726_033536;AzureBackupRG_eastus_1</InstantRpGCId><IsBlockBlobEnabled>true</IsBlockBlobEnabled><IsManagedVirtualMachine>true</IsManagedVirtualMachine><OriginalSAOption>false</OriginalSAOption><OsType>Windows</OsType><ReadMetadaFromConfigBlob i:nil=\"true\" /><RecoveryPointConsistencyType>CrashConsistent</RecoveryPointConsistencyType><RpDiskDetails i:nil=\"true\" /><SourceIaaSVMRPKeyAndSecret i:nil=\"true\" /><SourceIaaSVMStorageType>PremiumVMOnPartialPremiumStorage</SourceIaaSVMStorageType><VMSizeDescription>Standard_D2s_v3</VMSizeDescription><Zones xmlns:d2p1=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" i:nil=\"true\" /></IaaSVMRecoveryPointMetadataBase>", "rpTierInformation": { "InstantRP": "Valid", "HardenedRP": "Valid" }, "rpOriginalSAOption": false, "rpIsManagedVirtualMachine": true, "rpVMSizeDescription": "Standard_D2s_v3", "bMSActiveRegion": "EastUS" }, "restoreRequest": { "affinityGroup": "", "createNewCloudService": false, "encryptionDetails": { "encryptionEnabled": false }, "objectType": "IaasVMRestoreRequest", "recoveryPointId": "932879774590051503", "recoveryType": "RestoreDisks", "sourceResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG1/providers/Microsoft.Compute/virtualMachines/testVM", "targetResourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG1", "storageAccountId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG1/providers/Microsoft.Storage/storageAccounts/testStorageAccount", "region": "westus", "affinityGroup": "", "createNewCloudService": false, "originalStorageAccountOption": false, "restoreDiskLunList": [] } } ``` Similar to the primary region restore operation, this is an asynchronous operation and needs to be [tracked separately](#restore-response). ## Next steps For more information on the Azure Backup REST APIs, see the following documents: - [Azure Recovery Services provider REST API](/rest/api/recoveryservices/) - [Get started with Azure REST API](/rest/api/azure/)
Success! Branch created successfully. Create Pull Request on GitHub
Error: