Azure Resource Manager SDK for Fabric in .NET.
50
55%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./plugins/AI-Agents-Safe-Coding-Skills/skills/azure-mgmt-fabric-dotnet/SKILL.mdThe canonical home for this skill is azure-mgmt-fabric-dotnet in administrakt0r/AI-Agents-Safe-Coding-Skills
Management plane SDK for provisioning and managing Microsoft Fabric capacity resources via Azure Resource Manager.
Management Plane Only This SDK manages Fabric capacities (compute resources). For working with Fabric workspaces, lakehouses, warehouses, and data items, use the Microsoft Fabric REST API or data plane SDKs.
dotnet add package Azure.ResourceManager.Fabric
dotnet add package Azure.IdentityCurrent Version: 1.0.0 (GA - September 2025)
API Version: 2023-11-01
Target Frameworks: .NET 8.0, .NET Standard 2.0
AZURE_SUBSCRIPTION_ID=<your-subscription-id>
# For service principal auth (optional)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Fabric;
// Always use DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);
// Get subscription
var subscription = await armClient.GetDefaultSubscriptionAsync();ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── FabricCapacityResourceusing Azure.ResourceManager.Fabric;
using Azure.ResourceManager.Fabric.Models;
using Azure.Core;
// Get resource group
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");
// Define capacity configuration
var administration = new FabricCapacityAdministration(
new[] { "admin@contoso.com" } // Capacity administrators (UPNs or object IDs)
);
var properties = new FabricCapacityProperties(administration);
var sku = new FabricSku("F64", FabricSkuTier.Fabric);
var capacityData = new FabricCapacityData(
AzureLocation.WestUS2,
properties,
sku)
{
Tags = { ["Environment"] = "Production" }
};
// Create capacity (long-running operation)
var capacityCollection = resourceGroup.Value.GetFabricCapacities();
var operation = await capacityCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-fabric-capacity",
capacityData);
FabricCapacityResource capacity = operation.Value;
Console.WriteLine($"Created capacity: {capacity.Data.Name}");
Console.WriteLine($"State: {capacity.Data.Properties.State}");// Get existing capacity
var capacity = await resourceGroup.Value
.GetFabricCapacityAsync("my-fabric-capacity");
Console.WriteLine($"Name: {capacity.Value.Data.Name}");
Console.WriteLine($"Location: {capacity.Value.Data.Location}");
Console.WriteLine($"SKU: {capacity.Value.Data.Sku.Name}");
Console.WriteLine($"State: {capacity.Value.Data.Properties.State}");
Console.WriteLine($"Provisioning State: {capacity.Value.Data.Properties.ProvisioningState}");var capacity = await resourceGroup.Value
.GetFabricCapacityAsync("my-fabric-capacity");
var patch = new FabricCapacityPatch
{
Sku = new FabricSku("F128", FabricSkuTier.Fabric), // Scale up
Properties = new FabricCapacityUpdateProperties
{
Administration = new FabricCapacityAdministration(
new[] { "admin@contoso.com", "newadmin@contoso.com" }
)
}
};
var updateOperation = await capacity.Value.UpdateAsync(
WaitUntil.Completed,
patch);
Console.WriteLine($"Updated SKU: {updateOperation.Value.Data.Sku.Name}");// Suspend capacity (stop billing for compute)
await capacity.Value.SuspendAsync(WaitUntil.Completed);
Console.WriteLine("Capacity suspended");
// Resume capacity
var resumeOperation = await capacity.Value.ResumeAsync(WaitUntil.Completed);
Console.WriteLine($"Capacity resumed. State: {resumeOperation.Value.Data.Properties.State}");await capacity.Value.DeleteAsync(WaitUntil.Completed);
Console.WriteLine("Capacity deleted");// In a resource group
await foreach (var cap in resourceGroup.Value.GetFabricCapacities())
{
Console.WriteLine($"- {cap.Data.Name} ({cap.Data.Sku.Name})");
}
// In a subscription
await foreach (var cap in subscription.GetFabricCapacitiesAsync())
{
Console.WriteLine($"- {cap.Data.Name} in {cap.Data.Location}");
}var checkContent = new FabricNameAvailabilityContent
{
Name = "my-new-capacity",
ResourceType = "Microsoft.Fabric/capacities"
};
var result = await subscription.CheckFabricCapacityNameAvailabilityAsync(
AzureLocation.WestUS2,
checkContent);
if (result.Value.IsNameAvailable == true)
{
Console.WriteLine("Name is available!");
}
else
{
Console.WriteLine($"Name unavailable: {result.Value.Reason} - {result.Value.Message}");
}// List all SKUs available in subscription
await foreach (var skuDetails in subscription.GetSkusFabricCapacitiesAsync())
{
Console.WriteLine($"SKU: {skuDetails.Name}");
Console.WriteLine($" Resource Type: {skuDetails.ResourceType}");
foreach (var location in skuDetails.Locations)
{
Console.WriteLine($" Location: {location}");
}
}
// List SKUs available for an existing capacity (for scaling)
await foreach (var skuDetails in capacity.Value.GetSkusForCapacityAsync())
{
Console.WriteLine($"Can scale to: {skuDetails.Sku.Name}");
}| SKU Name | Capacity Units (CU) | Power BI Equivalent |
|---|---|---|
| F2 | 2 | - |
| F4 | 4 | - |
| F8 | 8 | EM1/A1 |
| F16 | 16 | EM2/A2 |
| F32 | 32 | EM3/A3 |
| F64 | 64 | P1/A4 |
| F128 | 128 | P2/A5 |
| F256 | 256 | P3/A6 |
| F512 | 512 | P4/A7 |
| F1024 | 1024 | P5/A8 |
| F2048 | 2048 | - |
| Type | Purpose |
|---|---|
ArmClient | Entry point for all ARM operations |
FabricCapacityResource | Represents a Fabric capacity instance |
FabricCapacityCollection | Collection for capacity CRUD operations |
FabricCapacityData | Capacity creation/read data model |
FabricCapacityPatch | Capacity update payload |
FabricCapacityProperties | Capacity properties (administration, state) |
FabricCapacityAdministration | Admin members configuration |
FabricSku | SKU configuration (name and tier) |
FabricSkuTier | Pricing tier (currently only "Fabric") |
FabricProvisioningState | Provisioning states (Succeeded, Failed, etc.) |
FabricResourceState | Resource states (Active, Suspended, etc.) |
FabricNameAvailabilityContent | Name availability check request |
FabricNameAvailabilityResult | Name availability check response |
FabricProvisioningState)Succeeded - Operation completed successfullyFailed - Operation failedCanceled - Operation was canceledDeleting - Capacity is being deletedProvisioning - Initial provisioning in progressUpdating - Update operation in progressFabricResourceState)Active - Capacity is running and availableProvisioning - Being provisionedFailed - In failed stateUpdating - Being updatedDeleting - Being deletedSuspending - Transitioning to suspendedSuspended - Suspended (not billing for compute)Pausing - Transitioning to pausedPaused - PausedResuming - Resuming from suspended/pausedScaling - Scaling to different SKUPreparing - Preparing resourcesWaitUntil.Completed for operations that must finish before proceedingWaitUntil.Started when you want to poll manually or run operations in parallelDefaultAzureCredential — never hardcode credentialsRequestFailedException for ARM API errorsCreateOrUpdateAsync for idempotent operationsusing Azure;
try
{
var operation = await capacityCollection.CreateOrUpdateAsync(
WaitUntil.Completed, capacityName, capacityData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
Console.WriteLine("Capacity already exists or conflict");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
Console.WriteLine($"Invalid configuration: {ex.Message}");
}
catch (RequestFailedException ex) when (ex.Status == 403)
{
Console.WriteLine("Insufficient permissions or quota exceeded");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}GetSkusFabricCapacitiesAsync to check| SDK | Purpose | Install |
|---|---|---|
Azure.ResourceManager.Fabric | Management plane (this SDK) | dotnet add package Azure.ResourceManager.Fabric |
Microsoft.Fabric.Api | Data plane operations (beta) | dotnet add package Microsoft.Fabric.Api --prerelease |
Azure.ResourceManager | Core ARM SDK | dotnet add package Azure.ResourceManager |
Azure.Identity | Authentication | dotnet add package Azure.Identity |
This skill is applicable to execute the workflow or actions described in the overview.
57c135b
Canonical home
since Aug 19, 2026
Also appears in
since Aug 19, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.