diff --git a/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Delete.json b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Delete.json new file mode 100644 index 000000000000..73c00db3963f --- /dev/null +++ b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Delete.json @@ -0,0 +1,14 @@ +{ + "title": "Delete regional move container", + "operationId": "RegionalMoveContainers_Delete", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1" + }, + "responses": { + "200": {}, + "204": {} + } +} diff --git a/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_FinalizeMove.json b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_FinalizeMove.json new file mode 100644 index 000000000000..f163fa856053 --- /dev/null +++ b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_FinalizeMove.json @@ -0,0 +1,18 @@ +{ + "title": "Finalize subset of resources in a regional move container", + "operationId": "RegionalMoveContainers_FinalizeMove", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1", + "body": { + "resourceIds": [ + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1" + ] + } + }, + "responses": { + "200": {} + } +} diff --git a/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Get.json b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Get.json new file mode 100644 index 000000000000..b4c0d781ffad --- /dev/null +++ b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Get.json @@ -0,0 +1,56 @@ +{ + "title": "Get regional move container", + "operationId": "RegionalMoveContainers_Get", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + } + } + } +} diff --git a/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_ListByResourceGroup.json b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_ListByResourceGroup.json new file mode 100644 index 000000000000..55add78f2b3e --- /dev/null +++ b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_ListByResourceGroup.json @@ -0,0 +1,101 @@ +{ + "title": "List regional move containers at resource group scope", + "operationId": "RegionalMoveContainers_ListByResourceGroup", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + }, + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer2", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westeurope", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westeurope", + "targetLocation": "northeurope", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm3", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm3Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm4", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm4Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm3", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm4", + "status": "MoveSucceeded" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_ListBySubscription.json b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_ListBySubscription.json new file mode 100644 index 000000000000..9d971b63f7f5 --- /dev/null +++ b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_ListBySubscription.json @@ -0,0 +1,100 @@ +{ + "title": "List regional move containers at subscription scope", + "operationId": "RegionalMoveContainers_ListBySubscription", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + }, + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup2/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer2", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westeurope", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westeurope", + "targetLocation": "northeurope", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm4Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm4", + "status": "MoveSucceeded" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Update.json b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Update.json new file mode 100644 index 000000000000..0e0a10528450 --- /dev/null +++ b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMoveContainers_Update.json @@ -0,0 +1,66 @@ +{ + "title": "Update regional move container tags", + "operationId": "RegionalMoveContainers_Update", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1", + "properties": { + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + } + } +} diff --git a/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMove_CreateOrUpdate.json b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMove_CreateOrUpdate.json new file mode 100644 index 000000000000..74e9689fb293 --- /dev/null +++ b/specification/resources/RegionalMove.Management/examples/2026-01-01-preview/RegionalMove_CreateOrUpdate.json @@ -0,0 +1,128 @@ +{ + "title": "Create or update regional move container", + "operationId": "RegionalMoveContainers_CreateOrUpdate", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1", + "resource": { + "location": "westus", + "properties": { + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ] + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "InProgress", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "Moving" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveFinalizing" + } + ] + } + } + } + } +} diff --git a/specification/resources/RegionalMove.Management/main.tsp b/specification/resources/RegionalMove.Management/main.tsp new file mode 100644 index 000000000000..e3d2b0ace997 --- /dev/null +++ b/specification/resources/RegionalMove.Management/main.tsp @@ -0,0 +1,21 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +import "./models.tsp"; +import "./routes.tsp"; + +using Azure.ResourceManager; +using TypeSpec.Versioning; + +#suppress "@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint" "Operations API defined separately - namespace is shared between multiple services." +@armProviderNamespace("Microsoft.Resources") +@service(#{ title: "Regional Move Service Client" }) +@versioned(Versions) +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v6) +namespace RegionalMoveClient; + +enum Versions { + v2026_01_01_preview: "2026-01-01-preview", +} diff --git a/specification/resources/RegionalMove.Management/models.tsp b/specification/resources/RegionalMove.Management/models.tsp new file mode 100644 index 000000000000..f5ea58e56a35 --- /dev/null +++ b/specification/resources/RegionalMove.Management/models.tsp @@ -0,0 +1,140 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-resource-manager"; + +using Azure.ResourceManager; + +namespace RegionalMoveClient; + +/** The regional move container provisioning state */ +union RegionalMoveProvisioningState { + ResourceProvisioningState, + + /** The regional move container has been successfully created but not started. */ + Created: "Created", + + /** The regional move container operations are in progress. */ + InProgress: "InProgress", + + /** The regional move container is awaiting the user to invoke finalization on one or more resources. */ + InProgressAwaitingFinalization: "InProgressAwaitingFinalization", +} + +/** Represents the status of the move or copy operation for an individual resource within a move container. */ +union ResourceMoveStatus { + string, + + /** The resource operation is queued. */ + Queued: "Queued", + + /** Pre-move validation is in progress. */ + ValidatingPreMove: "ValidatingPreMove", + + /** Pre-move validation has completed. */ + ValidatedPreMove: "ValidatedPreMove", + + /** Pre-move validation failed. */ + FailedPreMoveValidate: "FailedPreMoveValidate", + + /** The resource move is in progress. */ + Moving: "Moving", + + /** The resource is awaiting finalization. */ + AwaitingMoveFinalization: "AwaitingMoveFinalization", + + /** The resource move is finalizing. */ + MoveFinalizing: "MoveFinalizing", + + /** The resource move is cleaning up. */ + CleaningUp: "CleaningUp", + + /** The resource move has succeeded. */ + MoveSucceeded: "MoveSucceeded", + + /** The resource move has failed. */ + MoveFailed: "MoveFailed", +} + +model RegionalMoveContainer + is TrackedResource< + RegionalMoveContainerProperties, + PropertiesOptional = false + > { + ...ResourceNameParameter< + Resource = RegionalMoveContainer, + KeyName = "moveContainerName", + SegmentName = "regionalMoveContainers", + NamePattern = "^[-\\w\\._\\(\\)]+$" + >; +} + +@@maxLength(RegionalMoveContainer.name, 90); +@@minLength(RegionalMoveContainer.name, 1); +@@doc(RegionalMoveContainer.name, + "The name of the Regional Move Container resource" +); + +/** The properties of a Regional Move Container */ +model RegionalMoveContainerProperties { + // for non-terminal state, we can consider: + // - Accepted (indicates that the entity was created successfully but no job started yet) + // - Running/InProgress (indicates that the job is in progress) + // - + /** The ARM provisioning state of the Regional Move Container. */ + @visibility(Lifecycle.Read) + provisioningState?: RegionalMoveProvisioningState; + + /** The location from which resources will be copied. */ + sourceLocation: string; + + /** The location to which resources will be copied. */ + targetLocation: string; + + /** The list of resources to be copied. */ + @identifiers(#["sourceResourceId"]) + requestedResources: RegionalMoveRequestedResource[]; + + /** Status of operations for each resource in the move container. */ + @visibility(Lifecycle.Read) + @identifiers(#["sourceResourceId"]) + resourceStatusDetails?: RegionalMoveResourceStatusDetail[]; + + ...ErrorResponse; +} + +/** Information about the resource to be copied */ +model RegionalMoveRequestedResource { + /** Resource ID of the resource being copied */ + sourceResourceId: string; + + /** Resource ID where the source will be copied/moved to. For copy operations, this cannot be the same as the source. */ + targetResourceId: string; + + /** Properties to be overridden/modified on the resource during the copy operation. The resource provider will reject invalid modifications. */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "This needs to include properties of any arbitrary resource type." + resourceOverrides?: Record; + + /** The API version to use to perform the copy operation. */ + apiVersion: string; +} + +/** Represents the status details (state, errors, etc.) of a resource within a move container. */ +model RegionalMoveResourceStatusDetail { + /** Resource ID of the resource being moved/copied. */ + sourceResourceId: string; + + /** Status of the resource move/copy operation. */ + status: ResourceMoveStatus; + + ...ErrorResponse; +} + +/** Represents the finalization request body. */ +model RegionalMoveFinalizationRequestContent { + /** + * List of fully-qualified resource IDs to mark for finalization. Each resource ID specified should be part of the Regional Move Container. + * If you set this to null, all resources in the move container will be marked for finalization. + */ + resourceIds?: string[]; +} diff --git a/specification/resources/RegionalMove.Management/routes.tsp b/specification/resources/RegionalMove.Management/routes.tsp new file mode 100644 index 000000000000..35a6532502f1 --- /dev/null +++ b/specification/resources/RegionalMove.Management/routes.tsp @@ -0,0 +1,35 @@ +import "@azure-tools/typespec-azure-core"; +import "@typespec/rest"; +import "./models.tsp"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@azure-tools/typespec-client-generator-core"; +import "@typespec/openapi"; + +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.Rest; + +namespace RegionalMoveClient; + +@armResourceOperations +interface RegionalMoveContainers { + get is ArmResourceRead; + + listBySubscription is ArmListBySubscription; + + listByResourceGroup is ArmResourceListByParent; + + createOrUpdate is ArmResourceCreateOrReplaceAsync; + + update is ArmTagsPatchSync; + + delete is ArmResourceDeleteSync; + + @action("finalizeMove") + finalizeMove is ArmResourceActionSync< + RegionalMoveContainer, + RegionalMoveFinalizationRequestContent, + OkResponse, + OptionalRequestBody = true + >; +} diff --git a/specification/resources/RegionalMove.Management/tspconfig.yaml b/specification/resources/RegionalMove.Management/tspconfig.yaml new file mode 100644 index 000000000000..ea749137e3e4 --- /dev/null +++ b/specification/resources/RegionalMove.Management/tspconfig.yaml @@ -0,0 +1,47 @@ +parameters: + "service-dir": + default: "sdk/resources" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: true + emitter-output-dir: "{project-root}/.." + azure-resource-provider-folder: "resource-manager" + output-file: "{azure-resource-provider-folder}/Microsoft.Resources/regionalmove/{version-status}/{version}/regionalMove.json" + examples-dir: "{project-root}/examples" + use-read-only-status-schema: true + "@azure-typespec/http-client-csharp-mgmt": + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + namespace: "Azure.ResourceManager.Resources.RegionalMove" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-resource-regionalmove" + namespace: "azure.mgmt.resource.regionalmove" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-resources-regionalmove" + namespace: "com.azure.resourcemanager.resources.regionalmove" + service-name: "Regional Move Service" + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-resourcesregionalmove" + service-dir: "sdk/resourcesregionalmove" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-resourcesregionalmove" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/resources" + emitter-output-dir: "{output-dir}/{service-dir}/armregionalmove" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armregionalmove" + fix-const-stuttering: false + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Delete.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Delete.json new file mode 100644 index 000000000000..73c00db3963f --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Delete.json @@ -0,0 +1,14 @@ +{ + "title": "Delete regional move container", + "operationId": "RegionalMoveContainers_Delete", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1" + }, + "responses": { + "200": {}, + "204": {} + } +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_FinalizeMove.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_FinalizeMove.json new file mode 100644 index 000000000000..f163fa856053 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_FinalizeMove.json @@ -0,0 +1,18 @@ +{ + "title": "Finalize subset of resources in a regional move container", + "operationId": "RegionalMoveContainers_FinalizeMove", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1", + "body": { + "resourceIds": [ + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1" + ] + } + }, + "responses": { + "200": {} + } +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Get.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Get.json new file mode 100644 index 000000000000..b4c0d781ffad --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Get.json @@ -0,0 +1,56 @@ +{ + "title": "Get regional move container", + "operationId": "RegionalMoveContainers_Get", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_ListByResourceGroup.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_ListByResourceGroup.json new file mode 100644 index 000000000000..55add78f2b3e --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_ListByResourceGroup.json @@ -0,0 +1,101 @@ +{ + "title": "List regional move containers at resource group scope", + "operationId": "RegionalMoveContainers_ListByResourceGroup", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + }, + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer2", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westeurope", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westeurope", + "targetLocation": "northeurope", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm3", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm3Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm4", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm4Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm3", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleVm4", + "status": "MoveSucceeded" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_ListBySubscription.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_ListBySubscription.json new file mode 100644 index 000000000000..9d971b63f7f5 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_ListBySubscription.json @@ -0,0 +1,100 @@ +{ + "title": "List regional move containers at subscription scope", + "operationId": "RegionalMoveContainers_ListBySubscription", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + }, + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup2/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer2", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westeurope", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westeurope", + "targetLocation": "northeurope", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups2/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm4Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm3", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup2/providers/Microsoft.Compute/virtualMachines/sampleVm4", + "status": "MoveSucceeded" + } + ] + } + } + ] + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Update.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Update.json new file mode 100644 index 000000000000..0e0a10528450 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMoveContainers_Update.json @@ -0,0 +1,66 @@ +{ + "title": "Update regional move container tags", + "operationId": "RegionalMoveContainers_Update", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1", + "properties": { + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMove_CreateOrUpdate.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMove_CreateOrUpdate.json new file mode 100644 index 000000000000..74e9689fb293 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/examples/RegionalMove_CreateOrUpdate.json @@ -0,0 +1,128 @@ +{ + "title": "Create or update regional move container", + "operationId": "RegionalMoveContainers_CreateOrUpdate", + "parameters": { + "api-version": "2026-01-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "sampleResourceGroup", + "moveContainerName": "sampleContainer1", + "resource": { + "location": "westus", + "properties": { + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ] + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "MoveSucceeded" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveSucceeded" + } + ] + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Resources/regionalMoveContainers/sampleContainer1", + "name": "sampleContainer1", + "type": "Microsoft.Resources/regionalMoveContainers", + "location": "westus", + "properties": { + "provisioningState": "InProgress", + "sourceLocation": "westus", + "targetLocation": "eastus", + "requestedResources": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1Copy", + "apiVersion": "2025-04-01", + "resourceOverrides": { + "sku": { + "name": "ExampleSkuForTargetLocation" + }, + "properties": { + "sampleResourceProperty1": "OverrideValue1", + "sampleResourceProperty2": 42 + } + } + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2Copy", + "apiVersion": "2025-04-01" + } + ], + "resourceStatusDetails": [ + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource1", + "status": "Moving" + }, + { + "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleResourceGroup/providers/Microsoft.Example/exampleResources/sampleResource2", + "status": "MoveFinalizing" + } + ] + } + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/regionalMove.json b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/regionalMove.json new file mode 100644 index 000000000000..5d8aa5a5fcd3 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/preview/2026-01-01-preview/regionalMove.json @@ -0,0 +1,700 @@ +{ + "swagger": "2.0", + "info": { + "title": "Regional Move Service Client", + "version": "2026-01-01-preview", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "RegionalMoveContainers" + } + ], + "paths": { + "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/regionalMoveContainers": { + "get": { + "operationId": "RegionalMoveContainers_ListBySubscription", + "tags": [ + "RegionalMoveContainers" + ], + "description": "List RegionalMoveContainer resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/RegionalMoveContainerListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List regional move containers at subscription scope": { + "$ref": "./examples/RegionalMoveContainers_ListBySubscription.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/regionalMoveContainers": { + "get": { + "operationId": "RegionalMoveContainers_ListByResourceGroup", + "tags": [ + "RegionalMoveContainers" + ], + "description": "List RegionalMoveContainer resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/RegionalMoveContainerListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List regional move containers at resource group scope": { + "$ref": "./examples/RegionalMoveContainers_ListByResourceGroup.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/regionalMoveContainers/{moveContainerName}": { + "get": { + "operationId": "RegionalMoveContainers_Get", + "tags": [ + "RegionalMoveContainers" + ], + "description": "Get a RegionalMoveContainer", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "moveContainerName", + "in": "path", + "description": "The name of the Regional Move Container resource", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[-\\w\\._\\(\\)]+$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/RegionalMoveContainer" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get regional move container": { + "$ref": "./examples/RegionalMoveContainers_Get.json" + } + } + }, + "put": { + "operationId": "RegionalMoveContainers_CreateOrUpdate", + "tags": [ + "RegionalMoveContainers" + ], + "description": "Create a RegionalMoveContainer", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "moveContainerName", + "in": "path", + "description": "The name of the Regional Move Container resource", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[-\\w\\._\\(\\)]+$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/RegionalMoveContainer" + } + } + ], + "responses": { + "200": { + "description": "Resource 'RegionalMoveContainer' update operation succeeded", + "schema": { + "$ref": "#/definitions/RegionalMoveContainer" + } + }, + "201": { + "description": "Resource 'RegionalMoveContainer' create operation succeeded", + "schema": { + "$ref": "#/definitions/RegionalMoveContainer" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Create or update regional move container": { + "$ref": "./examples/RegionalMove_CreateOrUpdate.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "RegionalMoveContainers_Update", + "tags": [ + "RegionalMoveContainers" + ], + "description": "Update a RegionalMoveContainer", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "moveContainerName", + "in": "path", + "description": "The name of the Regional Move Container resource", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[-\\w\\._\\(\\)]+$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/RegionalMoveContainerTagsUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/RegionalMoveContainer" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Update regional move container tags": { + "$ref": "./examples/RegionalMoveContainers_Update.json" + } + } + }, + "delete": { + "operationId": "RegionalMoveContainers_Delete", + "tags": [ + "RegionalMoveContainers" + ], + "description": "Delete a RegionalMoveContainer", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "moveContainerName", + "in": "path", + "description": "The name of the Regional Move Container resource", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[-\\w\\._\\(\\)]+$" + } + ], + "responses": { + "200": { + "description": "Resource deleted successfully." + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Delete regional move container": { + "$ref": "./examples/RegionalMoveContainers_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/regionalMoveContainers/{moveContainerName}/finalizeMove": { + "post": { + "operationId": "RegionalMoveContainers_FinalizeMove", + "tags": [ + "RegionalMoveContainers" + ], + "description": "A synchronous resource action.", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "moveContainerName", + "in": "path", + "description": "The name of the Regional Move Container resource", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[-\\w\\._\\(\\)]+$" + }, + { + "name": "body", + "in": "body", + "description": "The content of the action request", + "required": false, + "schema": { + "$ref": "#/definitions/RegionalMoveFinalizationRequestContent" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Finalize subset of resources in a regional move container": { + "$ref": "./examples/RegionalMoveContainers_FinalizeMove.json" + } + } + } + } + }, + "definitions": { + "RegionalMoveContainer": { + "type": "object", + "description": "Concrete tracked resource types can be created by aliasing this type using a specific property type.", + "properties": { + "properties": { + "$ref": "#/definitions/RegionalMoveContainerProperties", + "description": "The resource-specific properties for this resource." + } + }, + "required": [ + "properties" + ], + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/TrackedResource" + } + ] + }, + "RegionalMoveContainerListResult": { + "type": "object", + "description": "The response of a RegionalMoveContainer list operation.", + "properties": { + "value": { + "type": "array", + "description": "The RegionalMoveContainer items on this page", + "items": { + "$ref": "#/definitions/RegionalMoveContainer" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "RegionalMoveContainerProperties": { + "type": "object", + "description": "The properties of a Regional Move Container", + "properties": { + "provisioningState": { + "$ref": "#/definitions/RegionalMoveProvisioningState", + "description": "The ARM provisioning state of the Regional Move Container.", + "readOnly": true + }, + "sourceLocation": { + "type": "string", + "description": "The location from which resources will be copied." + }, + "targetLocation": { + "type": "string", + "description": "The location to which resources will be copied." + }, + "requestedResources": { + "type": "array", + "description": "The list of resources to be copied.", + "items": { + "$ref": "#/definitions/RegionalMoveRequestedResource" + }, + "x-ms-identifiers": [ + "sourceResourceId" + ] + }, + "resourceStatusDetails": { + "type": "array", + "description": "Status of operations for each resource in the move container.", + "items": { + "$ref": "#/definitions/RegionalMoveResourceStatusDetail" + }, + "readOnly": true, + "x-ms-identifiers": [ + "sourceResourceId" + ] + }, + "error": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorDetail", + "description": "The error object." + } + }, + "required": [ + "sourceLocation", + "targetLocation", + "requestedResources" + ] + }, + "RegionalMoveContainerTagsUpdate": { + "type": "object", + "description": "The type used for updating tags in RegionalMoveContainer resources.", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "RegionalMoveFinalizationRequestContent": { + "type": "object", + "description": "Represents the finalization request body.", + "properties": { + "resourceIds": { + "type": "array", + "description": "List of fully-qualified resource IDs to mark for finalization. Each resource ID specified should be part of the Regional Move Container.\nIf you set this to null, all resources in the move container will be marked for finalization.", + "items": { + "type": "string" + } + } + } + }, + "RegionalMoveProvisioningState": { + "type": "string", + "description": "The regional move container provisioning state", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Created", + "InProgress", + "InProgressAwaitingFinalization" + ], + "x-ms-enum": { + "name": "RegionalMoveProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Created", + "value": "Created", + "description": "The regional move container has been successfully created but not started." + }, + { + "name": "InProgress", + "value": "InProgress", + "description": "The regional move container operations are in progress." + }, + { + "name": "InProgressAwaitingFinalization", + "value": "InProgressAwaitingFinalization", + "description": "The regional move container is awaiting the user to invoke finalization on one or more resources." + } + ] + }, + "readOnly": true + }, + "RegionalMoveRequestedResource": { + "type": "object", + "description": "Information about the resource to be copied", + "properties": { + "sourceResourceId": { + "type": "string", + "description": "Resource ID of the resource being copied" + }, + "targetResourceId": { + "type": "string", + "description": "Resource ID where the source will be copied/moved to. For copy operations, this cannot be the same as the source." + }, + "resourceOverrides": { + "type": "object", + "description": "Properties to be overridden/modified on the resource during the copy operation. The resource provider will reject invalid modifications.", + "additionalProperties": {} + }, + "apiVersion": { + "type": "string", + "description": "The API version to use to perform the copy operation." + } + }, + "required": [ + "sourceResourceId", + "targetResourceId", + "apiVersion" + ] + }, + "RegionalMoveResourceStatusDetail": { + "type": "object", + "description": "Represents the status details (state, errors, etc.) of a resource within a move container.", + "properties": { + "sourceResourceId": { + "type": "string", + "description": "Resource ID of the resource being moved/copied." + }, + "status": { + "$ref": "#/definitions/ResourceMoveStatus", + "description": "Status of the resource move/copy operation." + }, + "error": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorDetail", + "description": "The error object." + } + }, + "required": [ + "sourceResourceId", + "status" + ] + }, + "ResourceMoveStatus": { + "type": "string", + "description": "Represents the status of the move or copy operation for an individual resource within a move container.", + "enum": [ + "Queued", + "ValidatingPreMove", + "ValidatedPreMove", + "FailedPreMoveValidate", + "Moving", + "AwaitingMoveFinalization", + "MoveFinalizing", + "CleaningUp", + "MoveSucceeded", + "MoveFailed" + ], + "x-ms-enum": { + "name": "ResourceMoveStatus", + "modelAsString": true, + "values": [ + { + "name": "Queued", + "value": "Queued", + "description": "The resource operation is queued." + }, + { + "name": "ValidatingPreMove", + "value": "ValidatingPreMove", + "description": "Pre-move validation is in progress." + }, + { + "name": "ValidatedPreMove", + "value": "ValidatedPreMove", + "description": "Pre-move validation has completed." + }, + { + "name": "FailedPreMoveValidate", + "value": "FailedPreMoveValidate", + "description": "Pre-move validation failed." + }, + { + "name": "Moving", + "value": "Moving", + "description": "The resource move is in progress." + }, + { + "name": "AwaitingMoveFinalization", + "value": "AwaitingMoveFinalization", + "description": "The resource is awaiting finalization." + }, + { + "name": "MoveFinalizing", + "value": "MoveFinalizing", + "description": "The resource move is finalizing." + }, + { + "name": "CleaningUp", + "value": "CleaningUp", + "description": "The resource move is cleaning up." + }, + { + "name": "MoveSucceeded", + "value": "MoveSucceeded", + "description": "The resource move has succeeded." + }, + { + "name": "MoveFailed", + "value": "MoveFailed", + "description": "The resource move has failed." + } + ] + } + } + }, + "parameters": {} +} diff --git a/specification/resources/resource-manager/Microsoft.Resources/regionalmove/readme.md b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/readme.md new file mode 100644 index 000000000000..153766739568 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Resources/regionalmove/readme.md @@ -0,0 +1,51 @@ +# RegionalMove + +> see https://aka.ms/autorest +This is the AutoRest configuration file. + +## Getting Started + +To build the SDKs, simply install AutoRest via `npm` (`npm install -g autorest`) and then run: + +> `autorest readme.md` +To see additional help and options, run: + +> `autorest --help` +For other options on installation see [Installing AutoRest](https://aka.ms/autorest/install) on the AutoRest github page. + +--- + +## Configuration + +### Basic Information + +These are the global settings. + +``` yaml +title: RegionalMoveServiceClient +description: Regional Move Service Client +openapi-type: arm +tag: package-2026-01 +``` + +### Tag: package-2026-01 + +These settings apply only when `--tag=package-2026-01` is specified on the command line. + +``` yaml $(tag) == 'package-2026-01' +input-file: + - preview/2026-01-01-preview/regionalMove.json +``` + +## Suppression + +``` yaml +directive: + - suppress: OperationsAPIImplementation + from: regionalMove.json + reason: Operations API is implemented as a separate service. + - suppress: AvoidAdditionalProperties + from: regionalMove.json + where: $.definitions.RegionalMoveRequestedResource.properties.resourceOverrides + reason: Regional Move Containers allow overriding resource properties during copy operations. These can be any arbitrary ARM resource properties. We pass them through as-is to the RP. +``` \ No newline at end of file