Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Azure API Management SDK for Python. Use for managing APIM services, APIs, products, subscriptions, and policies.
.claude/skills/azure-mgmt-apimanagement-py/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-20 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✓→✓ | = Same ✓ | — | — |
Manage Azure API Management services, APIs, products, and policies.
bashpip install azure-mgmt-apimanagement pip install azure-identity
bashAZURE_SUBSCRIPTION_ID=your-subscription-id
pythonfrom azure.identity import DefaultAzureCredential from azure.mgmt.apimanagement import ApiManagementClient import os client = ApiManagementClient( credential=DefaultAzureCredential(), subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"] )
pythonfrom azure.mgmt.apimanagement.models import ( ApiManagementServiceResource, ApiManagementServiceSkuProperties, SkuType ) service = client.api_management_service.begin_create_or_update( resource_group_name="my-resource-group", service_name="my-apim", parameters=ApiManagementServiceResource( location="eastus", publisher_email="admin@example.com", publisher_name="My Organization", sku=ApiManagementServiceSkuProperties( name=SkuType.DEVELOPER, capacity=1 ) ) ).result() print(f"Created APIM: {service.name}")
pythonfrom azure.mgmt.apimanagement.models import ( ApiCreateOrUpdateParameter, ContentFormat, Protocol ) api = client.api.begin_create_or_update( resource_group_name="my-resource-group", service_name="my-apim", api_id="my-api", parameters=ApiCreateOrUpdateParameter( display_name="My API", path="myapi", protocols=[Protocol.HTTPS], format=ContentFormat.OPENAPI_JSON, value='{"openapi": "3.0.0", "info": {"title": "My API", "version": "1.0"}, "paths": {"/health": {"get": {"responses": {"200": {"description": "OK"}}}}}}' ) ).result() print(f"Imported API: {api.display_name}")
pythonapi = client.api.begin_create_or_update( resource_group_name="my-resource-group", service_name="my-apim", api_id="petstore", parameters=ApiCreateOrUpdateParameter( display_name="Petstore API", path="petstore", protocols=[Protocol.HTTPS], format=ContentFormat.OPENAPI_LINK, value="https://petstore.swagger.io/v2/swagger.json" ) ).result()
pythonapis = client.api.list_by_service( resource_group_name="my-resource-group", service_name="my-apim" ) for api in apis: print(f"{api.name}: {api.display_name} - {api.path}")
pythonfrom azure.mgmt.apimanagement.models import ProductContract product = client.product.create_or_update( resource_group_name="my-resource-group", service_name="my-apim", product_id="premium", parameters=ProductContract( display_name="Premium", description="Premium tier with unlimited access", subscription_required=True, approval_required=False, state="published" ) ) print(f"Created product: {product.display_name}")
pythonclient.product_api.create_or_update( resource_group_name="my-resource-group", service_name="my-apim", product_id="premium", api_id="my-api" )
pythonfrom azure.mgmt.apimanagement.models import SubscriptionCreateParameters subscription = client.subscription.create_or_update( resource_group_name="my-resource-group", service_name="my-apim", sid="my-subscription", parameters=SubscriptionCreateParameters( display_name="My Subscription", scope=f"/products/premium", state="active" ) ) print(f"Subscription key: {subscription.primary_key}")
pythonfrom azure.mgmt.apimanagement.models import PolicyContract policy_xml = """ <policies> <inbound> <rate-limit calls="100" renewal-period="60" /> <set-header name="X-Custom-Header" exists-action="override"> <value>CustomValue</value> </set-header> </inbound> <backend> <forward-request /> </backend> <outbound /> <on-error /> </policies> """ client.api_policy.create_or_update( resource_group_name="my-resource-group", service_name="my-apim", api_id="my-api", policy_id="policy", parameters=PolicyContract( value=policy_xml, format="xml" ) )
pythonfrom azure.mgmt.apimanagement.models import NamedValueCreateContract named_value = client.named_value.begin_create_or_update( resource_group_name="my-resource-group", service_name="my-apim", named_value_id="backend-api-key", parameters=NamedValueCreateContract( display_name="Backend API Key", value="secret-key-value", secret=True ) ).result()
pythonfrom azure.mgmt.apimanagement.models import BackendContract backend = client.backend.create_or_update( resource_group_name="my-resource-group", service_name="my-apim", backend_id="my-backend", parameters=BackendContract( url="https://api.backend.example.com", protocol="http", description="My backend service" ) )
pythonfrom azure.mgmt.apimanagement.models import UserCreateParameters user = client.user.create_or_update( resource_group_name="my-resource-group", service_name="my-apim", user_id="newuser", parameters=UserCreateParameters( email="user@example.com", first_name="John", last_name="Doe" ) )
| Group | Purpose | |-------|---------| | api_management_service | APIM instance management | | api | API operations | | api_operation | API operation details | | api_policy | API-level policies | | product | Product management | | product_api | Product-API associations | | subscription | Subscription management | | user | User management | | named_value | Named values/secrets | | backend | Backend services | | certificate | Certificates | | gateway | Self-hosted gateways |
This skill is applicable to execute the workflow or actions described in the overview.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.