Agent Skillsmicrosoft/skills › azure-mgmt-apicenter-dotnet

azure-mgmt-apicenter-dotnet

GitHub

Azure API Center .NET SDK,用于集中管理API库存、治理、版本控制和发现。支持创建服务、工作区、API定义及元数据架构,实现企业级API目录与全生命周期管理。

.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-apicenter-dotnet/SKILL.md microsoft/skills

Trigger Scenarios

API Center ApiCenterService API inventory API governance API versioning

Install

npx skills add microsoft/skills --skill azure-mgmt-apicenter-dotnet -g -y
More Options

Non-standard path

npx skills add https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-apicenter-dotnet -g -y

Use without installing

npx skills use microsoft/skills@azure-mgmt-apicenter-dotnet

指定 Agent (Claude Code)

npx skills add microsoft/skills --skill azure-mgmt-apicenter-dotnet -a claude-code -g -y

安装 repo 全部 skill

npx skills add microsoft/skills --all -g -y

预览 repo 内 skill

npx skills add microsoft/skills --list

SKILL.md

Frontmatter
{
    "name": "azure-mgmt-apicenter-dotnet",
    "license": "MIT",
    "metadata": {
        "author": "Microsoft",
        "package": "Azure.ResourceManager.ApiCenter",
        "version": "1.0.0"
    },
    "description": "Azure API Center SDK for .NET. Centralized API inventory management with governance, versioning, and discovery. Use for creating API services, workspaces, APIs, versions, definitions, environments, deployments, and metadata schemas. Triggers: \"API Center\", \"ApiCenterService\", \"ApiCenterWorkspace\", \"ApiCenterApi\", \"API inventory\", \"API governance\", \"API versioning\", \"API catalog\", \"API discovery\".\n"
}

Azure.ResourceManager.ApiCenter (.NET)

Centralized API inventory and governance SDK for managing APIs across your organization.

Installation

dotnet add package Azure.ResourceManager.ApiCenter
dotnet add package Azure.Identity

Current Version: v1.0.0 (GA)
API Version: 2024-03-01

Environment Variables

AZURE_SUBSCRIPTION_ID=<your-subscription-id>  # Required: Azure subscription ID
AZURE_RESOURCE_GROUP=<your-resource-group>  # Required: resource group name
AZURE_APICENTER_SERVICE_NAME=<your-apicenter-service>  # Required: API Center service name
AZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production

Authentication

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.ApiCenter;

// 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();
ArmClient client = new ArmClient(credential);

Resource Hierarchy

Subscription
└── ResourceGroup
    └── ApiCenterService                    # API inventory service
        ├── Workspace                       # Logical grouping of APIs
        │   ├── Api                         # API definition
        │   │   └── ApiVersion              # Version of the API
        │   │       └── ApiDefinition       # OpenAPI/GraphQL/etc specification
        │   ├── Environment                 # Deployment target (dev/staging/prod)
        │   └── Deployment                  # API deployed to environment
        └── MetadataSchema                  # Custom metadata definitions

Core Workflows

1. Create API Center Service

using Azure.ResourceManager.ApiCenter;
using Azure.ResourceManager.ApiCenter.Models;

ResourceGroupResource resourceGroup = await client
    .GetDefaultSubscriptionAsync()
    .Result
    .GetResourceGroupAsync("my-resource-group");

ApiCenterServiceCollection services = resourceGroup.GetApiCenterServices();

ApiCenterServiceData data = new ApiCenterServiceData(AzureLocation.EastUS)
{
    Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned)
};

ArmOperation<ApiCenterServiceResource> operation = await services
    .CreateOrUpdateAsync(WaitUntil.Completed, "my-api-center", data);

ApiCenterServiceResource service = operation.Value;

2. Create Workspace

ApiCenterWorkspaceCollection workspaces = service.GetApiCenterWorkspaces();

ApiCenterWorkspaceData workspaceData = new ApiCenterWorkspaceData
{
    Title = "Engineering APIs",
    Description = "APIs owned by the engineering team"
};

ArmOperation<ApiCenterWorkspaceResource> operation = await workspaces
    .CreateOrUpdateAsync(WaitUntil.Completed, "engineering", workspaceData);

ApiCenterWorkspaceResource workspace = operation.Value;

3. Create API

ApiCenterApiCollection apis = workspace.GetApiCenterApis();

ApiCenterApiData apiData = new ApiCenterApiData
{
    Title = "Orders API",
    Description = "API for managing customer orders",
    Kind = ApiKind.Rest,
    LifecycleStage = ApiLifecycleStage.Production,
    TermsOfService = new ApiTermsOfService
    {
        Uri = new Uri("https://example.com/terms")
    },
    ExternalDocumentation = 
    {
        new ApiExternalDocumentation
        {
            Title = "Documentation",
            Uri = new Uri("https://docs.example.com/orders")
        }
    },
    Contacts =
    {
        new ApiContact
        {
            Name = "API Support",
            Email = "api-support@example.com"
        }
    }
};

// Add custom metadata
apiData.CustomProperties = BinaryData.FromObjectAsJson(new
{
    team = "orders-team",
    costCenter = "CC-1234"
});

