[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-a2fab1da-a822-4e12-8c66-613d718383a6":3,"$f48Qf2NTcdjCqYPLQulqdE1qnFj_wPxTvp3ijkd49Ifc":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"a2fab1da-a822-4e12-8c66-613d718383a6","azure-mgmt-mongodbatlas-dotnet","通过Azure Marketplace统一计费，将MongoDB Atlas组织作为Azure ARM资源进行管理。","cat_coding_backend","mod_coding","sickn33,coding","---\nname: azure-mgmt-mongodbatlas-dotnet\ndescription: \"Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.\"\nrisk: unknown\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Azure.ResourceManager.MongoDBAtlas SDK\n\nManage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.\n\n## Package Information\n\n| Property | Value |\n|----------|-------|\n| Package | `Azure.ResourceManager.MongoDBAtlas` |\n| Version | 1.0.0 (GA) |\n| API Version | 2025-06-01 |\n| Resource Type | `MongoDB.Atlas\u002Forganizations` |\n| NuGet | [Azure.ResourceManager.MongoDBAtlas](https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FAzure.ResourceManager.MongoDBAtlas) |\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.MongoDBAtlas\ndotnet add package Azure.Identity\ndotnet add package Azure.ResourceManager\n```\n\n## Important Scope Limitation\n\nThis SDK manages **MongoDB Atlas Organizations as Azure ARM resources** for marketplace integration. It does NOT directly manage:\n- Atlas clusters\n- Databases\n- Collections\n- Users\u002Froles\n\nFor cluster management, use the MongoDB Atlas API directly after creating the organization.\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.MongoDBAtlas;\nusing Azure.ResourceManager.MongoDBAtlas.Models;\n\n\u002F\u002F Create ARM client with DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nvar armClient = new ArmClient(credential);\n```\n\n## Core Types\n\n| Type | Purpose |\n|------|---------|\n| `MongoDBAtlasOrganizationResource` | ARM resource representing an Atlas organization |\n| `MongoDBAtlasOrganizationCollection` | Collection of organizations in a resource group |\n| `MongoDBAtlasOrganizationData` | Data model for organization resource |\n| `MongoDBAtlasOrganizationProperties` | Organization-specific properties |\n| `MongoDBAtlasMarketplaceDetails` | Azure Marketplace subscription details |\n| `MongoDBAtlasOfferDetails` | Marketplace offer configuration |\n| `MongoDBAtlasUserDetails` | User information for the organization |\n| `MongoDBAtlasPartnerProperties` | MongoDB-specific properties (org name, ID) |\n\n## Workflows\n\n### Get Organization Collection\n\n```csharp\n\u002F\u002F Get resource group\nvar subscription = await armClient.GetDefaultSubscriptionAsync();\nvar resourceGroup = await subscription.GetResourceGroupAsync(\"my-resource-group\");\n\n\u002F\u002F Get organizations collection\nMongoDBAtlasOrganizationCollection organizations = \n    resourceGroup.Value.GetMongoDBAtlasOrganizations();\n```\n\n### Create Organization\n\n```csharp\nvar organizationName = \"my-atlas-org\";\nvar location = AzureLocation.EastUS2;\n\n\u002F\u002F Build organization data\nvar organizationData = new MongoDBAtlasOrganizationData(location)\n{\n    Properties = new MongoDBAtlasOrganizationProperties(\n        marketplace: new MongoDBAtlasMarketplaceDetails(\n            subscriptionId: \"your-azure-subscription-id\",\n            offerDetails: new MongoDBAtlasOfferDetails(\n                publisherId: \"mongodb\",\n                offerId: \"mongodb_atlas_azure_native_prod\",\n                planId: \"private_plan\",\n                planName: \"Pay as You Go (Free) (Private)\",\n                termUnit: \"P1M\",\n                termId: \"gmz7xq9ge3py\"\n            )\n        ),\n        user: new MongoDBAtlasUserDetails(\n            emailAddress: \"admin@example.com\",\n            upn: \"admin@example.com\"\n        )\n        {\n            FirstName = \"Admin\",\n            LastName = \"User\"\n        }\n    )\n    {\n        PartnerProperties = new MongoDBAtlasPartnerProperties\n        {\n            OrganizationName = organizationName\n        }\n    },\n    Tags = { [\"Environment\"] = \"Production\" }\n};\n\n\u002F\u002F Create the organization (long-running operation)\nvar operation = await organizations.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    organizationName,\n    organizationData\n);\n\nMongoDBAtlasOrganizationResource organization = operation.Value;\nConsole.WriteLine($\"Created: {organization.Id}\");\n```\n\n### Get Existing Organization\n\n```csharp\n\u002F\u002F Option 1: From collection\nMongoDBAtlasOrganizationResource org = \n    await organizations.GetAsync(\"my-atlas-org\");\n\n\u002F\u002F Option 2: From resource identifier\nvar resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(\n    subscriptionId: \"subscription-id\",\n    resourceGroupName: \"my-resource-group\",\n    organizationName: \"my-atlas-org\"\n);\nMongoDBAtlasOrganizationResource org2 = \n    armClient.GetMongoDBAtlasOrganizationResource(resourceId);\nawait org2.GetAsync(); \u002F\u002F Fetch data\n```\n\n### List Organizations\n\n```csharp\n\u002F\u002F List in resource group\nawait foreach (var org in organizations.GetAllAsync())\n{\n    Console.WriteLine($\"Org: {org.Data.Name}\");\n    Console.WriteLine($\"  Location: {org.Data.Location}\");\n    Console.WriteLine($\"  State: {org.Data.Properties?.ProvisioningState}\");\n}\n\n\u002F\u002F List across subscription\nawait foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync())\n{\n    Console.WriteLine($\"Org: {org.Data.Name} in {org.Data.Id}\");\n}\n```\n\n### Update Tags\n\n```csharp\n\u002F\u002F Add a single tag\nawait organization.AddTagAsync(\"CostCenter\", \"12345\");\n\n\u002F\u002F Replace all tags\nawait organization.SetTagsAsync(new Dictionary\u003Cstring, string>\n{\n    [\"Environment\"] = \"Production\",\n    [\"Team\"] = \"Platform\"\n});\n\n\u002F\u002F Remove a tag\nawait organization.RemoveTagAsync(\"OldTag\");\n```\n\n### Update Organization Properties\n\n```csharp\nvar patch = new MongoDBAtlasOrganizationPatch\n{\n    Tags = { [\"UpdatedAt\"] = DateTime.UtcNow.ToString(\"o\") },\n    Properties = new MongoDBAtlasOrganizationUpdateProperties\n    {\n        \u002F\u002F Update user details if needed\n        User = new MongoDBAtlasUserDetails(\n            emailAddress: \"newadmin@example.com\",\n            upn: \"newadmin@example.com\"\n        )\n    }\n};\n\nvar updateOperation = await organization.UpdateAsync(\n    WaitUntil.Completed,\n    patch\n);\n```\n\n### Delete Organization\n\n```csharp\n\u002F\u002F Delete (long-running operation)\nawait organization.DeleteAsync(WaitUntil.Completed);\n```\n\n## Model Properties Reference\n\n### MongoDBAtlasOrganizationProperties\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `Marketplace` | `MongoDBAtlasMarketplaceDetails` | Required. Marketplace subscription details |\n| `User` | `MongoDBAtlasUserDetails` | Required. Organization admin user |\n| `PartnerProperties` | `MongoDBAtlasPartnerProperties` | MongoDB-specific properties |\n| `ProvisioningState` | `MongoDBAtlasResourceProvisioningState` | Read-only. Current provisioning state |\n\n### MongoDBAtlasMarketplaceDetails\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `SubscriptionId` | `string` | Required. Azure subscription ID for billing |\n| `OfferDetails` | `MongoDBAtlasOfferDetails` | Required. Marketplace offer configuration |\n| `SubscriptionStatus` | `MarketplaceSubscriptionStatus` | Read-only. Subscription status |\n\n### MongoDBAtlasOfferDetails\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `PublisherId` | `string` | Required. Publisher ID (typically \"mongodb\") |\n| `OfferId` | `string` | Required. Offer ID |\n| `PlanId` | `string` | Required. Plan ID |\n| `PlanName` | `string` | Required. Display name of the plan |\n| `TermUnit` | `string` | Required. Billing term unit (e.g., \"P1M\") |\n| `TermId` | `string` | Required. Term identifier |\n\n### MongoDBAtlasUserDetails\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `EmailAddress` | `string` | Required. User email address |\n| `Upn` | `string` | Required. User principal name |\n| `FirstName` | `string` | Optional. User first name |\n| `LastName` | `string` | Optional. User last name |\n\n### MongoDBAtlasPartnerProperties\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `OrganizationName` | `string` | Name of the MongoDB Atlas organization |\n| `OrganizationId` | `string` | Read-only. MongoDB Atlas organization ID |\n\n## Provisioning States\n\n| State | Description |\n|-------|-------------|\n| `Succeeded` | Resource provisioned successfully |\n| `Failed` | Provisioning failed |\n| `Canceled` | Provisioning was canceled |\n| `Provisioning` | Resource is being provisioned |\n| `Updating` | Resource is being updated |\n| `Deleting` | Resource is being deleted |\n| `Accepted` | Request accepted, provisioning starting |\n\n## Marketplace Subscription Status\n\n| Status | Description |\n|--------|-------------|\n| `PendingFulfillmentStart` | Subscription pending activation |\n| `Subscribed` | Active subscription |\n| `Suspended` | Subscription suspended |\n| `Unsubscribed` | Subscription canceled |\n\n## Best Practices\n\n### Use Async Methods\n\n```csharp\n\u002F\u002F Prefer async for all operations\nvar org = await organizations.GetAsync(\"my-org\");\nawait org.Value.AddTagAsync(\"key\", \"value\");\n```\n\n### Handle Long-Running Operations\n\n```csharp\n\u002F\u002F Wait for completion\nvar operation = await organizations.CreateOrUpdateAsync(\n    WaitUntil.Completed,  \u002F\u002F Blocks until done\n    name,\n    data\n);\n\n\u002F\u002F Or start and poll later\nvar operation = await organizations.CreateOrUpdateAsync(\n    WaitUntil.Started,  \u002F\u002F Returns immediately\n    name,\n    data\n);\n\n\u002F\u002F Poll for completion\nwhile (!operation.HasCompleted)\n{\n    await Task.Delay(TimeSpan.FromSeconds(5));\n    await operation.UpdateStatusAsync();\n}\n```\n\n### Check Provisioning State\n\n```csharp\nvar org = await organizations.GetAsync(\"my-org\");\nif (org.Value.Data.Properties?.ProvisioningState == \n    MongoDBAtlasResourceProvisioningState.Succeeded)\n{\n    Console.WriteLine(\"Organization is ready\");\n}\n```\n\n### Use Resource Identifiers\n\n```csharp\n\u002F\u002F Create identifier without API call\nvar resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(\n    subscriptionId,\n    resourceGroupName,\n    organizationName\n);\n\n\u002F\u002F Get resource handle (no data yet)\nvar orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId);\n\n\u002F\u002F Fetch data when needed\nvar response = await orgResource.GetAsync();\n```\n\n## Common Errors\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `ResourceNotFound` | Organization doesn't exist | Verify name and resource group |\n| `AuthorizationFailed` | Insufficient permissions | Check RBAC roles on resource group |\n| `InvalidParameter` | Missing required properties | Ensure all required fields are set |\n| `MarketplaceError` | Marketplace subscription issue | Verify offer details and subscription |\n\n## Related Resources\n\n- [Microsoft Learn: MongoDB Atlas on Azure](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fpartner-solutions\u002Fmongodb-atlas\u002F)\n- [API Reference](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fapi\u002Fazure.resourcemanager.mongodbatlas)\n- [Azure SDK for .NET](https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Ftree\u002Fmain\u002Fsdk\u002Fmongodbatlas)\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,198,974,"2026-05-16 13:07:06",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"d51d7806-e5ab-4cee-85c0-2522c68d5e70","1.0.0","azure-mgmt-mongodbatlas-dotnet.zip",3385,"uploads\u002Fskills\u002Fa2fab1da-a822-4e12-8c66-613d718383a6\u002Fazure-mgmt-mongodbatlas-dotnet.zip","549e0b5f4158ff54bef71decd19589fcd1b212d52248cfa65dd3d2e0f8db5ffe","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":11111}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]