canonical: https://jentic.com/apis/azure.com/azure-migrate

# Microsoft Azure Azure Migrate

Jentic publishes the only available OpenAPI specification for Azure Migrate, keeping it validated and agent-ready. The Azure Migrate API in this version manages Microsoft.Migrate projects, the discovered machines inside them, group definitions, assessments, and assessed machine output. Operators can create a Migrate project, group machines for assessment, run readiness and sizing assessments, download assessment reports, and check name availability for new projects. All requests authenticate with Azure AD OAuth 2.0 against Azure Resource Manager.

## For AI agents

Provision and operate Azure Migrate projects - create projects, group discovered machines, run readiness and sizing assessments, and download assessment reports for migration planning to Azure.

## Scope

Does not perform server replication, run lift-and-shift, or modify on-prem infrastructure - use for Migrate project, group, and assessment management only.

## Capabilities

- Create or update a Microsoft.Migrate project in a resource group
- List discovered machines reported into a Migrate project
- Group machines into named groups for assessment
- Run a readiness and sizing assessment against a group
- Download a SAS-protected assessment report URL
- List assessed machines with their suggested Azure VM SKU and cost
- Check project name availability and retrieve assessment options for a target location

## Use cases

### Datacenter Discovery to Assessment Pipeline

Migration teams stand up a Migrate project, ingest discovered machines from the on-prem appliance, group machines by application, then run assessments to estimate Azure VM size, monthly cost, and readiness. The PUT on /projects creates the project, /groups defines the assessment scope, and the PUT on /assessments triggers the assessment run; the assessedMachines GET returns per-VM recommendations.

Example prompt: Create Migrate project 'migrate-london' in resource group 'rg-migrate', create group 'app-tier' with the 30 discovered machine IDs in tag 'app=ecommerce', and start an assessment named 'assess-2026q2'.

### Assessment Report Distribution

After an assessment completes, the POST on /assessments/{assessmentName}/downloadUrl returns a short-lived SAS URL pointing at a CSV report containing per-machine readiness, suggested Azure VM SKU, and monthly cost estimate. Migration leads attach this report to project status updates without exporting machine data manually.

Example prompt: Generate the download URL for assessment 'assess-2026q2' under project 'migrate-london' and return the SAS URL with its expiry time.

### Per-Machine SKU Lookup

The GET on /assessments/{assessmentName}/assessedMachines returns each assessed machine's suggested Azure VM size, suitability rating, and monthly cost. This is useful for engineering teams who need to pick the right SKU per workload before lift-and-shift, and for finance teams modelling steady-state costs after migration.

Example prompt: List assessed machines for assessment 'assess-2026q2' under project 'migrate-london', filter to suitability='Suitable', and return name, suggestedSize, and monthlyComputeCost.

### Agent-Driven Migration Planning

An AI agent through Jentic can list every Migrate project across subscriptions, summarise readiness counts per group, and trigger fresh assessments after configuration changes. Jentic returns the operation schema for each call so the agent can iterate on assessment runs without parsing the Microsoft.Migrate Resource Provider docs.

Example prompt: List groups in project 'migrate-london', start an assessment on each group with default sizing criteria, and report group name, assessment name, and provisioning state.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| PUT | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName} | Create or update a Migrate project |
| GET | /subscriptions/{subscriptionId}/providers/Microsoft.Migrate/projects | List Migrate projects in a subscription |
| PUT | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName} | Create or update a group of machines |
| PUT | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName} | Create or update an assessment on a group |
| POST | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}/downloadUrl | Generate an assessment report download URL |
| GET | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}/assessedMachines | List assessed machines |
| POST | /subscriptions/{subscriptionId}/providers/Microsoft.Migrate/locations/{locationName}/checkNameAvailability | Check Migrate project name availability |
| POST | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/keys | Issue project keys for appliance registration |

## Key resources

- **Projects** — Create, read, update, delete, and list Migrate projects in a subscription
- **Machines** — List discovered machines reported into a project by appliances
- **Groups** — Define and manage groups of machines for assessment
- **Assessments** — Run, list, get, and delete assessments against groups
- **Assessed machines** — Per-machine sizing, cost, and readiness output from an assessment
- **Project keys** — Issue keys used by appliances to register with the project

## Why Jentic

- **Setup:** Wiring Azure Migrate by hand means registering an Azure AD app, minting tokens for https://management.azure.com/, and polling long-running assessment operations while you handle ARM throttling and paging yourself. Through Jentic you install once, import Azure Migrate from the API Directory, store the Azure AD credential once, and your agent calls it.
- **Permission scoping:** The project and group ids travel in the URL path (/projects/{projectName}/groups/{groupName}/...), so a rule can pin your agent to one Migrate project: it can create groups and run assessments there and nothing else. You choose the operations it may call, so destructive ones like deleting a project or an assessment are not included unless you add them.
- **Credential handling:** Your Azure AD credential is stored once, encrypted, by your own Jentic One instance and exchanged for a short-lived bearer token at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'run an Azure Migrate assessment on a group of machines' or 'download an assessment report', and Jentic returns the matching Microsoft.Migrate operation with its input schema so the agent calls the right endpoint without browsing the ARM reference.

## Related APIs

- **Azure Migrate Hub** — Hub-level Migrate surface that aggregates projects across resource groups.
- **Azure Monitor Management Client** — Configure metric alerts and diagnostic settings on the post-migration Azure VMs.
- **Azure Log Analytics** — Centralise migration audit logs and post-migration telemetry in a Log Analytics workspace.

## FAQ

### Why is there no official OpenAPI spec for Azure Migrate?

Microsoft Azure does not publish a single consolidated OpenAPI specification for the Microsoft.Migrate Resource Provider at this revision. Jentic generates and maintains this spec so that AI agents and developers can call Azure Migrate via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Azure Migrate API use?

The API uses Azure Active Directory OAuth 2.0; agents acquire a token for the https://management.azure.com/ resource and pass it as a Bearer token. Jentic stores the service principal credentials in its vault and injects scoped tokens at call time.

### Does this API run the actual migration or just plan it?

This API plans migrations - it manages Migrate projects, discovers machines, groups them, and runs assessments that produce sizing and cost recommendations. The actual lift-and-shift is performed by Azure Site Recovery or Server Migration tools, which are separate control planes.

### How do I run an assessment through Jentic?

Search Jentic for 'run an Azure Migrate assessment', load the resulting PUT operation on /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}, then execute it with the assessment name and target Azure location. Install with pip install jentic and run the async search-load-execute flow.

### How do I download an assessment report?

Call POST /projects/{projectName}/groups/{groupName}/assessments/{assessmentName}/downloadUrl. The response contains a short-lived SAS URL pointing at a CSV with per-machine readiness, suggested Azure VM SKU, and monthly compute cost.

### What are the rate limits for this API?

Azure Resource Manager applies subscription-level throttling - typically 12,000 reads and 1,200 writes per hour per subscription. Assessment runs are long-running operations that progress through 'Running' to 'Succeeded' over minutes.

### Can I limit what my agent is allowed to do with the Azure Migrate API?

Yes. Because you run Jentic One yourself, your own rules decide which Azure Migrate operations the agent may call and which Azure AD credential it uses. Since the project and group ids travel in the URL path, a rule can pin the agent to a single Migrate project so it can create groups and run assessments there and nothing else. You pick the operations it may call, so destructive ones like deleting a project or an assessment are excluded unless you explicitly add them.
