Skip to content
azure-mgmt-mongodbatlas-dotnet logo

Azure.ResourceManager.MongoDBAtlas SDK

azure-mgmt-mongodbatlas-dotnet

Manage MongoDB Atlas Organizations as Azure ARM resources using Azure.ResourceManager.MongoDBAtlas SDK. Use when creating, updating, listing, or deleting MongoDB Atlas organizations through Azure M...

SKILL.md

Full skill instructions

Azure.ResourceManager.MongoDBAtlas SDK

Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.

Package Information

PropertyValue
PackageAzure.ResourceManager.MongoDBAtlas
Version1.0.0 (GA)
API Version2025-06-01
Resource TypeMongoDB.Atlas/​organizations
NuGetAzure.ResourceManager.MongoDBAtlas

Installation

dotnet add package Azure.ResourceManager.MongoDBAtlas
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager

Important 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.

Authentication

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.MongoDBAtlas;
using Azure.ResourceManager.MongoDBAtlas.Models;

// Create ARM client with DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);

Core Types

TypePurpose
MongoDBAtlasOrganizationResourceARM resource representing an Atlas organization
MongoDBAtlasOrganizationCollectionCollection of organizations in a resource group
MongoDBAtlasOrganizationDataData model for organization resource
MongoDBAtlasOrganizationPropertiesOrganization-specific properties
MongoDBAtlasMarketplaceDetailsAzure Marketplace subscription details
MongoDBAtlasOfferDetailsMarketplace offer configuration
MongoDBAtlasUserDetailsUser information for the organization
MongoDBAtlasPartnerPropertiesMongoDB-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 data

List 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

PropertyTypeDescription
MarketplaceMongoDBAtlasMarketplaceDetailsRequired. Marketplace subscription details
UserMongoDBAtlasUserDetailsRequired. Organization admin user
PartnerPropertiesMongoDBAtlasPartnerPropertiesMongoDB-specific properties
ProvisioningStateMongoDBAtlasResourceProvisioningStateRead-only. Current provisioning state

MongoDBAtlasMarketplaceDetails

PropertyTypeDescription
SubscriptionIdstringRequired. Azure subscription ID for billing
OfferDetailsMongoDBAtlasOfferDetailsRequired. Marketplace offer configuration
SubscriptionStatusMarketplaceSubscriptionStatusRead-only. Subscription status

MongoDBAtlasOfferDetails

PropertyTypeDescription
PublisherIdstringRequired. Publisher ID (typically "mongodb")
OfferIdstringRequired. Offer ID
PlanIdstringRequired. Plan ID
PlanNamestringRequired. Display name of the plan
TermUnitstringRequired. Billing term unit (e.g., "P1M")
TermIdstringRequired. Term identifier

MongoDBAtlasUserDetails

PropertyTypeDescription
EmailAddressstringRequired. User email address
UpnstringRequired. User principal name
FirstNamestringOptional. User first name
LastNamestringOptional. User last name

MongoDBAtlasPartnerProperties

PropertyTypeDescription
OrganizationNamestringName of the MongoDB Atlas organization
OrganizationIdstringRead-only. MongoDB Atlas organization ID

Provisioning States

StateDescription
SucceededResource provisioned successfully
FailedProvisioning failed
CanceledProvisioning was canceled
ProvisioningResource is being provisioned
UpdatingResource is being updated
DeletingResource is being deleted
AcceptedRequest accepted, provisioning starting

Marketplace Subscription Status

StatusDescription
PendingFulfillmentStartSubscription pending activation
SubscribedActive subscription
SuspendedSubscription suspended
UnsubscribedSubscription 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

ErrorCauseSolution
ResourceNotFoundOrganization doesn't existVerify name and resource group
AuthorizationFailedInsufficient permissionsCheck RBAC roles on resource group
InvalidParameterMissing required propertiesEnsure all required fields are set
MarketplaceErrorMarketplace subscription issueVerify offer details and subscription

Related Resources

When to Use

This skill is applicable to execute the workflow or actions described in the overview.

More skills from MudassarAbrar

salesforce-development logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

salesforce-development

Expert patterns for Salesforce platform development including Lightning Web Components (LWC), Apex triggers and classes, REST/Bulk APIs, Connected Apps, and Salesforce DX with scratch orgs and 2nd ...

3 0
View
azure-monitor-opentelemetry-ts logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

azure-monitor-opentelemetry-ts

Instrument applications with Azure Monitor and OpenTelemetry for JavaScript (@azure/monitor-opentelemetry). Use when adding distributed tracing, metrics, and logs to Node.js applications with Appli...

3 0
View
popup-cro logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

popup-cro

Create and optimize popups, modals, overlays, slide-ins, and banners to increase conversions without harming user experience or brand trust.

3 0
View
mtls-configuration logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

mtls-configuration

Configure mutual TLS (mTLS) for zero-trust service-to-service communication. Use when implementing zero-trust networking, certificate management, or securing internal service communication.

3 0
View
azure-cosmos-db-py logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

azure-cosmos-db-py

Build Azure Cosmos DB NoSQL services with Python/FastAPI following production-grade patterns. Use when implementing database client setup with dual auth (DefaultAzureCredential + emulator), service...

3 0
View
terraform-infrastructure logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

terraform-infrastructure

Terraform infrastructure as code workflow for provisioning cloud resources, creating reusable modules, and managing infrastructure at scale.

3 0
View
one-drive-automation logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

one-drive-automation

Automate OneDrive file management, search, uploads, downloads, sharing, permissions, and folder operations via Rube MCP (Composio). Always search tools first for current schemas.

3 0
View
memory-safety-patterns logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

memory-safety-patterns

Implement memory-safe programming with RAII, ownership, smart pointers, and resource management across Rust, C++, and C. Use when writing safe systems code, managing resources, or preventing memory...

3 0
View
fp-ts-errors logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

fp-ts-errors

Handle errors as values using fp-ts Either and TaskEither for cleaner, more predictable TypeScript code. Use when implementing error handling patterns with fp-ts.

3 0
View
framework-migration-code-migrate logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

framework-migration-code-migrate

You are a code migration expert specializing in transitioning codebases between frameworks, languages, versions, and platforms. Generate comprehensive migration plans, automated migration scripts, and

3 0
View
azure-ai-voicelive-java logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

azure-ai-voicelive-java

Real-time, bidirectional voice conversations with AI assistants using WebSocket technology.

3 0
View
agent-memory-mcp logo
MudassarAbrar/SAGE__GEMINI_LIVE_AGENT_HACKATHON

agent-memory-mcp

A hybrid memory system that provides persistent, searchable knowledge management for AI agents (Architecture, Patterns, Decisions).

3 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View