Azure Mgmt Mongodbatlas Dotnet
MicrosoftOfficialCreated by Microsoft
- Skill
- Tool integration
- Cloud and DevOps
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The Azure.ResourceManager.MongoDBAtlas SDK enables developers to manage MongoDB Atlas organizations directly within the Azure ecosystem. By treating Atlas organizations as Azure ARM resources, this tool facilitates unified billing and lifecycle management through the Azure Marketplace. It is specifically designed for the administrative management of the organization resource itself, such as creation, updates, and deletion, rather than the management of internal database clusters or collections.
What it does
- Create and configure MongoDB Atlas organizations as Azure resources
- List and retrieve details for existing Atlas organizations
- Update organization properties and metadata tags
- Delete Atlas organization resources from Azure
- Integrate with Azure Marketplace billing and subscription workflows
- Handle long-running provisioning operations for organization resources
When to use it
- When you need to automate the provisioning of MongoDB Atlas organizations via Azure ARM
- When integrating MongoDB Atlas billing with Azure Marketplace subscriptions
- When managing organization-level metadata and tags within an Azure environment
- When building .NET applications that require programmatic control over Atlas organization lifecycles
Advantages
- Native integration with Azure Resource Manager (ARM) workflows
- Unified billing management through Azure Marketplace
- Strongly-typed .NET models for organization properties and marketplace details
- Support for asynchronous operations and polling for long-running tasks
Usage examples
- “How do I create a new MongoDB Atlas organization using the .NET SDK?”
- The agent provides a code snippet demonstrating how to instantiate MongoDBAtlasOrganizationData with marketplace and user details, then calls CreateOrUpdateAsync to provision the resource.
- “List all MongoDB Atlas organizations in my current Azure resource group.”
- The agent shows how to retrieve the MongoDBAtlasOrganizationCollection from a resource group and iterate through the results using GetAllAsync.
- “How can I update the tags for an existing MongoDB Atlas organization?”
- The agent demonstrates using the AddTagAsync, SetTagsAsync, or RemoveTagAsync methods on an existing MongoDBAtlasOrganizationResource instance.
- “Can I use this SDK to manage my MongoDB Atlas database clusters?”
- The agent clarifies that this SDK is limited to managing the organization resource and advises using the MongoDB Atlas API directly for cluster and database management.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/microsoft/azure-mgmt-mongodbatlas-dotnet/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-mgmt-mongodbatlas-dotnet.zip -d .agents/skills
Documentation by Microsoft
Azure.ResourceManager.MongoDBAtlas SDK
Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.
Package Information
| Property | Value |
|---|---|
| Package | Azure.ResourceManager.MongoDBAtlas |
| Version | 1.0.0 (GA) |
| API Version | 2025-06-01 |
| Resource Type | MongoDB.Atlas/organizations |
| NuGet | Azure.ResourceManager.MongoDBAtlas |
Installation
dotnet add package Azure.ResourceManager.MongoDBAtlas
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManagerImportant Scope Limitation
This SDK manages MongoDB Atlas Organizations as Azure ARM resources for marketplace integration. It does NOT directly manage:
Atlas clusters
Databases
Collections
Users/roles
For cluster management, use the MongoDB Atlas API directly after creating the organization.
Environment Variables
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription ID
AZURE_RESOURCE_GROUP=<your-resource-group> # Required: Azure resource group name
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
AZURE_TENANT_ID=<your-tenant-id> # For service principal auth (optional)
AZURE_CLIENT_ID=<your-client-id> # For service principal auth (optional)
AZURE_CLIENT_SECRET=<your-client-secret> # For service principal auth (optional)Authentication
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.MongoDBAtlas;
using Azure.ResourceManager.MongoDBAtlas.Models;
// 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);Core Types
| Type | Purpose |
|---|---|
MongoDBAtlasOrganizationResource | ARM resource representing an Atlas organization |
MongoDBAtlasOrganizationCollection | Collection of organizations in a resource group |
MongoDBAtlasOrganizationData | Data model for organization resource |
MongoDBAtlasOrganizationProperties | Organization-specific properties |
MongoDBAtlasMarketplaceDetails | Azure Marketplace subscription details |
MongoDBAtlasOfferDetails | Marketplace offer configuration |
MongoDBAtlasUserDetails | User information for the organization |
MongoDBAtlasPartnerProperties | MongoDB-specific properties (org name, ID) |
Workflows
Get Organization Collection
// Get resource group
var subscription = await armClient.GetDefaultSubscriptionAsync();
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");
// Get organizations collection
MongoDBAtlasOrganizationCollection organizations =
resourceGroup.Value.GetMongoDBAtlasOrganizations();Create Organization
var organizationName = "my-atlas-org";
var location = AzureLocation.EastUS2;
// Build organization data
var organizationData = new MongoDBAtlasOrganizationData(location)
{
Properties = new MongoDBAtlasOrganizationProperties(
marketplace: new MongoDBAtlasMarketplaceDetails(
subscriptionId: "your-azure-subscription-id",
offerDetails: new MongoDBAtlasOfferDetails(
publisherId: "mongodb",
offerId: "mongodb_atlas_azure_native_prod",
planId: "private_plan",
planName: "Pay as You Go (Free) (Private)",
termUnit: "P1M",
termId: "gmz7xq9ge3py"
)
),
user: new MongoDBAtlasUserDetails(
emailAddress: "[email protected]",
upn: "[email protected]"
)
{
FirstName = "Admin",
LastName = "User"
}
)
{
PartnerProperties = new MongoDBAtlasPartnerProperties
{
OrganizationName = organizationName
}
},
Tags = { ["Environment"] = "Production" }
};
// Create the organization (long-running operation)
var operation = await organizations.CreateOrUpdateAsync(
WaitUntil.Completed,
organizationName,
organizationData
);
MongoDBAtlasOrganizationResource organization = operation.Value;
Console.WriteLine($"Created: {organization.Id}");Get Existing Organization
// Option 1: From collection
MongoDBAtlasOrganizationResource org =
await organizations.GetAsync("my-atlas-org");
// Option 2: From resource identifier
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
subscriptionId: "subscription-id",
resourceGroupName: "my-resource-group",
organizationName: "my-atlas-org"
);
MongoDBAtlasOrganizationResource org2 =
armClient.GetMongoDBAtlasOrganizationResource(resourceId);
await org2.GetAsync(); // Fetch dataList Organizations
// List in resource group
await foreach (var org in organizations.GetAllAsync())
{
Console.WriteLine($"Org: {org.Data.Name}");
Console.WriteLine($" Location: {org.Data.Location}");
Console.WriteLine($" State: {org.Data.Properties?.ProvisioningState}");
}
// List across subscription
await foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync())
{
Console.WriteLine($"Org: {org.Data.Name} in {org.Data.Id}");
}Update Tags
// Add a single tag
await organization.AddTagAsync("CostCenter", "12345");
// Replace all tags
await organization.SetTagsAsync(new Dictionary<string, string>
{
["Environment"] = "Production",
["Team"] = "Platform"
});
// Remove a tag
await organization.RemoveTagAsync("OldTag");Update Organization Properties
var patch = new MongoDBAtlasOrganizationPatch
{
Tags = { ["UpdatedAt"] = DateTime.UtcNow.ToString("o") },
Properties = new MongoDBAtlasOrganizationUpdateProperties
{
// Update user details if needed
User = new MongoDBAtlasUserDetails(
emailAddress: "[email protected]",
upn: "[email protected]"
)
}
};
var updateOperation = await organization.UpdateAsync(
WaitUntil.Completed,
patch
);Delete Organization
// Delete (long-running operation)
await organization.DeleteAsync(WaitUntil.Completed);Model Properties Reference
MongoDBAtlasOrganizationProperties
| Property | Type | Description |
|---|---|---|
Marketplace | MongoDBAtlasMarketplaceDetails | Required. Marketplace subscription details |
User | MongoDBAtlasUserDetails | Required. Organization admin user |
PartnerProperties | MongoDBAtlasPartnerProperties | MongoDB-specific properties |
ProvisioningState | MongoDBAtlasResourceProvisioningState | Read-only. Current provisioning state |
MongoDBAtlasMarketplaceDetails
| Property | Type | Description |
|---|---|---|
SubscriptionId | string | Required. Azure subscription ID for billing |
OfferDetails | MongoDBAtlasOfferDetails | Required. Marketplace offer configuration |
SubscriptionStatus | MarketplaceSubscriptionStatus | Read-only. Subscription status |
MongoDBAtlasOfferDetails
| Property | Type | Description |
|---|---|---|
PublisherId | string | Required. Publisher ID (typically "mongodb") |
OfferId | string | Required. Offer ID |
PlanId | string | Required. Plan ID |
PlanName | string | Required. Display name of the plan |
TermUnit | string | Required. Billing term unit (e.g., "P1M") |
TermId | string | Required. Term identifier |
MongoDBAtlasUserDetails
| Property | Type | Description |
|---|---|---|
EmailAddress | string | Required. User email address |
Upn | string | Required. User principal name |
FirstName | string | Optional. User first name |
LastName | string | Optional. User last name |
MongoDBAtlasPartnerProperties
| Property | Type | Description |
|---|---|---|
OrganizationName | string | Name of the MongoDB Atlas organization |
OrganizationId | string | Read-only. MongoDB Atlas organization ID |
Provisioning States
| State | Description |
|---|---|
Succeeded | Resource provisioned successfully |
Failed | Provisioning failed |
Canceled | Provisioning was canceled |
Provisioning | Resource is being provisioned |
Updating | Resource is being updated |
Deleting | Resource is being deleted |
Accepted | Request accepted, provisioning starting |
Marketplace Subscription Status
| Status | Description |
|---|---|
PendingFulfillmentStart | Subscription pending activation |
Subscribed | Active subscription |
Suspended | Subscription suspended |
Unsubscribed | Subscription canceled |
Best Practices
Use Async Methods
// Prefer async for all operations
var org = await organizations.GetAsync("my-org");
await org.Value.AddTagAsync("key", "value");Handle Long-Running Operations
// Wait for completion
var operation = await organizations.CreateOrUpdateAsync(
WaitUntil.Completed, // Blocks until done
name,
data
);
// Or start and poll later
var operation = await organizations.CreateOrUpdateAsync(
WaitUntil.Started, // Returns immediately
name,
data
);
// Poll for completion
while (!operation.HasCompleted)
{
await Task.Delay(TimeSpan.FromSeconds(5));
await operation.UpdateStatusAsync();
}Check Provisioning State
var org = await organizations.GetAsync("my-org");
if (org.Value.Data.Properties?.ProvisioningState ==
MongoDBAtlasResourceProvisioningState.Succeeded)
{
Console.WriteLine("Organization is ready");
}Use Resource Identifiers
// Create identifier without API call
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
subscriptionId,
resourceGroupName,
organizationName
);
// Get resource handle (no data yet)
var orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId);
// Fetch data when needed
var response = await orgResource.GetAsync();Common Errors
| Error | Cause | Solution |
|---|---|---|
ResourceNotFound | Organization doesn't exist | Verify name and resource group |
AuthorizationFailed | Insufficient permissions | Check RBAC roles on resource group |
InvalidParameter | Missing required properties | Ensure all required fields are set |
MarketplaceError | Marketplace subscription issue | Verify offer details and subscription |
Related Resources
Files
- ATTRIBUTION.mdAdded by AutoGineer1001 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md11.6 KiB
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/azure-sdk-dotnet/skills/azure-mgmt-mongodbatlas-dotnet · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-mgmt-mongodbatlas-dotnet.zip