ArmOperation<ApiCenterApiResource> operation = await apis
    .CreateOrUpdateAsync(WaitUntil.Completed, "orders-api", apiData);

ApiCenterApiResource api = operation.Value;

4. Create API Version

ApiCenterApiVersionCollection versions = api.GetApiCenterApiVersions();

ApiCenterApiVersionData versionData = new ApiCenterApiVersionData
{
    Title = "v1.0.0",
    LifecycleStage = ApiLifecycleStage.Production
};

ArmOperation<ApiCenterApiVersionResource> operation = await versions
    .CreateOrUpdateAsync(WaitUntil.Completed, "v1-0-0", versionData);

ApiCenterApiVersionResource version = operation.Value;

5. Create API Definition (Upload OpenAPI Spec)

ApiCenterApiDefinitionCollection definitions = version.GetApiCenterApiDefinitions();

ApiCenterApiDefinitionData definitionData = new ApiCenterApiDefinitionData
{
    Title = "OpenAPI Specification",
    Description = "Orders API OpenAPI 3.0 definition"
};

ArmOperation<ApiCenterApiDefinitionResource> operation = await definitions
    .CreateOrUpdateAsync(WaitUntil.Completed, "openapi", definitionData);

ApiCenterApiDefinitionResource definition = operation.Value;

// Import specification
string openApiSpec = await File.ReadAllTextAsync("orders-api.yaml");

ApiSpecImportContent importContent = new ApiSpecImportContent
{
    Format = ApiSpecImportSourceFormat.Inline,
    Value = openApiSpec,
    Specification = new ApiSpecImportSpecification
    {
        Name = "openapi",
        Version = "3.0.1"
    }
};

await definition.ImportSpecificationAsync(WaitUntil.Completed, importContent);

6. Export API Specification

ApiCenterApiDefinitionResource definition = await client
    .GetApiCenterApiDefinitionResource(definitionResourceId)
    .GetAsync();

ArmOperation<ApiSpecExportResult> operation = await definition
    .ExportSpecificationAsync(WaitUntil.Completed);

ApiSpecExportResult result = operation.Value;

// result.Format - e.g., "inline"
// result.Value - the specification content

7. Create Environment

ApiCenterEnvironmentCollection environments = workspace.GetApiCenterEnvironments();

ApiCenterEnvironmentData envData = new ApiCenterEnvironmentData
{
    Title = "Production",
    Description = "Production environment",
    Kind = ApiCenterEnvironmentKind.Production,
    Server = new ApiCenterEnvironmentServer
    {
        ManagementPortalUris = { new Uri("https://portal.azure.com") }
    },
    Onboarding = new EnvironmentOnboardingModel
    {
        Instructions = "Contact platform team for access",
        DeveloperPortalUris = { new Uri("https://developer.example.com") }
    }
};

ArmOperation<ApiCenterEnvironmentResource> operation = await environments
    .CreateOrUpdateAsync(WaitUntil.Completed, "production", envData);

8. Create Deployment

ApiCenterDeploymentCollection deployments = workspace.GetApiCenterDeployments();

// Get environment resource ID
ResourceIdentifier envResourceId = ApiCenterEnvironmentResource.CreateResourceIdentifier(
    subscriptionId, resourceGroupName, serviceName, workspaceName, "production");

// Get API definition resource ID
ResourceIdentifier definitionResourceId = ApiCenterApiDefinitionResource.CreateResourceIdentifier(
    subscriptionId, resourceGroupName, serviceName, workspaceName, 
    "orders-api", "v1-0-0", "openapi");

ApiCenterDeploymentData deploymentData = new ApiCenterDeploymentData
{
    Title = "Orders API - Production",
    Description = "Production deployment of Orders API v1.0.0",
    EnvironmentId = envResourceId,
    DefinitionId = definitionResourceId,
    State = ApiCenterDeploymentState.Active,
    Server = new ApiCenterDeploymentServer
    {
        RuntimeUris = { new Uri("https://api.example.com/orders") }
    }
};

ArmOperation<ApiCenterDeploymentResource> operation = await deployments
    .CreateOrUpdateAsync(WaitUntil.Completed, "orders-api-prod", deploymentData);

9. Create Metadata Schema

ApiCenterMetadataSchemaCollection schemas = service.GetApiCenterMetadataSchemas();

string jsonSchema = """
{
    "type": "object",
    "properties": {
        "team": {
            "type": "string",
            "title": "Owning Team"
        },
        "costCenter": {
            "type": "string",
            "title": "Cost Center"
        },
        "dataClassification": {
            "type": "string",
            "enum": ["public", "internal", "confidential"],
            "title": "Data Classification"
        }
    },
    "required": ["team"]
}
""";

ApiCenterMetadataSchemaData schemaData = new ApiCenterMetadataSchemaData
{
    Schema = jsonSchema,
    AssignedTo =
    {
        new MetadataAssignment
        {
            Entity = MetadataAssignmentEntity.Api,
            Required = true
        }
    }
};

