azure-resource-manager-cosmosdb-dotnet
microsoft/agent-skills/.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-cosmosdb-dotnet/SKILL.md
Azure Resource Manager SDK for Cosmos DB in .NET. Use for MANAGEMENT PLANE operations: creating/managing Cosmos DB accounts, databases, containers, throughput settings, and RBAC via Azure Resource Manager. NOT for data plane operations (CRUD on documents) - use Microsoft.Azure.Cosmos for that. Triggers: "Cosmos DB account", "create Cosmos account", "manage Cosmos resources", "ARM Cosmos", "CosmosDBAccountResource", "provision Cosmos DB".
What's in it
- Azure.ResourceManager.CosmosDB (.NET)
- Installation
- Environment Variables
- Authentication
- Resource Hierarchy
- Core Workflow
- 1. Create Cosmos DB Account
- 2. Create SQL Database
- 3. Create SQL Container
- 4. Configure Throughput
- 5. Get Connection Information
- Key Types Reference
- Best Practices
- Error Handling
- Reference Files
- Related SDKs
---
name: azure-resource-manager-cosmosdb-dotnet
description: |
Azure Resource Manager SDK for Cosmos DB in .NET. Use for MANAGEMENT PLANE operations: creating/managing Cosmos DB accounts, databases, containers, throughput settings, and RBAC via Azure Resource Manager. NOT for data plane operations (CRUD on documents) - use Microsoft.Azure.Cosmos for that. Triggers: "Cosmos DB account", "create Cosmos account", "manage Cosmos resources", "ARM Cosmos", "CosmosDBAccountResource", "provision Cosmos DB".
license: MIT
metadata:
author: Microsoft
version: "1.0.0"
package: Azure.ResourceManager.CosmosDB
---
# Azure.ResourceManager.CosmosDB (.NET)
Management plane SDK for provisioning and managing Azure Cosmos DB resources via Azure Resource Manager.
> **⚠️ Management vs Data Plane**
> - **This SDK (Azure.ResourceManager.CosmosDB)**: Create accounts, databases, containers, configure throughput, manage RBAC
> - **Data Plane SDK (Microsoft.Azure.Cosmos)**: CRUD operations on documents, queries, stored procedures execution
## Installation
```bash
dotnet add package Azure.ResourceManager.CosmosDB
dotnet add package Azure.Identity
```
**Current Versions**: Stable v1.4.0, Preview v1.4.0-beta.13
## Environment Variables
```bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription ID
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
AZURE_TENANT_ID=<tenant-id> # For service principal auth (optional)
AZURE_CLIENT_ID=<client-id> # For service principal auth (optional)
AZURE_CLIENT_SECRET=<client-secret> # For service principal auth (optional)
```
## Authentication
```csharp
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.CosmosDB;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
var credential = new DefaultAzureCredential(
DefaultAzureCredential.DefaultEnvironmentVariableName
);
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes
// var credential = new ManagedIdentityCredential();
var armClient = new ArmClient(credential);
// Get subscription
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var subscription = armClient.GetSubscriptionResource(
new ResourceIdentifier($"/subscriptions/{subscriptionId}"));
```
## Resource Hierarchy
```
ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── CosmosDBAccountResource
├── CosmosDBSqlDatabaseResource
│ └── CosmosDBSqlContainerResource
│ ├── CosmosDBSqlStoredProcedureResource
│ ├── CosmosDBSqlTriggerResource
│ └── CosmosDBSqlUserDefinedFunctionResource
├── CassandraKeyspaceResource
├── GremlinDatabaseResource
├── MongoDBDatabaseResource
└── CosmosDBTableResource
```
## Core Workflow
### 1. Create Cosmos DB Account
```csharp
using Azure.ResourceManager.CosmosDB;
using Azure.ResourceManager.CosmosDB.Models;
// Get resource group
var resourceGroup = await subscription
.GetResourceGroupAsync("my-resource-group");
// Define account
var accountData = new CosmosDBAccountCreateOrUpdateContent(
location: AzureLocation.EastUS,
locations: new[]
{
new CosmosDBAccountLocation
{
LocationName = AzureLocation.EastUS,
FailoverPriority = 0,
IsZoneRedundant = false
}
})
{
Kind = CosmosDBAccountKind.GlobalDocumentDB,
ConsistencyPolicy = new ConsistencyPolicy(DefaultConsistencyLevel.Session),
EnableAutomaticFailover = true
};
// Create account (long-running operation)
var accountCollection = resourceGroup.Value.GetCosmosDBAccounts();
var operation = await accountCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-cosmos-account",
accountData);
CosmosDBAccountResource account = operation.Value;
```
### 2. Create SQL Database
```csharp
var databaseData = new CosmosDBSqlDatabaseCreateOrUpdateContent(
new CosmosDBSqlDatabaseResourceInfo("my-database"));
var databaseCollection = account.GetCosmosDBSqlDatabases();
var dbOperation = await databaseCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-database",
databaseData);
CosmosDBSqlDatabaseResource database = dbOperation.Value;
```
### 3. Create SQL Container
```csharp
var containerData = new CosmosDBSqlContainerCreateOrUpdateContent(
new CosmosDBSqlContainerResourceInfo("my-container")
{
PartitionKey = new CosmosDBContainerPartitionKey
{
Paths = { "/partitionKey" },
Kind = CosmosDBPartitionKind.Hash
},
IndexingPolicy = new CosmosDBIndexingPolicy
{
Automatic = true,
IndexingMode = CosmosDBIndexingMode.Consistent
},
DefaultTtl = 86400 // 24 hours
});
var containerCollection = database.GetCosmosDBSqlContainers();
var containerOperation = await containerCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-container",
containerData);
CosmosDBSqlContainerResource container = containerOperation.Value;
```
### 4. Configure Throughput
```csharp
// Manual throughput
var throughputData = new ThroughputSettingsUpdateData(
new ThroughputSettingsResourceInfo
{
Throughput = 400
});
// Autoscale throughput
var autoscaleData = new ThroughputSettingsUpdateData(
new ThroughputSettingsResourceInfo
{
AutoscaleSettings = new AutoscaleSettingsResourceInfo
{
MaxThroughput = 4000
}
});
// Apply to database
await database.CreateOrUpdateCosmosDBSqlDatabaseThroughputAsync(
WaitUntil.Completed,
throughputData);
```
### 5. Get Connection Information
```csharp
// Get keys
var keys = await account.GetKeysAsync();
Console.WriteLine($"Primary Key: {keys.Value.PrimaryMasterKey}");
// Get connection strings
var connectionStrings = await account.GetConnectionStringsAsync();
foreach (var cs in connectionStrings.Value.ConnectionStrings)
{
Console.WriteLine($"{cs.Description}: {cs.ConnectionString}");
}
```
## Key Types Reference
| Type | Purpose |
|------|---------|
| `ArmClient` | Entry point for all ARM operations |
| `CosmosDBAccountResource` | Represents a Cosmos DB account |
| `CosmosDBAccountCollection` | Collection for account CRUD |
| `CosmosDBSqlDatabaseResource` | SQL API database |
| `CosmosDBSqlContainerResource` | SQL API container |
| `CosmosDBAccountCreateOrUpdateContent` | Account creation payload |
| `CosmosDBSqlDatabaseCreateOrUpdateContent` | Database creation payload |
| `CosmosDBSqlContainerCreateOrUpdateContent` | Container creation payload |
| `ThroughputSettingsUpdateData` | Throughput configuration |
## Best Practices
1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding
2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel
3. **Use `DefaultAzureCredential`** — never hardcode keys
4. **Handle `RequestFailedException`** for ARM API errors
5. **Use `CreateOrUpdateAsync`** for idempotent operations
6. **Navigate hierarchy** via `Get*` methods (e.g., `account.GetCosmosDBSqlDatabases()`)
## Error Handling
```csharp
using Azure;
try
{
var operation = await accountCollection.CreateOrUpdateAsync(
WaitUntil.Completed, accountName, accountData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
Console.WriteLine("Account already exists");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}
```
## Reference Files
| File | When to Read |
|------|--------------|
| [references/account-management.md](references/account-management.md) | Account CRUD, failover, keys, connection strings, networking |
| [references/sql-resources.md](references/sql-resources.md) | SQL databases, containers, stored procedures, triggers, UDFs |
| [references/throughput.md](references/throughput.md) | Manual/autoscale throughput, migration between modes |
## Related SDKs
| SDK | Purpose | Install |
|-----|---------|---------|
| `Microsoft.Azure.Cosmos` | Data plane (document CRUD, queries) | `dotnet add package Microsoft.Azure.Cosmos` |
| `Azure.ResourceManager.CosmosDB` | Management plane (this SDK) | `dotnet add package Azure.ResourceManager.CosmosDB` |
More agent context in microsoft/agent-skills
211 other files this repository gives its agents, the first 60 shown.
AGENTS.md
Copilot instructions
llms.txt
Skill
- cost-analysis.github/plugins/azure-cost/skills/cost-analysis/SKILL.md
- cost-estimation.github/plugins/azure-cost/skills/cost-estimation/SKILL.md
- cost-governance.github/plugins/azure-cost/skills/cost-governance/SKILL.md
- cost-optimization.github/plugins/azure-cost/skills/cost-optimization/SKILL.md
- azure-kusto-graph.github/plugins/azure-kusto-graph-skills/skills/azure-kusto-graph/SKILL.md
- azure-kusto-irql-graph.github/plugins/azure-kusto-graph-skills/skills/azure-kusto-irql-graph/SKILL.md
- azure-kusto-irql.github/plugins/azure-kusto-graph-skills/skills/azure-kusto-irql/SKILL.md
- azure-local-multi-rack.github/plugins/azure-local-skills/skills/azure-local-multi-rack/SKILL.md
- azure-local.github/plugins/azure-local-skills/skills/azure-local/SKILL.md
- azure-ai-agents-persistent-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-ai-agents-persistent-dotnet/SKILL.md
- azure-ai-document-intelligence-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-ai-document-intelligence-dotnet/SKILL.md
- azure-ai-openai-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-ai-openai-dotnet/SKILL.md
- azure-ai-projects-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-ai-projects-dotnet/SKILL.md
- azure-ai-voicelive-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-ai-voicelive-dotnet/SKILL.md
- azure-eventgrid-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-eventgrid-dotnet/SKILL.md
- azure-eventhub-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-eventhub-dotnet/SKILL.md
- azure-identity-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-identity-dotnet/SKILL.md
- azure-maps-search-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-maps-search-dotnet/SKILL.md
- azure-mgmt-apicenter-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-apicenter-dotnet/SKILL.md
- azure-mgmt-apimanagement-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-apimanagement-dotnet/SKILL.md
- azure-mgmt-applicationinsights-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-applicationinsights-dotnet/SKILL.md
- azure-mgmt-arizeaiobservabilityeval-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.md
- azure-mgmt-botservice-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-botservice-dotnet/SKILL.md
- azure-mgmt-fabric-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-fabric-dotnet/SKILL.md
- azure-mgmt-mongodbatlas-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-mongodbatlas-dotnet/SKILL.md
- azure-mgmt-weightsandbiases-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-weightsandbiases-dotnet/SKILL.md
- azure-resource-manager-durabletask-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-durabletask-dotnet/SKILL.md
- azure-resource-manager-mysql-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-mysql-dotnet/SKILL.md
- azure-resource-manager-playwright-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-playwright-dotnet/SKILL.md
- azure-resource-manager-postgresql-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-postgresql-dotnet/SKILL.md
- azure-resource-manager-redis-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-redis-dotnet/SKILL.md
- azure-resource-manager-sql-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-sql-dotnet/SKILL.md
- azure-search-documents-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-search-documents-dotnet/SKILL.md
- azure-security-keyvault-keys-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-security-keyvault-keys-dotnet/SKILL.md
- azure-servicebus-dotnet.github/plugins/azure-sdk-dotnet/skills/azure-servicebus-dotnet/SKILL.md
- m365-agents-dotnet.github/plugins/azure-sdk-dotnet/skills/m365-agents-dotnet/SKILL.md
- microsoft-azure-webjobs-extensions-authentication-events-dotnet.github/plugins/azure-sdk-dotnet/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md
- azure-ai-agents-persistent-java.github/plugins/azure-sdk-java/skills/azure-ai-agents-persistent-java/SKILL.md
- azure-ai-anomalydetector-java.github/plugins/azure-sdk-java/skills/azure-ai-anomalydetector-java/SKILL.md
- azure-ai-contentsafety-java.github/plugins/azure-sdk-java/skills/azure-ai-contentsafety-java/SKILL.md
- azure-ai-formrecognizer-java.github/plugins/azure-sdk-java/skills/azure-ai-formrecognizer-java/SKILL.md
- azure-ai-projects-java.github/plugins/azure-sdk-java/skills/azure-ai-projects-java/SKILL.md
- azure-ai-vision-imageanalysis-java.github/plugins/azure-sdk-java/skills/azure-ai-vision-imageanalysis-java/SKILL.md
- azure-ai-voicelive-java.github/plugins/azure-sdk-java/skills/azure-ai-voicelive-java/SKILL.md
- azure-appconfiguration-java.github/plugins/azure-sdk-java/skills/azure-appconfiguration-java/SKILL.md
- azure-communication-callautomation-java.github/plugins/azure-sdk-java/skills/azure-communication-callautomation-java/SKILL.md
- azure-communication-callingserver-java.github/plugins/azure-sdk-java/skills/azure-communication-callingserver-java/SKILL.md
- azure-communication-chat-java.github/plugins/azure-sdk-java/skills/azure-communication-chat-java/SKILL.md
- azure-communication-common-java.github/plugins/azure-sdk-java/skills/azure-communication-common-java/SKILL.md
- azure-communication-sms-java.github/plugins/azure-sdk-java/skills/azure-communication-sms-java/SKILL.md
- azure-compute-batch-java.github/plugins/azure-sdk-java/skills/azure-compute-batch-java/SKILL.md
- azure-cosmos-java.github/plugins/azure-sdk-java/skills/azure-cosmos-java/SKILL.md
- azure-data-tables-java.github/plugins/azure-sdk-java/skills/azure-data-tables-java/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

