canonical: https://jentic.com/apis/azure.com/azure-aad-domain-services

# Microsoft Azure Domain Services Resource Provider

Jentic publishes the only available OpenAPI specification for Domain Services Resource Provider, keeping it validated and agent-ready. The Azure AD Domain Services Resource Provider lets you provision and manage Azure Active Directory Domain Services (AAD DS) instances - fully managed Active Directory domains hosted in Azure that support domain join, group policy, LDAP, and Kerberos and NTLM authentication for legacy workloads. The API exposes 7 endpoints covering domain service CRUD plus listing operations available on the resource provider.

## For AI agents

Provision, update, list, and delete Azure AD Domain Services managed domains so VMs and applications can perform domain join, LDAP bind, and Kerberos authentication.

## Scope

Does not manage Azure AD tenants, users, groups, or application registrations - use for Azure AD Domain Services managed domain instances only.

## Capabilities

- Provision a managed Azure AD Domain Services instance in a chosen region and VNet
- Update a domain service to change SKU, replica sets, or notification settings
- List every Azure AD Domain Services instance in a subscription
- Retrieve the configuration of a specific managed domain
- Delete a managed domain when no longer needed
- Discover the operations the AAD resource provider supports for RBAC planning

## Use cases

### Lift-and-Shift of Domain-Joined Workloads

Migrating on-premises VMs that depend on Active Directory typically requires domain controllers in Azure. Azure AD Domain Services removes that operational overhead by providing a managed domain. Using DomainServices_CreateOrUpdate an automation agent can stand up a managed domain inside a chosen VNet, wait for provisioning to complete, then domain-join migrated VMs without ever deploying a DC.

Example prompt: Create an Azure AD Domain Services instance named contoso.local in resource group identity-rg with the Standard SKU in eastus2 and return the provisioning state.

### Identity Inventory Across Subscriptions

Identity teams in regulated industries need a single inventory of every managed domain in the tenant. By calling DomainServices_List against each subscription the agent can build a complete picture of where AAD DS instances live, which SKU they run on, and which VNets they are wired into, then feed it into compliance dashboards.

Example prompt: Iterate over every subscription the service principal can read and call DomainServices_List, returning a CSV of domain name, SKU, and provisioning state.

### Decommissioning Stale Managed Domains

Managed domains accrue cost even when the workloads using them have been retired. By listing domains and inspecting the joined resources, an agent can identify candidates with no active VMs in the same VNet and call DomainServices_Delete after approval. This delivers steady identity-platform cost reduction.

Example prompt: Find any Azure AD Domain Services instance in resource group legacy-rg with no domain-joined VMs over the past 30 days, then delete it.

### AI Agent Identity Provisioning via Jentic

An identity automation agent integrated through Jentic can resolve a request like stand up a managed domain for the new finance app end-to-end. It searches Jentic for create azure ad domain services, loads the DomainServices_CreateOrUpdate schema, supplies the domain name and VNet ID, and returns the provisioning status. Credentials never leave your Jentic One instance.

Example prompt: Through Jentic, search for create azure ad domain services, load DomainServices_CreateOrUpdate, and provision contoso.local with the Standard SKU in eastus2.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| PUT | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName} | Create or update a managed domain |
| GET | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName} | Get a managed domain |
| PATCH | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName} | Update a managed domain |
| DELETE | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName} | Delete a managed domain |
| GET | /subscriptions/{subscriptionId}/providers/Microsoft.AAD/domainServices | List managed domains in a subscription |
| GET | /providers/Microsoft.AAD/operations | List operations on the Microsoft.AAD resource provider |

## Key resources

- **Domain Services** — Create, read, update, list, and delete Azure AD Domain Services managed domain instances
- **Domain Service Operations** — List the operations the Microsoft.AAD resource provider supports for RBAC planning

## Why Jentic

- **Setup:** Wiring the Microsoft.AAD domain services API by hand means acquiring Azure AD OAuth 2.0 bearer tokens, building the ARM URLs under management.azure.com, and polling the long-running managed-domain provisioning until it completes. Through Jentic you install once, import the Domain Services Resource Provider from the API Directory, store the Azure AD credential once, and your agent calls it.
- **Permission scoping:** The managed-domain id travels in the URL path (/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName}), so a rule can pin your agent to one subscription and resource group. You choose the operations it may call, so destructive ones like deleting a managed domain are not included unless you add them.
- **Credential handling:** Your Azure AD credential is stored once, encrypted, by your own Jentic One instance and injected as 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 'create azure ad domain services' or 'list managed domains in a subscription', and Jentic returns the matching DomainServices operation with its domain-name, location, and subnet input schema so the agent calls the right endpoint without browsing ARM docs.

## Related APIs

- **DNS Management Client** — Manages public DNS zones that can resolve external names for AAD DS-joined workloads
- **Domains API Client** — Registers and manages domain names that may also be configured as the AAD DS DNS suffix
- **Diagnostics API Client** — Diagnoses App Service workloads rather than identity infrastructure

## FAQ

### Why is there no official OpenAPI spec for Domain Services Resource Provider?

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

It uses Azure Active Directory OAuth 2.0 (azure_auth) against https://management.azure.com/. The principal needs at least Contributor on the target resource group plus permission to create resources in the Microsoft.AAD provider. Through Jentic, Azure credentials live in your Jentic One instance and the agent only sees a scoped bearer token.

### Can I create a managed domain in any region with this API?

AAD DS supports a defined set of regions. PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName} accepts a location field, but the API will reject the call if the region is not supported by AAD DS. Check the location field of an existing instance for valid values in your tenant.

### What are the rate limits for the Domain Services Resource Provider?

Azure Resource Manager applies the standard subscription-scoped throttling (broadly 12,000 reads per hour and 1,200 writes per hour). Create and update on a managed domain are long-running operations: expect 30-60 minutes for initial provisioning. Poll DomainServices_Get and check provisioningState until it reads Succeeded.

### How do I provision a managed domain through Jentic?

Run pip install jentic, search for create azure ad domain services, load the DomainServices_CreateOrUpdate schema, supply domainServiceName, location, domainName, and the subnet resource ID, then execute. The call returns 202 with a long-running operation URL - poll DomainServices_Get until the provisioning state is Succeeded.

### Does this API manage Azure Active Directory tenants or users?

No. This API manages AAD Domain Services instances - the managed domain that VMs join. To manage Azure AD users, groups, or applications, use the Microsoft Graph API instead.

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

Yes. Because you self-host Jentic One, your own rules decide which DomainServices operations and which Azure AD credential the agent may use. The managed-domain id travels in the URL path with the subscription and resource group, so a rule can pin the agent to a single subscription and resource group. You also choose the operations it can call, so a destructive one like deleting a managed domain is excluded unless you deliberately add it.