ArmOperation<ApiCenterMetadataSchemaResource> operation = await schemas
    .CreateOrUpdateAsync(WaitUntil.Completed, "api-metadata", schemaData);

10. List and Search APIs

// List all APIs in a workspace
ApiCenterWorkspaceResource workspace = await client
    .GetApiCenterWorkspaceResource(workspaceResourceId)
    .GetAsync();

await foreach (ApiCenterApiResource api in workspace.GetApiCenterApis())
{
    Console.WriteLine($"API: {api.Data.Title}");
    Console.WriteLine($"  Kind: {api.Data.Kind}");
    Console.WriteLine($"  Stage: {api.Data.LifecycleStage}");
    
    // List versions
    await foreach (ApiCenterApiVersionResource version in api.GetApiCenterApiVersions())
    {
        Console.WriteLine($"  Version: {version.Data.Title}");
    }
}

// List environments
await foreach (ApiCenterEnvironmentResource env in workspace.GetApiCenterEnvironments())
{
    Console.WriteLine($"Environment: {env.Data.Title} ({env.Data.Kind})");
}

// List deployments
await foreach (ApiCenterDeploymentResource deployment in workspace.GetApiCenterDeployments())
{
    Console.WriteLine($"Deployment: {deployment.Data.Title}");
    Console.WriteLine($"  State: {deployment.Data.State}");
}

Key Types Reference

Type Purpose
ApiCenterServiceResource API Center service instance
ApiCenterWorkspaceResource Logical grouping of APIs
ApiCenterApiResource Individual API
ApiCenterApiVersionResource Version of an API
ApiCenterApiDefinitionResource API specification (OpenAPI, etc.)
ApiCenterEnvironmentResource Deployment environment
ApiCenterDeploymentResource API deployment to environment
ApiCenterMetadataSchemaResource Custom metadata schema
ApiKind rest, graphql, grpc, soap, webhook, websocket, mcp
ApiLifecycleStage design, development, testing, preview, production, deprecated, retired
ApiCenterEnvironmentKind development, testing, staging, production
ApiCenterDeploymentState active, inactive

Best Practices

  1. Organize with workspaces — Group APIs by team, domain, or product
  2. Use metadata schemas — Define custom properties for governance
  3. Track lifecycle stages — Keep API status current (design → production → deprecated)
  4. Document environments — Include onboarding instructions and portal URIs
  5. Version consistently — Use semantic versioning for API versions
  6. Import specifications — Upload OpenAPI/GraphQL specs for discovery
  7. Link deployments — Connect APIs to their runtime environments
  8. Use managed identity — Enable SystemAssigned identity for secure integrations

Error Handling

using Azure;

try
{
    ArmOperation<ApiCenterApiResource> operation = await apis
        .CreateOrUpdateAsync(WaitUntil.Completed, "my-api", apiData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
    Console.WriteLine("API already exists with conflicting configuration");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
    Console.WriteLine($"Invalid request: {ex.Message}");
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"Azure error: {ex.Status} - {ex.Message}");
}

Related SDKs

SDK Purpose Install
Azure.ResourceManager.ApiCenter API Center management (this SDK) dotnet add package Azure.ResourceManager.ApiCenter
Azure.ResourceManager.ApiManagement API gateway and policies dotnet add package Azure.ResourceManager.ApiManagement

Reference Links

Resource URL
NuGet Package https://www.nuget.org/packages/Azure.ResourceManager.ApiCenter
API Reference https://learn.microsoft.com/dotnet/api/azure.resourcemanager.apicenter
Product Documentation https://learn.microsoft.com/azure/api-center/
GitHub Source https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/apicenter/Azure.ResourceManager.ApiCenter

Version History

  • 4f1db7e Current 2026-07-25 06:27

Same Skill Collection

.github/plugins/azure-kusto-graph-skills/skills/azure-kusto-irql/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-ai-agents-persistent-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-ai-document-intelligence-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-ai-openai-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-ai-projects-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-ai-voicelive-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-eventgrid-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-eventhub-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-identity-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-maps-search-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-apimanagement-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-applicationinsights-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-botservice-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-fabric-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-mongodbatlas-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-weightsandbiases-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-cosmosdb-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-durabletask-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-mysql-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-postgresql-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-redis-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-sql-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-search-documents-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-security-keyvault-keys-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/azure-servicebus-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/m365-agents-dotnet/SKILL.md
.github/plugins/azure-sdk-dotnet/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-ai-agents-persistent-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-ai-anomalydetector-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-ai-contentsafety-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-ai-formrecognizer-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-ai-projects-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-ai-vision-imageanalysis-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-ai-voicelive-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-appconfiguration-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-communication-callautomation-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-communication-callingserver-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-communication-chat-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-communication-common-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-communication-sms-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-compute-batch-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-cosmos-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-data-tables-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-eventgrid-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-eventhub-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-identity-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-messaging-webpubsub-java/SKILL.md
.github/plugins/azure-sdk-java/skills/azure-monitor-ingestion-java/SKILL.md

Metadata

Files
0
Version
a3d788b
Hash
e902c513
Indexed
2026-07-25 06:27

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-21 06:30
浙ICP备14020137号-1 $mapa de visitantes$