# RecoveryServices.Backup > see https://aka.ms/autorest This is the AutoRest configuration file for RecoveryServicesBackup. --- ## Getting Started To build the SDK for RecoveryServicesBackup, simply [Install AutoRest](https://aka.ms/autorest/install) and in this folder, run: > `autorest` To see additional help and options, run: > `autorest --help` --- ## Configuration ### Basic Information These are the global settings for the RecoveryServicesBackup API. ```yaml title: Recovery Services Backup Client description: Open API 2.0 Specs for Azure RecoveryServices Backup service openapi-type: arm tag: package-2026-01-01 csharp-sdks-folder: ./Generated/CSharp python-sdks-folder: ./Generated/Python go-sdk-folder: ./Generated/Golang license-header: MICROSOFT_MIT ``` ```yaml $(package-passivestamp) tag: package-passivestamp-2023-01-15 ``` ```yaml $(package-activestamp) tag: package-2026-01-01 ``` ### Validations Run validations when `--validate` is specified on command line ```yaml $(validate) azure-validator: true model-validator: true semantic-validator: true message-format: json ``` ### Tag: package-preview-2026-03-31-preview These settings apply only when `--tag=package-preview-2026-03-31-preview` is specified on the command line. ```yaml $(tag) == 'package-preview-2026-03-31-preview' input-file: - preview/2026-03-31-preview/bms.json ``` ### Tag: package-preview-2026-01-31-preview These settings apply only when `--tag=package-preview-2026-01-31-preview` is specified on the command line. ```yaml $(tag) == 'package-preview-2026-01-31-preview' input-file: - preview/2026-01-31-preview/bms.json ``` ### Tag: package-2026-01-01 These settings apply only when `--tag=package-2026-01-01` is specified on the command line. ```yaml $(tag) == 'package-2026-01-01' input-file: - stable/2026-01-01/bms.json ``` ### Tag: package-2025-08-01 These settings apply only when `--tag=package-2025-08-01` is specified on the command line. ```yaml $(tag) == 'package-2025-08-01' input-file: - stable/2025-08-01/bms.json ``` ### Tag: package-preview-2025-02-28-preview These settings apply only when `--tag=package-preview-2025-02-28-preview` is specified on the command line. ```yaml $(tag) == 'package-preview-2025-02-28-preview' input-file: - preview/2025-02-28-preview/bms.json ``` ### Tag: package-2025-02-01 These settings apply only when `--tag=package-2025-02-01` is specified on the command line. ```yaml $(tag) == 'package-2025-02-01' input-file: - stable/2025-02-01/bms.json ``` ### Tag: package-2025-01-01 These settings apply only when `--tag=package-2025-01-01` is specified on the command line. ```yaml $(tag) == 'package-2025-01-01' input-file: - stable/2025-01-01/bms.json ``` ### Tag: package-preview-2024-11 These settings apply only when `--tag=package-preview-2024-11` is specified on the command line. ```yaml $(tag) == 'package-preview-2024-11' input-file: - preview/2024-11-01-preview/bms.json ``` ### Tag: package-2024-10 These settings apply only when `--tag=package-2024-10` is specified on the command line. ```yaml $(tag) == 'package-2024-10' input-file: - stable/2024-10-01/bms.json ``` ### Tag: package-preview-2024-07 These settings apply only when `--tag=package-preview-2024-07` is specified on the command line. ```yaml $(tag) == 'package-preview-2024-07' input-file: - preview/2024-07-30-preview/bms.json ``` ### Tag: package-preview-2024-04 These settings apply only when `--tag=package-preview-2024-04` is specified on the command line. ```yaml $(tag) == 'package-preview-2024-04' input-file: - preview/2024-04-30-preview/bms.json ``` ### Tag: package-2024-04 These settings apply only when `--tag=package-2024-04` is specified on the command line. ```yaml $(tag) == 'package-2024-04' input-file: - stable/2024-04-01/bms.json ``` ### Tag: package-2024-02 These settings apply only when `--tag=package-2024-02` is specified on the command line. ```yaml $(tag) == 'package-2024-02' input-file: - stable/2024-02-01/bms.json ``` ### Tag: package-2024-01 These settings apply only when `--tag=package-2024-01` is specified on the command line. ```yaml $(tag) == 'package-2024-01' input-file: - stable/2024-01-01/bms.json ``` ### Tag: package-2023-08 These settings apply only when `--tag=package-2023-08` is specified on the command line. ```yaml $(tag) == 'package-2023-08' input-file: - stable/2023-08-01/bms.json ``` ### Tag: package-2023-06 These settings apply only when `--tag=package-2023-06` is specified on the command line. ```yaml $(tag) == 'package-2023-06' input-file: - stable/2023-06-01/bms.json ``` ### Tag: package-2023-04 These settings apply only when `--tag=package-2023-04` is specified on the command line. ```yaml $(tag) == 'package-2023-04' input-file: - stable/2023-04-01/bms.json ``` ### Tag: package-2023-02 These settings apply only when `--tag=package-2023-02` is specified on the command line. ```yaml $(tag) == 'package-2023-02' input-file: - stable/2023-02-01/bms.json ``` ### Tag: package-passivestamp-2023-01-15 These settings apply only when `--tag=package-passivestamp-2023-01-15` is specified on the command line. ```yaml $(tag) == 'package-passivestamp-2023-01-15' input-file: - stable/2023-01-15/bms.json ``` ### Tag: package-2023-01 These settings apply only when `--tag=package-2023-01` is specified on the command line. ```yaml $(tag) == 'package-2023-01' input-file: - stable/2023-01-01/bms.json ``` ### Tag: package-2022-10 These settings apply only when `--tag=package-2022-10` is specified on the command line. ```yaml $(tag) == 'package-2022-10' input-file: - stable/2022-10-01/bms.json ``` ### Tag: package-preview-2022-09 These settings apply only when `--tag=package-preview-2022-09` is specified on the command line. ```yaml $(tag) == 'package-preview-2022-09' input-file: - preview/2022-09-30-preview/bms.json ``` ### Tag: package-2022-09-preview These settings apply only when `--tag=package-2022-09-preview` is specified on the command line. ```yaml $(tag) == 'package-2022-09-preview' input-file: - preview/2022-09-01-preview/bms.json ``` ### Tag: package-2022-06-01-preview These settings apply only when `--tag=package-2022-06-01-preview` is specified on the command line. ```yaml $(tag) == 'package-2022-06-01-preview' input-file: - preview/2022-06-01-preview/bms.json ``` ### Tag: package-2022-04 These settings apply only when `--tag=package-2022-04` is specified on the command line. ```yaml $(tag) == 'package-2022-04' input-file: - stable/2022-04-01/bms.json ``` ### Tag: package-2022-03 These settings apply only when `--tag=package-2022-03` is specified on the command line. ```yaml $(tag) == 'package-2022-03' input-file: - stable/2022-03-01/bms.json ``` ### Tag: package-2022-02 These settings apply only when `--tag=package-2022-02` is specified on the command line. ```yaml $(tag) == 'package-2022-02' input-file: - stable/2022-02-01/bms.json ``` ### Tag: package-2022-01 These settings apply only when `--tag=package-2022-01` is specified on the command line. ```yaml $(tag) == 'package-2022-01' input-file: - stable/2022-01-01/bms.json ``` ### Tag: package-2021-12 These settings apply only when `--tag=package-2021-12` is specified on the command line. ```yaml $(tag) == 'package-2021-12' input-file: - stable/2021-12-01/bms.json ``` ### Tag: package-passivestamp-2021-11-15 These settings apply only when `--tag=package-passivestamp-2021-11-15` is specified on the command line. ```yaml $(tag) == 'package-passivestamp-2021-11-15' input-file: - stable/2021-11-15/bms.json ``` ### Tag: package-passivestamp-2018-12-20 These settings apply only when `--tag=package-passivestamp-2018-12-20` is specified on the command line. ```yaml $(tag) == 'package-passivestamp-2018-12-20' input-file: - stable/2018-12-20/bms.json ``` ### Tag: package-2021-10 These settings apply only when `--tag=package-2021-10` is specified on the command line. ```yaml $(tag) == 'package-2021-10' input-file: - stable/2021-10-01/bms.json ``` ### Tag: package-2021-08 These settings apply only when `--tag=package-2021-08` is specified on the command line. ```yaml $(tag) == 'package-2021-08' input-file: - stable/2021-08-01/bms.json ``` ### Tag: package-2021-07 These settings apply only when `--tag=package-2021-07` is specified on the command line. ```yaml $(tag) == 'package-2021-07' input-file: - stable/2021-07-01/bms.json ``` ### Tag: package-2021-06 These settings apply only when `--tag=package-2021-06` is specified on the command line. ```yaml $(tag) == 'package-2021-06' input-file: - stable/2021-06-01/bms.json ``` ### Tag: package-2021-04 These settings apply only when `--tag=package-2021-04` is specified on the command line. ```yaml $(tag) == 'package-2021-04' input-file: - stable/2021-04-01/bms.json ``` ### Tag: package-2021-03 These settings apply only when `--tag=package-2021-03` is specified on the command line. ```yaml $(tag) == 'package-2021-03' input-file: - stable/2021-03-01/bms.json ``` ### Tag: package-2021-02-10 These settings apply only when `--tag=package-2021-02-10` is specified on the command line. ```yaml $(tag) == 'package-2021-02-10' input-file: - stable/2021-02-10/bms.json ``` ### Tag: package-2021-02-preview These settings apply only when `--tag=package-2021-02-preview` is specified on the command line. ```yaml $(tag) == 'package-2021-02-preview' input-file: - preview/2021-02-01-preview/bms.json ``` ### Tag: package-2021-02 These settings apply only when `--tag=package-2021-02` is specified on the command line. ```yaml $(tag) == 'package-2021-02' input-file: - stable/2021-02-01/bms.json ``` ### Tag: package-2021-01 These settings apply only when `--tag=package-2021-01` is specified on the command line. ```yaml $(tag) == 'package-2021-01' input-file: - stable/2021-01-01/bms.json ``` ### Tag: package-2020-12 These settings apply only when `--tag=package-2020-12` is specified on the command line. ```yaml $(tag) == 'package-2020-12' input-file: - stable/2020-12-01/bms.json ``` ### Tag: package-2020-10 These settings apply only when `--tag=package-2020-10` is specified on the command line. ```yaml $(tag) == 'package-2020-10' input-file: - stable/2020-10-01/bms.json ``` ### Tag: package-2020-07 These settings apply only when `--tag=package-2020-07` is specified on the command line. ```yaml $(tag) == 'package-2020-07' input-file: - stable/2020-07-01/bms.json ``` ### Tag: package-2020-02 These settings apply only when `--tag=package-2020-02` is specified on the command line. ```yaml $(tag) == 'package-2020-02' input-file: - stable/2020-02-02/bms.json ``` ### Tag: package-2019-06 These settings apply only when `--tag=package-2019-06` is specified on the command line. ```yaml $(tag) == 'package-2019-06' input-file: - stable/2019-06-15/bms.json ``` ### Tag: package-2019-05 These settings apply only when `--tag=package-2019-05` is specified on the command line. ```yaml $(tag) == 'package-2019-05' input-file: - stable/2019-05-13/bms.json ``` ### Tag: package-2017-07 These settings apply only when `--tag=package-2017-07` is specified on the command line. ```yaml $(tag) == 'package-2017-07' input-file: - stable/2017-07-01/bms.json ``` ### Tag: package-2016-06 These settings apply only when `--tag=package-2016-06` is specified on the command line. ```yaml $(tag) == 'package-2016-06' input-file: - stable/2016-06-01/recoveryservicesbackup.json - stable/2016-06-01/registeredIdentities.json ``` ### Tag: package-2016-08 These settings apply only when `--tag=package-2016-08` is specified on the command line. ```yaml $(tag) == 'package-2016-08' input-file: - stable/2016-08-10/operations.json ``` ### Tag: package-2016-12 These settings apply only when `--tag=package-2016-12` is specified on the command line. ```yaml $(tag) == 'package-2016-12' input-file: - stable/2016-12-01/bms.json ``` ### Tag: package-2017-07-only These settings apply only when `--tag=package-2017-07` is specified on the command line. ```yaml $(tag) == 'package-2017-07-only' input-file: - stable/2017-07-01/bms.json ``` --- # Code Generation ## Swagger to SDK This section describes what SDK should be generated by the automatic system. This is not used by Autorest itself. ```yaml $(swagger-to-sdk) swagger-to-sdk: - repo: azure-sdk-for-net - repo: azure-sdk-for-python - repo: azure-sdk-for-java - repo: azure-sdk-for-js - repo: azure-sdk-for-node - repo: azure-sdk-for-ruby after_scripts: - bundle install && rake arm:regen_all_profiles['azure_mgmt_recovery_services_backup'] - repo: azure-resource-manager-schemas - repo: azure-powershell ``` ## Python See configuration in [readme.python.md](./readme.python.md) ## Java See configuration in [readme.java.md](./readme.java.md) ## Suppression ```yaml $(directive) directive: - suppress: ImplementPrivateEndpointAPIs from: stable/2018-12-20/bms.json reason: Existing API version. Private Endpoint are not supposed to be implemented for this API version dedicated for CRR, that uses API version based routing. - suppress: ImplementPrivateEndpointAPIs from: stable/2021-06-01/bms.json reason: Addition of new API version is specific to MSI support for our service, to ensure sign off we commit we will take a fix for Private endpoint in Ni. - suppress: TrackedResourceBeyondsThirdLevel from: bms.json where: $.definitions.RecoveryPointResource reason: This is an existing resource in our service and is present across API version. Suppressing for API versions 2021-11-15, 2023-01-15 for fixing completeness for CRR Get recoverypoints API. - suppress: LroErrorContent from: bms.json reason: The azure backup service's API infra handles the conversation from exceptions to custom error CloudError. Changing this would be breaking change for our service. - suppress: ConsistentPatchProperties from: bms.json where: - $.paths["/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}"].patch.parameters[8]["schema"] reason: Known false alarm for the discriminator pattern that causes ConsistentPatchProperties rule to fail. - suppress: AllTrackedResourcesMustHaveDelete from: bms.json where: $.definitions.ProtectedItemResource reason: ProtectedItemResource is exposed read-only on the cross-tenant pass-through paths (BackupProtectedItemsFromCrossTenantVault) where DELETE is intentionally not supported. The standard (non-cross-tenant) path retains DELETE; the lint rule cannot scope its check to exclude the read-only cross-tenant mirror. - suppress: NestedResourcesMustHaveListOperation from: bms.json where: $.definitions.CrossTenantVaultMapping reason: CrossTenantVaultMapping has a list operation at /backupCrossTenantVaultMappings (operationId CrossTenantVaultMappings_List). The lint rule cannot match the resource to its list path due to the custom path segment name. - suppress: NestedResourcesMustHaveListOperation from: bms.json where: $.definitions.VaultCredentialCertificateResponse reason: VaultCredentialCertificateResponse is returned by the operationResults GET endpoint as an async polling result, not as a standalone nested resource with CRUD lifecycle. - suppress: ResourceNameRestriction from: bms.json reason: | crossTenantVaultMappingName on the CrossTenantVaultMapping resource model has a real pattern (^[A-Za-z][A-Za-z0-9]{1,99}$). The remaining ResourceNameRestriction surface comes from vaultName, which is inherited from the parent VaultResource with NamePattern="" for backward compatibility across all stable api-versions (2025-02-01, 2025-08-01, 2026-01-01). Adding a pattern at the source would propagate via shared TypeSpec into all stable versions and trip openapi-diff rule 1036 (ConstraintChanged) on every vault path. suppressions: - from: bms.json code: ProvisioningStateSpecifiedForLROPut where: $.paths["/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}"].put reason: The existing API contract is legacy code and not be able to change. ```