Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;

namespace Microsoft.RecoveryServices;
/**
* The resource storage details.
*/
@singleton("vaultstorageconfig")
model BackupResourceConfigResource
is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation<BackupResourceConfig> {
...ResourceNameParameter<
Resource = BackupResourceConfigResource,
KeyName = "backupstorageconfig",
SegmentName = "backupstorageconfig",
NamePattern = ""
>;

/**
* Optional ETag.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility"
eTag?: string;
}

@armResourceOperations
interface BackupResourceConfigResources {
/**
* Fetches resource storage config.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("BackupResourceStorageConfigs_Get")
get is ArmResourceRead<BackupResourceConfigResource>;

/**
* Updates vault storage model type.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
#suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility"
@operationId("BackupResourceStorageConfigs_Update")
update is ArmResourceCreateOrReplaceSync<
BackupResourceConfigResource,
Response = ArmResourceUpdatedResponse<BackupResourceConfigResource>
>;

/**
* Updates vault storage model type.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("BackupResourceStorageConfigs_patch")
@patch(#{ implicitOptionality: false })
patch is ArmCustomPatchSync<
BackupResourceConfigResource,
PatchModel = BackupResourceConfigResource,
Response = ArmNoContentResponse
>;
}

@@doc(BackupResourceConfigResource.name, "");
@@doc(
BackupResourceConfigResource.properties,
"BackupResourceConfigResource properties"
);
@@doc(
BackupResourceConfigResources.update::parameters.resource,
"Vault storage config request"
);
@@doc(
BackupResourceConfigResources.patch::parameters.properties,
"Vault storage config request"
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;

namespace Microsoft.RecoveryServices;
/**
* Base class for backup copies. Workload-specific backup copies are derived from this class.
*/
model RecoveryPointResource
is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation<RecoveryPoint> {
...ResourceNameParameter<
Resource = RecoveryPointResource,
KeyName = "recoveryPointId",
SegmentName = "recoveryPoints",
NamePattern = ""
>;

/**
* Optional ETag.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility"
eTag?: string;
}

@armResourceOperations
interface RecoveryPointResources {
/**
* Provides the information of the backed up data identified using RecoveryPointID.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("RecoveryPointsCrr_Get")
get is ArmResourceRead<RecoveryPointResource>;

/**
* Lists the backup copies for the backed up item.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("RecoveryPointsCrr_List")
list is ArmResourceListByParent<
RecoveryPointResource,
Parameters = {
/**
* OData filter options.
*/
@query("$filter")
$filter?: string;
},
Response = ArmResponse<RecoveryPointResourceList>
>;

/**
* Returns the Access token for communication between BMS and Protection service
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("RecoveryPoints_GetAccessToken")
@action("accessToken")
getAccessToken is ArmResourceActionSync<
RecoveryPointResource,
AADPropertiesResource,
ArmResponse<CrrAccessTokenResource>
>;
}

@@doc(
RecoveryPointResource.name,
"RecoveryPointID represents the backed up data to be fetched."
);
@@doc(RecoveryPointResource.properties, "RecoveryPointResource properties");
@@doc(
RecoveryPointResources.getAccessToken::parameters.body,
"Get Access Token request"
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import "@azure-tools/typespec-client-generator-core";

using Azure.ClientGenerator.Core;
using Microsoft.RecoveryServices;

@@clientLocation(
BackupResourceConfigResources.get,
"BackupResourceStorageConfigs"
);
@@clientLocation(
BackupResourceConfigResources.update,
"BackupResourceStorageConfigs"
);
@@clientName(
BackupResourceConfigResources.update::parameters.resource,
"parameters"
);
@@clientLocation(
BackupResourceConfigResources.patch,
"BackupResourceStorageConfigs"
);
@@clientName(BackupResourceConfigResources.patch, "patch");
@@clientName(
BackupResourceConfigResources.patch::parameters.properties,
"parameters"
);

@@clientLocation(RecoveryPointResources.get, "RecoveryPointsCrr");
@@clientLocation(RecoveryPointResources.list, "RecoveryPointsCrr");
@@clientLocation(RecoveryPointResources.getAccessToken, "RecoveryPoints");
@@clientName(
RecoveryPointResources.getAccessToken::parameters.body,
"parameters"
);

@@clientLocation(
BackupUsageSummariesCRROperationGroup.list,
"BackupUsageSummariesCRR"
);

@@clientLocation(AadPropertiesOperationGroup.get, "AadProperties");

@@clientLocation(
CrossRegionRestoreOperationGroup.trigger,
"CrossRegionRestore"
);

@@clientLocation(BackupCrrJobDetailsOperationGroup.get, "BackupCrrJobDetails");

@@clientLocation(BackupCrrJobsOperationGroup.list, "BackupCrrJobs");

@@clientLocation(CrrOperationResultsOperationGroup.get, "CrrOperationResults");

@@clientLocation(CrrOperationStatusOperationGroup.get, "CrrOperationStatus");

@@clientLocation(
BackupProtectedItemsCrrOperationGroup.list,
"BackupProtectedItemsCrr"
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{

Check failure on line 1 in specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupAadProperties_Get.json

View check run for this annotation

Azure Pipelines / Swagger PrettierCheck

specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupAadProperties_Get.json#L1

specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupAadProperties_Get.json(1,1): error : Code style issues found, please run prettier. > npm install > npx prettier --write specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupAadProperties_Get.json
"parameters": {
"api-version": "2026-07-15",
"azureRegion": "southeastasia",
"subscriptionId": "00000000-0000-0000-0000-000000000000"
},
"responses": {
"200": {
"body": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000",
"properties": {
"audience": "https://RecoveryServices/IaasCoord/aadmgmt/ecy",
"servicePrincipalObjectId": "07e0a67b-cba3-4fcf-a58c-b670d5ced06d",
"tenantId": "33e01921-4d64-4f8c-a055-5bdaffd5e33d"
}
}
}
},
"operationId": "AadProperties_Get",
"title": "Get AAD Properties for authentication in the third region"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{

Check failure on line 1 in specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupProtectedItems_List.json

View check run for this annotation

Azure Pipelines / Swagger PrettierCheck

specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupProtectedItems_List.json#L1

specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupProtectedItems_List.json(1,1): error : Code style issues found, please run prettier. > npm install > npx prettier --write specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/BackupProtectedItems_List.json
"parameters": {
"$filter": "backupManagementType eq 'AzureIaasVM' and itemType eq 'VM'",
"api-version": "2026-07-15",
"resourceGroupName": "SwaggerTestRg",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"vaultName": "NetSDKTestRsVault"
},
"responses": {
"200": {
"body": {
"value": [
{
"name": "VM;iaasvmcontainer;iaasvm-rg;iaasvm-1",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
"id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SwaggerTestRg/providers/Microsoft.RecoveryServices/vaults/NetSDKTestRsVault/protectionContainers/IaasVMContainer;iaasvmcontainer;iaasvm-rg;iaasvm-1/protectedItems/VM;iaasvmcontainer;iaasvm-rg;iaasvm-1",
"properties": {
"backupManagementType": "AzureIaasVM",
"containerName": "iaasvmcontainer;iaasvm-rg;iaasvm-1",
"lastRecoveryPoint": "2017-11-22T12:25:32.048723Z",
"policyId": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SwaggerTestRg/providers/Microsoft.RecoveryServices/vaults/NetSDKTestRsVault/backupPolicies/testPolicy1",
"protectedItemType": "Microsoft.ClassicCompute/virtualMachines",
"sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/providers/Microsoft.ClassicCompute/virtualMachines/iaasvm-1",
"workloadType": "VM"
}
}
]
}
}
},
"operationId": "BackupProtectedItemsCrr_List",
"title": "List protected items with backupManagementType filter as AzureIaasVm"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{

Check failure on line 1 in specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/GetAccessToken_Get.json

View check run for this annotation

Azure Pipelines / Swagger PrettierCheck

specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/GetAccessToken_Get.json#L1

specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/GetAccessToken_Get.json(1,1): error : Code style issues found, please run prettier. > npm install > npx prettier --write specification/recoveryservicesbackupcrr/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackupCrr/examples/2026-07-15/AzureIaasVm/GetAccessToken_Get.json
"parameters": {
"api-version": "2026-07-15",
"containerName": "IaasVMContainer;iaasvmcontainerv2;rshhtestmdvmrg;rshmdvmsmall",
"fabricName": "Azure",
"parameters": {
"properties": {
"audience": "https://RecoveryServices/IaasCoord/aadmgmt/ase",
"servicePrincipalObjectId": "5ecd8123-cf74-4037-83e9-9246b227b351",
"tenantId": "33e01921-4d64-4f8c-a055-5bdaffd5e33d"
}
},
"protectedItemName": "VM;iaasvmcontainerv2;rshhtestmdvmrg;rshmdvmsmall",
"recoveryPointId": "26083826328862",
"resourceGroupName": "rshhtestmdvmrg",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"vaultName": "rshvault"
},
"responses": {
"200": {
"body": {
"name": "26083826328862",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rshhtestmdvmrg/providers/Microsoft.RecoveryServices/vaults/rshvault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainerv2;rshhtestmdvmrg;rshmdvmsmall/protectedItems/VM;iaasvmcontainerv2;rshhtestmdvmrg;rshmdvmsmall/recoveryPoints/26083826328862",
"properties": {
"accessTokenString": "**********",
"backupManagementType": "AzureIaasVM",
"containerName": "iaasvmcontainerv2;anubhtest;anubh-ext-2",
"containerType": "IaasVMContainer",
"coordinatorServiceStampUri": "https://sea-bvtd2-coord1-t56tl.ext.trafficmanager.net",
"datasourceContainerName": "iaasvmcontainerv2;anubhtest;anubh-ext-2",
"datasourceId": "2252345172496828211",
"datasourceName": "anubh-ext-2",
"datasourceType": "VM",
"objectType": "WorkloadCrrAccessToken",
"protectionServiceStampId": "253c2223-fefd-483d-912f-55fb46ce0eab",
"protectionServiceStampUri": "https://sea-bvtd2-prot1-t56tl.ext.trafficmanager.net",
"recoveryPointId": "2252884060104889907",
"recoveryPointTime": "10/3/2019 1:35:19 AM",
"resourceGroupName": "gaallaReportingV2",
"resourceId": "3639249524302882971",
"resourceName": "garbvtd2",
"subscriptionId": "04cf684a-d41f-4550-9f70-7708a3a2283b",
"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>1a2311d9-66f5-47d3-a9fb-7a37da63934b;BackUpOperationJobId;e1ebcf24-81a5-434e-b64b-cc81be65ae16</InstantRpGCId><IsBlockBlobEnabled>false</IsBlockBlobEnabled><IsManagedVirtualMachine>false</IsManagedVirtualMachine><OriginalSAOption>true</OriginalSAOption><OsType>Windows</OsType><ReadMetadaFromConfigBlob i:nil=\"true\" /><RecoveryPointConsistencyType>CrashConsistent</RecoveryPointConsistencyType><RpDiskDetails i:nil=\"true\" /><SourceIaaSVMRPKeyAndSecret i:nil=\"true\" /><SourceIaaSVMStorageType>NormalStorage</SourceIaaSVMStorageType><VMSizeDescription>Standard_D2s_v3</VMSizeDescription></IaaSVMRecoveryPointMetadataBase>"
}
}
},
"400": {}
},
"operationId": "RecoveryPoints_GetAccessToken",
"title": "Get Access Token for Crr"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"parameters": {
"api-version": "2026-07-15",
"azureRegion": "southeastasia",
"parameters": {
"jobName": "02585cc9-d7f4-4b46-860c-14c048cce178",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRg/providers/Microsoft.Compute/VirtualMachines/testVm"
},
"subscriptionId": "00000000-0000-0000-0000-000000000000"
},
"responses": {
"200": {
"body": {
"name": "02585cc9-d7f4-4b46-860c-14c048cce178",
"type": "Microsoft.RecoveryServices/vaults/backupJobs",
"id": "/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/providers/microsoft.recoveryservices/locations/eastus2euap/backupJobs/02585cc9-d7f4-4b46-860c-14c048cce178",
"properties": {
"activityId": "6e503ee3-1093-4a83-a62a-3b666cc8c028-2019-10-12T10:22:43Z-Ibz",
"backupManagementType": "AzureIaasVM",
"entityFriendlyName": "sriniccylinux",
"extendedInfo": {
"propertyBag": {},
"tasksList": []
},
"jobType": "AzureIaaSVMJob",
"operation": "CrossRegionRestore",
"startTime": "2019-10-12T10:22:43.9139656Z",
"status": "InProgress",
"virtualMachineVersion": "Compute"
}
}
}
},
"operationId": "BackupCrrJobDetails_Get",
"title": "Get Cross Region Restore Job Details in the secondary region"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"parameters": {
"operationId": "00000000-0000-0000-0000-000000000000",
"api-version": "2026-07-15",
"azureRegion": "southeastasia",
"parameters": {
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRg/providers/Microsoft.Compute/VirtualMachines/testVm"
},
"subscriptionId": "00000000-0000-0000-0000-000000000000"
},
"responses": {
"200": {},
"202": {
"headers": {
"Azure-AsyncOperation": "azure-asyncoperation: https://centraluseuap.management.azure.com/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/providers/microsoft.recoveryservices/locations/eastus2euap/backupCrrOperationsStatus/MTMzMDgzNzkwNjQxODEzODE2MDtkMTY3MzM3Yy0yM2I1LTQ5ODgtODkwZC0xY2MyMmQ5MTYyZjA=?api-version=2026-07-15",
"Location": "location: https://centraluseuap.management.azure.com/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/providers/microsoft.recoveryservices/locations/eastus2euap/backupCrrOperationResults/MTMzMDgzNzkwNjQxODEzODE2MDtkMTY3MzM3Yy0yM2I1LTQ5ODgtODkwZC0xY2MyMmQ5MTYyZjA=?api-version=2026-07-15",
"Retry-After": 60
}
}
},
"operationId": "CrrOperationResults_Get",
"title": "Get Operation Results for Cross Region Restore"
}
Loading
Loading