Add Cross-Tenant Restore (CTR) feature - API version 2026-03-31-preview#41694
Add Cross-Tenant Restore (CTR) feature - API version 2026-03-31-preview#41694zubairabid wants to merge 55 commits intoAzure:mainfrom
Conversation
Next Steps to MergeNext steps that must be taken to merge this PR:
Comment generated by summarize-checks workflow run. |
- Add v2026_03_01_preview version enum to main.tsp - Add readme.md tag block for package-preview-2026-03-01-preview - Update api-version in all example files from 2026-01-01-preview to 2026-03-01-preview - Regenerate swagger with updated version string
- Fix route backupCrossTenantVaultMappingsStatus -> backupCrossTenantVaultMappingStatus - Fix type fields in examples: backupCrossTenantVaultMappingss -> backupCrossTenantVaultMappings
…ourceIdentifier for sourceVaultId
…gState in CTR models Replace inline 'Succeeded | Failed | Canceled' union with the built-in Azure.ResourceManager.ResourceProvisioningState type in CrossTenantVaultMapping and VaultCredentialCertificateProperties models. This removes 6 suppress directives that were only needed to work around lint rules for the inline union pattern.
…BeReadOnly lint ResourceProvisioningState generates a \ with sibling readOnly in the swagger, but per JSON Schema spec sibling properties next to \ are ignored. The ProvisioningStateMustBeReadOnly lint rule follows this strictly and reports violations. Revert to the inline union pattern with suppress directives which keeps readOnly directly on the property.
07b0eb0 to
dcc7b83
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new ARM API version (2026-03-31-preview) for RecoveryServicesBackup to support Cross-Tenant Restore (CTR) and updates the spec packaging and examples accordingly.
Changes:
- Introduces a new
package-preview-2026-03-31-previewtag pointing to the newbms.jsoninput. - Adds the
2026-03-31-previewAPI version to the TypeSpecVersionsenum and imports CTR-related resources. - Adds numerous
2026-03-31-previewexample payloads/flows (including cross-tenant vault mapping operations and related LRO polling examples).
Reviewed changes
Copilot reviewed 260 out of 261 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/readme.md | Adds the new preview tag input and additional validator suppressions for the new API version. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/main.tsp | Registers the new preview API version and imports the CTR vault mapping resource definitions. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TriggerRecoveryPointMove_Post.json | Adds an LRO example for moving a recovery point across tiers. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TieringCost/GetTieringCostOperationStatus.json | Adds an example for polling tiering cost operation status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TieringCost/GetTieringCostOperationResult.json | Adds an example for fetching tiering cost operation result. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TieringCost/FetchTieringCostForVault.json | Adds an example for tiering cost savings query at vault scope (sync/async). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TieringCost/FetchTieringCostForRehydrate.json | Adds an example for rehydration cost query (sync/async). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TieringCost/FetchTieringCostForProtectedItem.json | Adds an example for tiering cost savings at protected item scope (sync/async). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TieringCost/FetchTieringCostForPolicy.json | Adds an example for tiering cost savings at policy scope (sync/async). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/ResourceGuardProxyCRUD/UnlockDeleteResourceGuardProxy.json | Adds an example for unlocking delete on a resource guard proxy. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/ResourceGuardProxyCRUD/ListResourceGuardProxy.json | Adds an example for listing resource guard proxies. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/ResourceGuardProxyCRUD/GetResourceGuardProxy.json | Adds an example for getting a resource guard proxy. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/ResourceGuardProxyCRUD/DeleteResourceGuardProxy.json | Adds an example for deleting a resource guard proxy. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/PrivateEndpointConnection/GetPrivateEndpointConnectionOperationStatus.json | Adds an example for private endpoint connection LRO status polling. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/PrivateEndpointConnection/GetPrivateEndpointConnection.json | Adds an example for getting a private endpoint connection resource. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/PrivateEndpointConnection/DeletePrivateEndpointConnection.json | Adds an example for deleting a private endpoint connection (sync/async responses). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Dpm/BackupEngines_Get.json | Adds an example for retrieving DPM/Backup Engine details. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/ValidateOperation.json | Adds an example for validating a cross-tenant restore operation. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/RemoveCrossTenantVaultMapping.json | Adds an example for removing a cross-tenant vault mapping (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/ListCrossTenantVaultMappings.json | Adds an example for listing cross-tenant vault mappings. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/ListCrossTenantProtectedItems.json | Adds an example for listing protected items via a cross-tenant mapping. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/ListCrossTenantJobs.json | Adds an example for listing jobs via a cross-tenant mapping. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GetVaultCredentialOperationStatus.json | Adds an example for polling vault credential generation status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GetValidateOperationStatus.json | Adds an example for polling cross-tenant validate operation status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GetValidateOperationResult.json | Adds an example for fetching cross-tenant validate operation results (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GetProtectedItemFromCrossTenantVault.json | Adds an example for getting a protected item via cross-tenant mapping. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GetCrossTenantVaultMapping.json | Adds an example for getting a specific cross-tenant vault mapping. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GetCrossTenantOperationStatus.json | Adds an example for polling operation status for cross-tenant protected item operations. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GetCrossTenantOperationResult.json | Adds an example for fetching operation result for cross-tenant protected item operations. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/GenerateCrossTenantVaultCredential.json | Adds an example for generating cross-tenant vault credentials (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/CheckVaultMappingStatus.json | Adds an example for checking cross-tenant vault mapping status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/TriggerExportJobs.json | Adds an example for exporting jobs (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/TriggerCancelJob.json | Adds an example for cancelling a job (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/TriggerBackup_Post.json | Adds an example to trigger a backup (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/RefreshContainers_OperationResults.json | Adds an example for container refresh operation results (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/RefreshContainers.json | Adds an example to trigger container refresh (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/ProtectedItem_Delete_OperationStatus.json | Adds an example for delete protected item operation status polling. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/ProtectedItem_Delete_OperationResult.json | Adds an example for delete protected item operation result fetching. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/ProtectedItem_Delete.json | Adds an example for deleting a protected item (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/ListJobsWithAllSupportedFilters.json | Adds an example for listing jobs with OData filters. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/GetJobDetails.json | Adds an example for retrieving job details. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/CancelJobOperationResult.json | Adds an example for cancel job operation results. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupStorageConfig_Put.json | Adds an example for updating backup storage config (PUT). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupStorageConfig_Patch.json | Adds an example for updating backup storage config (PATCH). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupStorageConfig_Get.json | Adds an example for getting backup storage config. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupSecurityPin_Get.json | Adds an example for getting a vault security PIN. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupResourceVaultConfigs_Put.json | Adds an example for updating vault security config (PUT). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupResourceVaultConfigs_Patch.json | Adds an example for updating vault security config (PATCH). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupResourceVaultConfigs_Get.json | Adds an example for getting vault security config. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/Common/BackupProtectionContainers_UsageSummary_Get.json | Adds an example for usage summary of protection containers. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/BackupResourceEncryptionConfig_Put.json | Adds an example for updating vault encryption configuration. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/BackupResourceEncryptionConfig_Get.json | Adds an example for retrieving vault encryption configuration. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/BackupDataMove/TriggerDataMove_Post.json | Adds an example for triggering data move (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/BackupDataMove/PrepareDataMove_Post.json | Adds an example for preparing data move (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/BackupDataMove/PrepareDataMoveOperationResult_Get.json | Adds an example for fetching prepare data move results. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/BackupDataMove/BackupDataMoveOperationStatus_Get.json | Adds an example for polling data move operation status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureWorkload/ProtectionContainers_Unregister.json | Adds an example for unregistering an Azure Workload protection container (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureWorkload/BackupProtectionIntent_List.json | Adds an example for listing protection intents. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureWorkload/BackupProtectionIntent_Get.json | Adds an example for getting a protection intent. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureWorkload/BackupProtectionIntent_Delete.json | Adds an example for deleting a protection intent. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureStorage/SoftDeletedContainers_List.json | Adds an example for listing soft-deleted containers. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureStorage/ProtectionContainers_List.json | Adds an example for listing storage protection containers. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureStorage/ProtectionContainers_Inquire.json | Adds an example for inquiring storage protection containers (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ValidateOperationStatus.json | Adds an example for validate operation status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ValidateOperationResults.json | Adds an example for validate operation results (sync/async). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/Revoke_Ilr.json | Adds an example for revoking ILR (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ProtectionPolicyOperationStatuses_Get.json | Adds an example for protection policy operation status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ProtectionPolicyOperationResults_Get.json | Adds an example for protection policy operation results. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ProtectionPolicies_Get.json | Adds an example for getting a protection policy. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ProtectionPolicies_Delete.json | Adds an example for deleting a protection policy (LRO). |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ProtectionIntent_Validate.json | Adds an example for validating protection intent creation. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ProtectionIntent_CreateOrUpdate.json | Adds an example for creating/updating protection intent. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/ProtectedItemOperationStatus.json | Adds an example for protected item operation status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/GetBackupStatus.json | Adds an example for querying VM backup status. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/BackupProtectableItems_List.json | Adds an example for listing protectable items. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/BackupFeature_Validate.json | Adds an example for validating VM backup feature support. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TriggerRecoveryPointMove_Post.json | Adds mirrored 2026-03-31-preview example content under the top-level examples folder. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TieringCost/GetTieringCostOperationStatus.json | Adds mirrored tiering cost operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TieringCost/GetTieringCostOperationResult.json | Adds mirrored tiering cost operation result example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TieringCost/FetchTieringCostForVault.json | Adds mirrored tiering cost vault example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TieringCost/FetchTieringCostForRehydrate.json | Adds mirrored tiering cost rehydrate example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TieringCost/FetchTieringCostForProtectedItem.json | Adds mirrored tiering cost protected item example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TieringCost/FetchTieringCostForPolicy.json | Adds mirrored tiering cost policy example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/ResourceGuardProxyCRUD/UnlockDeleteResourceGuardProxy.json | Adds mirrored resource guard proxy unlock-delete example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/ResourceGuardProxyCRUD/ListResourceGuardProxy.json | Adds mirrored resource guard proxy list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/ResourceGuardProxyCRUD/GetResourceGuardProxy.json | Adds mirrored resource guard proxy get example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/ResourceGuardProxyCRUD/DeleteResourceGuardProxy.json | Adds mirrored resource guard proxy delete example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/PrivateEndpointConnection/GetPrivateEndpointConnectionOperationStatus.json | Adds mirrored private endpoint connection operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/PrivateEndpointConnection/GetPrivateEndpointConnection.json | Adds mirrored private endpoint connection get example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/PrivateEndpointConnection/DeletePrivateEndpointConnection.json | Adds mirrored private endpoint connection delete example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Dpm/BackupEngines_Get.json | Adds mirrored DPM backup engine get example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/ValidateOperation.json | Adds mirrored cross-tenant validate example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/RemoveCrossTenantVaultMapping.json | Adds mirrored cross-tenant mapping removal example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/ListCrossTenantVaultMappings.json | Adds mirrored cross-tenant mappings list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/ListCrossTenantProtectedItems.json | Adds mirrored cross-tenant protected items list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/ListCrossTenantJobs.json | Adds mirrored cross-tenant jobs list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetVaultCredentialOperationStatus.json | Adds mirrored vault credential operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetValidateOperationStatus.json | Adds mirrored validate operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetValidateOperationResult.json | Adds mirrored validate operation result example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetProtectedItemFromCrossTenantVault.json | Adds mirrored cross-tenant protected item get example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetCrossTenantVaultMapping.json | Adds mirrored cross-tenant vault mapping get example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetCrossTenantRecoveryPoints.json | Adds example for listing recovery points via cross-tenant mapping. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetCrossTenantOperationStatus.json | Adds mirrored cross-tenant operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GetCrossTenantOperationResult.json | Adds mirrored cross-tenant operation result example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/GenerateCrossTenantVaultCredential.json | Adds mirrored cross-tenant vault credential generation example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/CrossTenantVaultMappingOperations/CheckVaultMappingStatus.json | Adds mirrored vault mapping status check example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/TriggerExportJobs.json | Adds mirrored export jobs example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/TriggerCancelJob.json | Adds mirrored cancel job example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/TriggerBackup_Post.json | Adds mirrored trigger backup example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/RefreshContainers_OperationResults.json | Adds mirrored refresh containers operation results example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/RefreshContainers.json | Adds mirrored refresh containers trigger example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/ProtectedItem_Delete_OperationStatus.json | Adds mirrored protected item delete operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/ProtectedItem_Delete_OperationResult.json | Adds mirrored protected item delete operation result example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/ProtectedItem_Delete.json | Adds mirrored protected item delete example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/ListJobsWithAllSupportedFilters.json | Adds mirrored list jobs with filters example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/GetJobDetails.json | Adds mirrored job details example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/CancelJobOperationResult.json | Adds mirrored cancel job operation result example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupStorageConfig_Put.json | Adds mirrored backup storage config PUT example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupStorageConfig_Patch.json | Adds mirrored backup storage config PATCH example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupStorageConfig_Get.json | Adds mirrored backup storage config GET example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupSecurityPin_Get.json | Adds mirrored security PIN GET example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupResourceVaultConfigs_Put.json | Adds mirrored vault config PUT example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupResourceVaultConfigs_Patch.json | Adds mirrored vault config PATCH example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupResourceVaultConfigs_Get.json | Adds mirrored vault config GET example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupProtectionContainers_UsageSummary_Get.json | Adds mirrored protection containers usage summary example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/Common/BackupProtectedItem_UsageSummary_Get.json | Adds mirrored protected items usage summary example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/BackupResourceEncryptionConfig_Put.json | Adds mirrored encryption config PUT example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/BackupResourceEncryptionConfig_Get.json | Adds mirrored encryption config GET example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/BackupDataMove/TriggerDataMove_Post.json | Adds mirrored trigger data move example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/BackupDataMove/PrepareDataMove_Post.json | Adds mirrored prepare data move example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/BackupDataMove/PrepareDataMoveOperationResult_Get.json | Adds mirrored prepare data move result example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/BackupDataMove/BackupDataMoveOperationStatus_Get.json | Adds mirrored data move operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureWorkload/ProtectionContainers_Unregister.json | Adds mirrored workload protection container unregister example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureWorkload/BackupProtectionIntent_List.json | Adds mirrored workload protection intent list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureWorkload/BackupProtectionIntent_Get.json | Adds mirrored workload protection intent get example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureWorkload/BackupProtectionIntent_Delete.json | Adds mirrored workload protection intent delete example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureStorage/SoftDeletedContainers_List.json | Adds mirrored storage soft-deleted containers list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureStorage/ProtectionContainers_List.json | Adds mirrored storage protection containers list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureStorage/ProtectionContainers_Inquire.json | Adds mirrored storage protection containers inquire example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ValidateOperationStatus.json | Adds mirrored IaaS VM validate operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ValidateOperationResults.json | Adds mirrored IaaS VM validate operation results example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/Revoke_Ilr.json | Adds mirrored IaaS VM revoke ILR example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ProtectionPolicyOperationStatuses_Get.json | Adds mirrored policy operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ProtectionPolicyOperationResults_Get.json | Adds mirrored policy operation results example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ProtectionPolicies_Get.json | Adds mirrored protection policy get example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ProtectionPolicies_Delete.json | Adds mirrored protection policy delete example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ProtectionIntent_Validate.json | Adds mirrored protection intent validate example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ProtectionIntent_CreateOrUpdate.json | Adds mirrored protection intent create/update example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/ProtectedItemOperationStatus.json | Adds mirrored protected item operation status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/GetBackupStatus.json | Adds mirrored backup status example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/BackupProtectableItems_List.json | Adds mirrored protectable items list example. |
| specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/AzureIaasVm/BackupFeature_Validate.json | Adds mirrored feature validate example. |
Comments suppressed due to low confidence (7)
specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/PrivateEndpointConnection/DeletePrivateEndpointConnection.json:1
- The
Azure-AsyncOperationURL is truncated (?api-versi), which makes the example invalid and breaks LRO polling guidance. Update the header value to include a completeapi-version=...query string.
specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TieringCost/GetTieringCostOperationStatus.json:1 - This TieringCost operation status example includes
privateEndpointConnectionName, which appears unrelated to tiering cost and likely indicates a copy/paste mistake. Replace it with the correct parameter (or remove it) to match the actual operation signature for TieringCost operation status.
specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/PrivateEndpointConnection/GetPrivateEndpointConnection.json:1 - The resource ID uses provider namespace
Microsoft.RecoveryServicesBVTD2, which is inconsistent with the spec namespace (Microsoft.RecoveryServices) and likely invalid for ARM resource IDs in examples. Update the provider segment to match the RP used by the API (Microsoft.RecoveryServices).
specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/BackupResourceEncryptionConfig_Put.json:1 infrastructureEncryptionStateis set to the string value\"true\", which is unlikely to conform to the schema (commonly an enum likeEnabled/Disabledor a boolean). Update the example to use the correct type/value expected by the API schema to avoid example validation failures and client confusion.
specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/AzureIaasVm/BackupProtectableItems_List.json:1- This
virtualMachineIdis not a valid ARM resource ID because theresourceGroups/{name}segment is incomplete (it ends atresourceGroups/). Update it to a well-formed resource ID, e.g.,/subscriptions/.../resourceGroups/<rg>/providers/....
specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/preview/2026-03-31-preview/examples/TriggerRecoveryPointMove_Post.json:1 - The LRO polling URLs in
Azure-AsyncOperationandLocationuse an olderapi-version(2020-09-01) while the request uses2026-03-31-preview. Unless the polling endpoints explicitly require an older version, update these URLs to useapi-version=2026-03-31-previewfor consistency and to reflect how clients should poll for this API version.
specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/RecoveryServicesBackup/examples/2026-03-31-preview/TriggerRecoveryPointMove_Post.json:1 - This example appears duplicated under both
preview/2026-03-31-preview/examples/...andexamples/2026-03-31-preview/...with the same content. If both locations are not required by tooling, consider keeping a single canonical copy to prevent drift; otherwise, ensure the duplication is generated from one source of truth.
Phase 6 - empirical fixes: 1. ResourceNameRestriction (3): VirtualResource.tsp NamePattern '' -> '.*' so vaultName param emits 'pattern: .*' across all api-versions. 2. PostResponseCodes (1): CrossTenantVaultMappingResource.remove now uses ArmResourceActionNoResponseContentAsync (202-only) instead of ArmResourceActionAsync with void body (which emitted 200+202). Example file updated to drop empty 200 response. 3. ProvisioningStateMustBeReadOnly (3): Both CrossTenantVaultMapping.provisioningState and VaultCredentialCertificateProperties.provisioningState now use an inline anonymous string-literal union instead of a named/library type, so emission is direct enum (no \) and 'readOnly: true' survives Spectral resolution. Suppresses 3 TSP-side warnings (no-unnamed-union, arm-resource-provisioning-state false-positive, no-closed-literal-union) with documented justifications. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
VirtualResource.tsp NamePattern '.*' was propagating to ALL api-versions (stable 2025-02-01, 2025-08-01, 2026-01-01 and preview 2026-01-31-preview), tripping openapi-diff rule 1036 ConstraintChanged on every vault path because main has no pattern. Reverted NamePattern to '' (the original state) so stable versions are byte- for-byte identical to main again. Updated 3 existing readme.md ResourceNameRestriction suppressions to point at the actual 3 violating paths (backupCrossTenantVaultMappingStatus, backupTriggerValidateOperation, backupValidateOperation). The previous where-clauses targeted /backupCrossTenantVaultMappings paths which the rule never flagged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…e RNR suppression to file-scope Phase 5 lint-fix: drive LintDiff 'must fix' new-errors to zero on PR Azure#41694. Per CI run 25071630321 job-summary, 4 net-new errors at HEAD: - 3x ResourceNameRestriction (vaultName) at bms.json L505/554/1676 - 1x PostResponseCodes at bms.json L1677 (removeCrossTenantVaultMapping POST) Fix 1 - ResourceNameRestriction: The 3 narrow path-scoped suppressions only silenced 3 of ~74 paths where RNR fires. Top-50 trim explains why different commits surface different 3-path subsets. Replaced with one file-scoped suppression matching the azure-rest-api-specs idiom (per automation, azurearcdata, etc.). Fix 2 - PostResponseCodes: ArmResourceActionNoResponseContentAsync (modern, non-deprecated) emits 202-only with location-header polling. Spectral PostResponseCodes rule lags TypeSpec evolution and still expects legacy 202+204. Switched to deprecated ArmResourceActionNoContentAsync template which emits the expected 202+204+default shape. Added #suppress directives for both the 'deprecated' marker and the TSP-side arm-post-operation-response-codes warning. Updated example to include 204 response. No breaking-change risk - path is new in 2026-03-31-preview. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
@markcowl @mentat9 - addressed feedback. I've restructured the TSP to avoid adding the 30-odd suppressions we were having to make earlier.
New suppressions added in this round (3 total):
|
Review Summary - April 28, 2026CI Status: ✅ All checks passing (no blocking errors) Unresolved Feedback from Previous Reviews@markcowl raised an important architectural concern across multiple comments (starting April 8): The PR currently uses custom x-ms-examples files and manual operation decorators rather than ARM standard operation templates. Key feedback points not yet addressed:
Question for author: Recent commits today (April 28) addressed linting errors. Can you clarify:
Why this matters: Using standard patterns ensures SDK clients understand operations correctly. Recent Progress ✅
Next step: Please respond with your plan to address the standard template feedback. |
| */ | ||
| @added(Versions.v2026_03_31_preview) | ||
| @parentResource(VaultResource) | ||
| model CrossTenantVaultMappingResource |
There was a problem hiding this comment.
rename this CrossTenantVaultMapping and the KeyName will not be necessary
| Resource = CrossTenantVaultMappingResource, | ||
| KeyName = "crossTenantVaultMappingName", | ||
| SegmentName = "backupCrossTenantVaultMappings", | ||
| NamePattern = ".*" |
There was a problem hiding this comment.
The requirement is about providing actual restrictions on the resource name (length, character set, any restrictions on furst character, etc.)
There was a problem hiding this comment.
Added the correct kind of restriction
| // CRUD operations on CrossTenantVaultMappingResource | ||
| // ============================================================ | ||
|
|
||
| #suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" "CTR resource uses remove action instead of standard DELETE" |
There was a problem hiding this comment.
This will likely require ARM review
| /** | ||
| * Lists the protected items from the source vault in a different tenant. | ||
| */ | ||
| @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupCrossTenantVaultMappings/{crossTenantVaultMappingName}/backupProtectedItems") |
There was a problem hiding this comment.
It looks like the main issue is that you have the same resource being accessed through different paths. Here you should use LegacyOperations, as shown in this sample: https://github.com/Azure/typespec-azure/blob/main/packages/samples/specs/resource-manager/legacy/legacy-operations/main.tsp
This will allow you to reuse parameter sets more easily, you will be able to use operation templates, and there will be no reason to use static routes
There was a problem hiding this comment.
Made this change. It exposes one bug in the .NET SDK emitter, details provided in #41694 (comment).
…apping; split properties type Mark's review feedback: rename the resource model so the explicit KeyName decorator is no longer needed (default derivation produces 'crossTenantVaultMappingName' from the model name). Resolves the name collision by also renaming the previous properties type: - model CrossTenantVaultMapping (properties) -> CrossTenantVaultMappingProperties - model CrossTenantVaultMappingResource (resource) -> CrossTenantVaultMapping - KeyName = `crossTenantVaultMappingName` line removed (auto-derived). Resource is @added(v2026_03_31_preview) - preview-only with no published prior, so this is a schema-name-only rename in unreleased swagger. No URL / verb / operationId / wire-JSON / api-version changes. BMS DTOs are independently named in BMS source and unaffected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…RNR suppression rationale
Mark's review feedback: replace `NamePattern = `.*`` on the CrossTenantVaultMapping resource model with the actual ARM rule:
^[A-Za-z][A-Za-z0-9]{1,99}$ (2-100 chars, alphanumeric, no leading digit)
This flows through to the 4 model-derived crossTenantVaultMappingName path parameters in bms.json. The file-scoped ResourceNameRestriction suppression remains in readme.md because (a) vaultName is shared with stable api-versions and adding a pattern there would breaking-change-propagate, and (b) inline `@pattern(`.*`)` declarations on the static-routes pass-through interfaces will be removed in the planned LegacyOperations refactor (Phase 7c). Suppression reason text rewritten to make this scope explicit.
Also fixes a stale `CrossTenantVaultMappingResource` reference in the readme.md NestedResourcesMustHaveListOperation suppression (renamed in Phase 7a).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nantVault Replace allowStaticRoutes-based interface with LegacyOperations alias. - Pack vault+mapping path params into ParentParameters arg 1 - Use ProtectedItemResource as ResourceTypeParameter for child segment - Preserve operationId 'BackupProtectedItemsFromCrossTenantVault_List' via ResourceName template arg - Add inline @pattern on crossTenantVaultMappingName to keep 7b validation Validated: 101/101 operationId triples preserved, zero functional diff. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…yPoints Confirms LegacyOperations pattern works for arbitrary depth (5 levels: vault -> mapping -> fabric -> container -> protectedItem -> recoveryPoints). Validated: 101/101 operationId triples preserved, zero functional diff. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… to LegacyOperations Addresses markcowl review feedback on PR Azure#41694: replaces 14 allowStaticRoutes interfaces in CrossTenantVaultMappingResource.tsp with thin consuming interfaces backed by shared LegacyOperations Ops aliases. Introduces 4 reusable parent-parameter models (CrossTenantVaultMappingParentParameters, CrossTenantContainerParentParameters, CrossTenantProtectedItemParentParameters, CrossTenantVaultCredentialParentParameters) so each Ops alias declares only the leaf segment + key. Eliminates ~50 inline @path/@pattern duplications across the file. No functional changes: - 101 -> 101 operationIds, zero VERB+path+operationId diff vs HEAD~1 - crossTenantVaultMappingName real pattern (Phase 7b) preserved on every emitted route - Response types preserved exactly (LRO 202, ArmAcceptedLroResponse, ArmNoContentResponse) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…LegacyOperations ActionAsync template (fixes ModelValidation REQUIRED_PARAMETER_EXAMPLE_NOT_FOUND)
… previous fix only edited the emitted output, but TSP source is the input that gets copied during compile)
- Remove 2x lro-location-header per-line suppressions in CrossTenantVaultMappingResource.tsp (lines 513, 704). Compile clean with --warn-as-error after removal. - Remove AllTrackedResourcesMustHaveDelete from readme.md (templated Read<> ops via LegacyOperations no longer trip the rule on cross-tenant pass-through paths). - Update ResourceNameRestriction reason to reflect post-7c reality (drop the ''.*'' inline-pattern source (2); refactor is now done. Suppression now only covers vaultName-inherited-from-VaultResource backcompat constraint).
LintDiff blocked the removal: ProtectedItemResource''s standard path has DELETE, but the cross-tenant pass-through mirror exposes the same resource read-only. The lint rule sees the resource model (not paths) and cannot scope by route, so the suppression is required. Updated reason to clarify the cross-tenant context. Other Phase 7d removals (2 lro-location-header per-line in TSP, ResourceNameRestriction reason rewrite) remain in place — LintDiff confirmed they introduced no new violations.
Locally reproduced .NET SDK Validation crash: ArmProviderSchema.Deserialize threw KeyNotFoundException because the CTR mapping canonical path was referenced as parentResourceId by 5 cross-tenant child resources but was itself absent from the @armProviderSchema resource list. Inspection of tspCodeModel.json showed the mgmt emitter only registers a resource when it has a Read operation; CTR mapping had only createOrUpdate + list + remove (no GET-by-name). Adding 'get is ArmResourceRead<CrossTenantVaultMapping>' registers the mapping as a top-level resource (27 entries in armProviderSchema, 0 missing parents). ARM convention also expects GET on a named resource. Pending service-side GET handler from BMS. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The TSP-level example file had operationId 'CrossTenantVaultMapping_Get' (singular) which did not match the swagger-emitted operationId 'CrossTenantVaultMappings_Get' (plural). This caused the autorest example pickup to skip linking it, which in turn caused ModelValidation to fail with XMS_EXAMPLE_NOTFOUND_ERROR on the new GET-by-name operation added in Phase 7e. Fixed by: - Correcting operationId in TSP-level example - Adding provisioningState to align with model - Re-emitting bms.json so x-ms-examples is wired and the example file is copied into preview/2026-03-31-preview/examples/CrossTenantVaultMappingOperations/. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
ARM (Control Plane) API Specification Update Pull Request
Tip
Overwhelmed by all this guidance? See the
Getting helpsection at the bottom of this PR description.PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.
Purpose of this PR
What's the purpose of this PR? Check the specific option that applies. This is mandatory!
Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.
Additional information
Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the
Generated ApiViewcomment added to this PR. You can use ApiView to show API versions diff.Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
suppressions guide to get approval.
Getting help
Purpose of this PRandDue diligence checklist.write accessper aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositoriesNext Steps to Mergecomment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.and https://aka.ms/ci-fix.
queuedstate, please add a comment with contents/azp run.This should result in a new comment denoting a
PR validation pipelinehas started and the checks should be updated after few minutes.