canonical: https://jentic.com/apis/azure.com/visual-studio-resource-provider-client

# Microsoft Azure Visual Studio Resource Provider Client

Jentic publishes the only available OpenAPI specification for Visual Studio Resource Provider Client, keeping it validated and agent-ready. This Azure Resource Manager API manages Visual Studio Team Services accounts and projects as ARM resources under the microsoft.visualstudio provider. Agents can list provider operations, check whether an account name is available, create or update an account in a resource group, attach extensions to that account, and create projects under the account. Authentication uses Azure Active Directory OAuth 2.0 against management.azure.com.

## For AI agents

Provisions Visual Studio / Azure DevOps accounts, projects, and account extensions through Azure Resource Manager so agents can spin up CI/CD homes for new teams.

## Scope

Does not run pipelines, manage repos, or create work items - use the Azure DevOps Services REST API for those; this client only provisions Visual Studio accounts, projects, and extensions through ARM.

## Capabilities

- Check whether a Visual Studio account resource name is available before issuing the create call
- Create or update a Visual Studio account resource in a chosen Azure region and resource group
- Add a Visual Studio account extension to enable specific extension features for the account
- Create a project under a Visual Studio account once the account has been provisioned
- List all microsoft.visualstudio operations the resource provider supports for capability discovery
- Get a single Visual Studio account or project to inspect its provisioning state and tags
- Delete an account, extension, or project to retire CI/CD environments cleanly

## Use cases

### Bootstrapping a new team's DevOps environment

When a new engineering team is onboarded, the agent provisions a Visual Studio account, attaches the team's preferred extensions, and creates a default project. The agent first calls checkNameAvailability to ensure the chosen account name is free, then PUTs the account resource with the appropriate region and tags, then PUTs each extension under the account, and finally PUTs a project. End-to-end this gives the team a usable Azure DevOps home as a fully governed ARM resource.

Example prompt: Call POST checkNameAvailability with 'mycorp-devops', PUT account 'mycorp-devops' in resource group 'devops-rg' (westeurope), PUT extension 'sonarcloud' under the account, then PUT project 'web-app' under the account.

### Account name validation in self-service flows

Self-service portals that let teams pick their own Visual Studio account name need to validate uniqueness before submission. POST /subscriptions/{subscriptionId}/providers/microsoft.visualstudio/checkNameAvailability returns whether the name is taken or reserved. Pairing this with a debounce on the input field prevents the team from progressing with an unavailable name.

Example prompt: POST checkNameAvailability with body {resourceName:'team-canary', resourceType:'Account'} and return whether nameAvailable=true.

### Project rollout under an existing account

An agent reading a list of new microservices from a registry can create a Visual Studio project per service under an existing account. PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{rootResourceName}/project/{resourceName} creates each project and the response carries provisioningState and resource id for downstream pipeline binding. The same pattern handles batch onboarding cleanly.

Example prompt: For each microservice name in the input list, PUT a project resource under account 'mycorp-devops' in resource group 'devops-rg', then GET the project and assert provisioningState=Succeeded.

### Agent-driven cleanup of unused accounts

An ops agent following a quarterly governance review can list Visual Studio accounts in a resource group, GET each to inspect its tags or last-used metadata, and DELETE accounts that meet the retirement criteria. Through Jentic the agent loads each operation by intent and the AAD bearer token stays inside the vault - no service principal credentials touch the agent prompt.

Example prompt: Search Jentic for 'list visual studio accounts', execute it for resource group 'devops-rg', filter accounts whose tag 'lastActive' is older than 12 months, and DELETE each.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /subscriptions/{subscriptionId}/providers/microsoft.visualstudio/checkNameAvailability | Check Visual Studio account name availability |
| PUT | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{resourceName} | Create or update a Visual Studio account |
| GET | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account | List Visual Studio accounts in a resource group |
| PUT | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{rootResourceName}/project/{resourceName} | Create or update a project under an account |
| PUT | /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{accountResourceName}/extension/{extensionResourceName} | Create or update an account extension |
| GET | /providers/microsoft.visualstudio/operations | List provider operations |

## Key resources

- **account** — Visual Studio account ARM resource: list, get, create/update, delete
- **account/project** — Project resource under an account: list, get, create/update
- **account/extension** — Account extension resource: list, get, create/update
- **checkNameAvailability** — Validates an account name against subscription-scoped availability
- **operations** — Lists the operations the microsoft.visualstudio provider supports

## Why Jentic

- **Setup:** Wiring the Visual Studio Resource Provider by hand means acquiring Azure Active Directory OAuth 2.0 tokens, targeting the management.azure.com ARM control plane, and threading subscription and resource group ids through every microsoft.visualstudio path yourself. Through Jentic you install once, import Visual Studio Resource Provider Client from the API Directory, store the Azure AD credential once, and your agent calls it.
- **Permission scoping:** This API carries the subscription, resource group, and account name in the URL path (/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{resourceName}), so a rule can pin your agent to one account or resource group and nothing else. You choose the operations it may call, so destructive ones like account or project deletion are not included unless you add them.
- **Credential handling:** Your Azure AD token 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 'create a visual studio account' or 'check whether a visual studio account name is available', and Jentic returns the matching microsoft.visualstudio operation with its input schema so the agent fills in subscription and resource group without reading ARM docs.

## Related APIs

- **Visual Studio Projects Resource Provider Client** — Lists pipeline templates used to bootstrap projects created here
- **Azure DevOps** — Direct Azure DevOps Services REST API for pipelines, repos, and work items
- **GitHub REST API** — Source-control and Actions platform commonly used in place of Azure DevOps

## FAQ

### Why is there no official OpenAPI spec for Visual Studio Resource Provider Client?

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

Azure Active Directory OAuth 2.0 with the user_impersonation scope against https://login.microsoftonline.com/common/oauth2/authorize. Through Jentic the AAD client secret stays encrypted in the vault and a scoped bearer token is issued to the agent at execution time.

### Can I create a Visual Studio account with this API?

Yes. PUT /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{resourceName} creates the account. It is recommended to first POST checkNameAvailability to confirm the name is free.

### What are the rate limits for the Visual Studio Resource Provider Client?

Calls go through Azure Resource Manager and are subject to the standard ARM read and write throttling envelope. The exact provider-specific limits are not declared in the spec; respect Retry-After on a 429 response.

### How do I add an extension to a Visual Studio account through Jentic?

Run pip install jentic, then client.search('add visual studio account extension'), client.load on the returned PUT on /microsoft.visualstudio/account/{accountResourceName}/extension/{extensionResourceName}, and client.execute with the extension payload. Jentic injects the AAD bearer token from the vault.

### Does this API let me create pipelines?

No. Pipeline creation lives in the Azure DevOps Services REST API, not in this ARM resource provider. This client provisions accounts, projects, and extensions as ARM resources but does not configure individual pipelines or repos.

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

Yes. Because you run Jentic One yourself, your own rules decide which microsoft.visualstudio operations the agent may call and which Azure AD credential it may use. Since this API carries the subscription, resource group, and account name in the URL path, you can pin the agent to a single account or resource group and nothing else. You choose the operations it can reach, so destructive calls like account or project deletion stay excluded unless you explicitly add them, while read and create operations such as checkNameAvailability or account creation remain available.
