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.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 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 : "admin@example.com" , upn : "admin@example.com" ) { 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 : "newadmin@example.com" , upn : "newadmin@example.com" ) } } ; 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 Microsoft Learn: MongoDB Atlas on Azure API Reference Azure SDK for .NET When to Use This skill is applicable to execute the workflow or actions described in the overview.