canonical: https://jentic.com/apis/azure.com/provider-api-client

# Microsoft Azure Provider API Client

Jentic publishes the only available OpenAPI specification for Provider API Client, keeping it validated and agent-ready. The API exposes the Microsoft.Web resource provider's discovery endpoints - the operations available on the provider, the runtime stacks (such as .NET, Node.js, PHP, Python, and Java versions) supported by Azure App Service, and the equivalent stacks at subscription scope. It is the lookup surface used to populate stack pickers and validate desired runtimes before provisioning App Service resources.

## For AI agents

Look up the operations and runtime stacks supported by the Microsoft.Web provider so an agent can pick a valid App Service stack version before provisioning.

## Scope

Does not provision App Service plans, deploy code, or change stack versions on existing apps - use for read-only Microsoft.Web provider operation and available-stack discovery only.

## Capabilities

- List the operations available on the Microsoft.Web provider
- List runtime stacks supported by Azure App Service across all regions
- List the runtime stacks available within a specific subscription
- Filter stacks by operating system to narrow down Linux or Windows runtimes
- Validate that a desired stack version is still supported before provisioning

## Use cases

### Stack version validation before provisioning

Before provisioning a Web App, an automation flow needs to confirm the desired runtime stack version is still supported by Azure App Service. The API returns the catalogue of supported stacks and minor versions so the agent can pick a valid value or fail fast with a clear error rather than failing during provisioning.

Example prompt: List the available stacks filtered by osTypeSelected=Linux and confirm whether 'python|3.11' is supported

### Subscription-scoped stack catalogue

Some customers see a different stack catalogue depending on their subscription's region availability or feature flags. The subscription-scoped listing returns the stacks visible to a specific subscription so an internal portal can show only what the user is actually allowed to deploy.

Example prompt: List available stacks for subscription X and return the supported Java versions visible to that subscription

### Operation discovery for Microsoft.Web

Tooling that wraps Azure RBAC or audit logs needs the catalogue of Microsoft.Web provider operations to produce role definitions or readable audit lines. The operations listing returns the canonical operation names with their display strings.

Example prompt: List all Microsoft.Web provider operations and filter for those involving 'sites/write'

### Agent-driven stack selection

An AI agent provisioning a Web App needs to translate a user's intent (such as 'host a Node.js 20 app') into a concrete stack version. The agent calls the available stacks endpoint, picks the matching runtime, and then hands the value to the App Service create operation. Jentic isolates the AAD secret so the agent only sees scoped bearer tokens.

Example prompt: Resolve 'Node.js 20 LTS on Linux' to a concrete Microsoft.Web stack version that is currently available in subscription X

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /providers/Microsoft.Web/availableStacks | List all available App Service stacks |
| GET | /providers/Microsoft.Web/operations | List Microsoft.Web provider operations |
| GET | /subscriptions/{subscriptionId}/providers/Microsoft.Web/availableStacks | List available stacks visible to a subscription |

## Key resources

- **Available Stacks** — List runtime stacks supported by Azure App Service globally and per subscription
- **Operations** — List the operations available on the Microsoft.Web provider

## Why Jentic

- **Setup:** Wiring the Provider API Client by hand means registering an Azure AD app for OAuth 2.0, acquiring bearer tokens against management.azure.com, and handling the 429 read throttles with backoff yourself. Through Jentic you install once, import the Provider API Client from the API Directory, store the Azure AD credential once, and your agent calls it.
- **Permission scoping:** These are read-only listing endpoints, with the subscription id carried in the URL path (/subscriptions/{subscriptionId}/providers/Microsoft.Web/availableStacks) and the OS filter passed as a query parameter. You choose the operations the agent may call, so you can limit it to listing available stacks and provider operations and nothing more.
- **Credential handling:** Your Azure AD OAuth 2.0 credential is stored once, encrypted, by your own Jentic One instance and a scoped bearer token is injected at execution time. The client secret never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list azure app service available stacks' or 'find supported node.js versions', and Jentic returns the matching listing operation with its input schema so the agent supplies the subscription id and optional OS filter without browsing the reference docs.

## Related APIs

- **App Service Plans API Client** — Provisions the App Service plans that consume the runtime stacks listed by this API
- **Web Apps API Client** — Creates and configures Azure Web Apps using the stack versions returned by this API
- **App Service Environments API Client** — Manages App Service Environment (ASE) resources where stacks may differ from the multi-tenant catalogue

## FAQ

### Why is there no official OpenAPI spec for Provider API Client?

Microsoft Azure does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Provider API Client 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 Microsoft.Web Provider API use?

The API runs through Azure Resource Manager and uses OAuth 2.0 bearer tokens issued by Azure Active Directory under the azure_auth scheme with the user_impersonation scope. Through Jentic, the AAD client secret is held in the encrypted vault and a short-lived access token is supplied at execute time so the secret never appears in the agent's context.

### Can I filter the available stacks by operating system?

Yes. GET /providers/Microsoft.Web/availableStacks accepts an osTypeSelected query parameter (Linux or Windows) so the response includes only the stacks for the chosen OS. The same query parameter is supported on the subscription-scoped variant.

### What are the rate limits for the Microsoft.Web Provider API?

Azure Resource Manager applies subscription-level read throttles (around 12,000 reads per hour per region per subscription) and returns 429 with a Retry-After header when exceeded. These are read-only listing endpoints, so the read budget is the only limit that applies.

### How do I list available stacks through Jentic?

Search Jentic for 'list azure app service available stacks', load the schema for GET /subscriptions/{subscriptionId}/providers/Microsoft.Web/availableStacks, then execute with the subscriptionId and an optional osTypeSelected. The pip install jentic Python SDK uses the async search, load, execute pattern.

### Is the Microsoft.Web Provider API free?

There is no per-call charge for the management API itself; these listing endpoints are read-only metadata calls and do not provision any billable resources. You pay for App Service plans and apps once you provision them via the App Service APIs.

### Can I limit what my agent is allowed to do with the Provider API Client?

Yes. Because you run Jentic One yourself, you decide which operations the agent may call, so you can allow only the read-only listing calls such as GET /providers/Microsoft.Web/availableStacks and GET /providers/Microsoft.Web/operations and nothing else. The subscription id is carried in the URL path and the OS filter is passed as a query parameter, so you can hold the agent to a single subscription and to listing available stacks and provider operations. Your Azure AD credential stays in your own instance and a scoped bearer token is injected only at execution time, so the agent never sees the client secret.
