canonical: https://jentic.com/apis/azure.com/resourcemanagementclient

# Microsoft Azure ResourceManagementClient

Jentic publishes the only available OpenAPI specification for ResourceManagementClient, keeping it validated and agent-ready. The Azure Resource Management API is the control plane for ARM deployments, resource groups, individual resources, and tags across subscriptions and management groups. Agents can submit and validate ARM template deployments at any scope, list and update resources by id, manage resource groups and their tags, and inspect deployment operations to debug failures. It is the foundational API for everything Azure builds on top of subscriptions.

## For AI agents

Submit and manage Azure Resource Manager template deployments, resource groups, resources, and tags across subscriptions and management groups.

## Scope

Does not manage identity, billing, or resource-specific data planes - use for ARM control-plane deployments, resource groups, and resource-level operations only.

## Capabilities

- Create or update an ARM template deployment at subscription, resource group, or management group scope
- Validate an ARM template before submitting it to detect schema or quota issues
- List, move, and delete resources across resource groups within a subscription
- Manage resource groups including creation, tag updates, deletion, and exports
- Inspect individual deployment operations to pinpoint which resource caused a failure
- Cancel an in-progress ARM deployment that is taking too long or failing

## Use cases

### Infrastructure-as-Code Deployment

Platform teams use ResourceManagementClient to submit ARM template deployments from CI/CD pipelines or agent workflows. The API accepts a template plus parameters and returns a deployment resource the caller can poll until completion. Validation can be run separately first to catch schema or quota issues before consuming a deployment slot. Deployments scope to subscription, resource group, or management group depending on what the template provisions.

Example prompt: PUT /subscriptions/{subscriptionId}/resourcegroups/{rg}/providers/Microsoft.Resources/deployments/{name} with a template body and poll the deployment until provisioningState is Succeeded

### Failure Forensics on Stuck Deployments

When an ARM deployment fails, an operator needs to see which specific resource caused the failure. The deployment operations endpoint returns one record per resource the deployment attempted, including provisioning state, error code, and the target resource id. Agents can pull this data to summarise the failure or open a remediation ticket without re-running the deployment.

Example prompt: GET deployment operations for deployment infra-prod-42 in resource group rg-prod and return the operation entries where provisioningState equals Failed

### Resource Group Lifecycle and Tagging

FinOps and governance teams use the resource group endpoints to enforce tagging standards, export templates, and clean up empty resource groups. The API supports creating a resource group, patching its tags in place, listing the resources it contains, and deleting it. Tag updates are applied without recreating the group so existing automation is unaffected.

Example prompt: PATCH /subscriptions/{subscriptionId}/resourcegroups/{rg} with tags {costCenter: "42", env: "prod"} and verify the response echoes the new tag set

### Cross-Resource-Group Resource Moves

When teams reorganise Azure subscriptions, they need to move resources from one resource group or subscription to another. The moveResources operation accepts a list of resource ids and a target resource group, performs the move asynchronously, and returns a long-running operation handle. The API also supports validating a move first to confirm all resource types support relocation.

Example prompt: POST moveResources on resource group rg-old with target rg-new and a list of three storage account ids, then poll the long-running operation until it completes

### Agent-Driven ARM Operations via Jentic

Through Jentic, an infrastructure agent can search for deploy arm template, load the deployment input schema, populate template and parameters, and execute the call with a managed Azure OAuth token. The same flow extends to validation, cancellation, and operation inspection so a single agent can own a full deployment lifecycle without writing ARM SDK code.

Example prompt: Search Jentic for deploy arm template to resource group, load the deployment PUT schema, execute it with subscriptionId, resourceGroupName, and a template body, then poll the deployment to completion

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| PUT | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName} | Create or update a resource-group-scoped deployment |
| POST | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate | Validate an ARM template before deployment |
| POST | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel | Cancel a running deployment |
| GET | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/operations | List operations for a deployment |
| PUT | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName} | Create or update a resource group |
| POST | /subscriptions/{subscriptionId}/resourcegroups/{sourceResourceGroupName}/moveResources | Move resources to another resource group |
| GET | /providers | List all resource providers |

## Key resources

- **Deployments** — Submit, validate, cancel, and inspect ARM template deployments at subscription, resource group, or management group scope
- **ResourceGroups** — Create, update tags on, list, and delete resource groups within a subscription
- **Resources** — List, get, update, move, and delete individual Azure resources across resource groups
- **Tags** — Manage tag definitions and tag values at the subscription level
- **Providers** — List Azure resource providers and their supported API versions

## Why Jentic

- **Setup:** Wiring ResourceManagementClient by hand means registering an Azure AD app, running the OAuth2 azure_auth token exchange for the management.azure.com audience, and building the long-running-operation polling loop that ARM deployments and resource moves depend on. Through Jentic you install once, import ResourceManagementClient from the API Directory, store the Azure service principal credential once, and your agent calls it.
- **Permission scoping:** ResourceManagementClient puts the subscription and resource group in the URL path (/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/...), so a rule can pin your agent to one subscription or resource group and nothing beyond it. You choose the operations it may call, so destructive ones like deleting a resource group or moving resources between groups are not included unless you add them.
- **Credential handling:** Your Azure service principal credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'deploy an ARM template to a resource group' or 'move resources between resource groups', and Jentic returns the matching ResourceManagementClient operation with its input schema, including the right scope-specific path for subscription, resource group, or management group.

## Related APIs

- **Azure SubscriptionClient** — Manage the subscriptions whose resources this API operates on
- **Azure PolicyClient** — Defines the policies evaluated against resources you create
- **Azure RemediationsClient** — Fixes resources that fall out of policy compliance after deployment

## FAQ

### Why is there no official OpenAPI spec for ResourceManagementClient?

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

### What authentication does ResourceManagementClient use?

It uses Azure Active Directory OAuth 2.0 via the azure_auth flow defined in the spec. Acquire a bearer token for https://management.azure.com/.default and pass it as Authorization: Bearer. Jentic stores the underlying service principal in its vault and the agent only sees a scoped token.

### Can I validate an ARM template with this API before deploying?

Yes. POST to /subscriptions/{subscriptionId}/resourcegroups/{rg}/providers/Microsoft.Resources/deployments/{name}/validate with the same body you would send to PUT. The service returns the same validation errors it would have produced during deployment without consuming any quota.

### How do I cancel a stuck ARM deployment?

POST to /subscriptions/{subscriptionId}/resourcegroups/{rg}/providers/Microsoft.Resources/deployments/{name}/cancel. The deployment moves into a Cancelling state. Resources already provisioned remain in place - cancellation does not roll back completed steps.

### What are the rate limits for ResourceManagementClient?

Azure Resource Manager applies subscription-level throttling: roughly 12,000 reads and 1,200 writes per hour, with deployment-specific quotas of 800 deployments per resource group history. Throttled responses come back as HTTP 429 with a Retry-After header.

### How do I move a resource between resource groups via Jentic?

Search Jentic for move azure resources between resource groups, call client.load on the moveResources POST operation, and execute it with the source resource group, target resource group id, and an array of resource ids. Jentic injects the OAuth token and returns a long-running operation handle to poll.

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

Yes. Because you run Jentic One yourself, your own rules decide which operations and credentials the agent may use. Since the subscription and resource group live in the request path (/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/...), you can pin the agent to a single subscription or resource group and nothing beyond it. You also choose the exact operations it may call, so destructive ones like deleting a resource group or moving resources between groups stay off unless you explicitly grant them.
