Search

Please login in for more filter options


Kickstart your project with AVM templates.

api-center-services

report
Report Package api-center-services

If you believe that this package or its contents contain harmful information, please inform us.
Please be aware that we will never share your credentials.

Please let us know what this package contains.
Please enter a valid email address.

This Bicep AVM module deploys an API Center Service.

ipm add --package avm-bicep/api-center-services --version 0.1.0 

Published: 10-07-2026

Project URL: https://ipmhub.io/avm-bicep

Package Type: Bicep

License: MIT


API Center Services [Microsoft.ApiCenter/services]

This module deploys an API Center Service.

You can reference the module as follows:

module service './packages/api-center-services/main.bicep' = {
  params: { (...) }
}

For examples, please refer to the Usage Examples section.

Navigation

Resource Types

Resource Type API Version References
Microsoft.ApiCenter/services 2024-03-01
Microsoft.ApiCenter/services/metadataSchemas 2024-03-01
Microsoft.ApiCenter/services/workspaces 2024-03-01
Microsoft.ApiCenter/services/workspaces/apis 2024-03-01
Microsoft.ApiCenter/services/workspaces/apis/deployments 2024-03-01
Microsoft.ApiCenter/services/workspaces/apis/versions 2024-03-01
Microsoft.ApiCenter/services/workspaces/apis/versions/definitions 2024-03-01
Microsoft.ApiCenter/services/workspaces/apiSources 2024-06-01-preview
Microsoft.ApiCenter/services/workspaces/environments 2024-03-01
Microsoft.Authorization/locks 2020-05-01
Microsoft.Authorization/roleAssignments 2022-04-01

Usage examples

The following section provides usage examples for the module, which were used to validate and deploy the module successfully. For a full reference, please review the module's test folder in its repository.

Note: Each example lists all the required parameters first, followed by the rest - each in alphabetical order.

Note: To reference the module, please use the following syntax ./packages/api-center-services/main.bicep.

Example 1: Using only defaults

This instance deploys the module with the minimum set of required parameters.

You can find the full example and the setup of its dependencies in the deployment test folder path [/tests/e2e/defaults]

via Bicep module
module service './packages/api-center-services/main.bicep' = {
  params: {
    // Required parameters
    name: '<name>'
    // Non-required parameters
    location: '<location>'
  }
}

via JSON parameters file
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    // Required parameters
    "name": {
      "value": "<name>"
    },
    // Non-required parameters
    "location": {
      "value": "<location>"
    }
  }
}

via Bicep parameters file
using './packages/api-center-services/main.bicep'

// Required parameters
param name = '<name>'
// Non-required parameters
param location = '<location>'

Example 2: Using large parameter set

This instance deploys the module with most of its features enabled.

You can find the full example and the setup of its dependencies in the deployment test folder path [/tests/e2e/max]

via Bicep module
module service './packages/api-center-services/main.bicep' = {
  params: {
    // Required parameters
    name: '<name>'
    // Non-required parameters
    apis: [
      {
        contacts: [
          {
            email: 'api-team@contoso.com'
            name: 'API Team'
            url: 'https://contoso.com/teams/api'
          }
        ]
        customProperties: {
          apiCostCenter: 'CC-2001'
          apiTeamOwner: 'Platform Engineering'
        }
        deployments: [
          {
            definition: 'openapi-spec'
            environment: 'staging-apim'
            name: 'petstore-staging-deployment'
            title: 'Petstore Staging'
            version: 'v2-0-0-preview'
          }
          {
            customProperties: {
              apiTeamOwner: 'Platform Engineering'
            }
            definition: 'openapi-spec'
            description: 'Production deployment of the Petstore API.'
            environment: 'production-apim'
            name: 'petstore-prod-deployment'
            server: {
              runtimeUri: [
                'https://contoso.com/petstore/api'
              ]
            }
            state: 'active'
            title: 'Petstore Production'
            version: 'v1-0-0'
          }
        ]
        description: 'A sample REST API for managing pets.'
        externalDocumentation: [
          {
            description: 'Full reference documentation for the Petstore API.'
            title: 'API Documentation'
            url: 'https://contoso.com/docs/petstore'
          }
          {
            title: 'Getting Started Guide'
            url: 'https://contoso.com/petstore/getting-started'
          }
        ]
        kind: 'rest'
        license: {
          identifier: 'mit'
          name: 'MIT License'
          url: 'https://opensource.org/licenses/MIT'
        }
        name: 'petstore-api'
        summary: 'Petstore management API.'
        termsOfService: {
          url: 'https://contoso.com/terms-of-service'
        }
        title: 'Petstore API'
        versions: [
          {
            lifecycleStage: 'retired'
            name: 'v0-9-0'
            title: 'v0.9.0'
          }
          {
            definitions: [
              {
                description: 'The OpenAPI 3.0 specification for the Petstore API v1.'
                name: 'openapi-spec'
                title: 'OpenAPI Specification'
              }
            ]
            lifecycleStage: 'production'
            name: 'v1-0-0'
            title: 'v1.0.0'
          }
          {
            definitions: [
              {
                description: 'The OpenAPI 3.0 specification for the Petstore API v2.'
                name: 'openapi-spec'
                title: 'OpenAPI Specification'
              }
            ]
            lifecycleStage: 'preview'
            name: 'v2-0-0-preview'
            title: 'v2.0.0-preview'
          }
        ]
      }
      {
        customProperties: {
          apiCostCenter: 'CC-2001'
        }
        description: 'A GraphQL API'
        kind: 'graphql'
        name: 'graphql-api'
        title: 'GraphQL API'
      }
      {
        customProperties: {
          apiCostCenter: 'CC-3001'
        }
        description: 'A SOAP-based API'
        kind: 'soap'
        name: 'soap-api'
        title: 'SOAP API'
      }
      {
        customProperties: {
          apiCostCenter: 'CC-4001'
        }
        description: 'A webhook API'
        kind: 'webhook'
        name: 'webhook-notifications'
        title: 'Webhook Notifications'
      }
      {
        customProperties: {
          apiCostCenter: 'CC-5001'
        }
        description: 'A gRPC API'
        kind: 'grpc'
        name: 'grpc-api'
        title: 'gRPC API'
      }
      {
        customProperties: {
          apiCostCenter: 'CC-6001'
        }
        description: 'A WebSocket API'
        kind: 'websocket'
        name: 'ws-api'
        title: 'WebSocket API'
      }
    ]
    apiSources: [
      {
        azureApiManagementSource: {
          msiResourceId: '<msiResourceId>'
          resourceId: '<resourceId>'
        }
        importSpecification: 'always'
        name: 'apim-import-source'
        targetEnvironment: 'production-apim'
        targetLifecycleStage: 'production'
      }
    ]
    environments: [
      {
        customProperties: {
          apiCostCenter: 'CC-1001'
        }
        description: 'Production Azure API Management environment.'
        kind: 'production'
        name: 'production-apim'
        onboarding: {
          developerPortalUri: [
            'https://contoso.com/develop'
          ]
          instructions: 'Sign up using the developer portal to get started with our APIs.'
        }
        server: {
          managementPortalUri: [
            'https://portal.azure.com'
          ]
          type: 'Azure API Management'
        }
        title: 'Production APIM'
      }
      {
        description: 'Staging Azure API Management environment.'
        kind: 'staging'
        name: 'staging-apim'
        server: {
          type: 'Azure API Management'
        }
        title: 'Staging APIM'
      }
    ]
    location: '<location>'
    lock: {
      kind: 'CanNotDelete'
      name: 'ApiCenterDeleteLock'
    }
    managedIdentities: {
      systemAssigned: true
      userAssignedResourceIds: [
        '<managedIdentityResourceId>'
      ]
    }
    metadataSchemas: [
      {
        assignedTo: [
          {
            entity: 'api'
            required: true
          }
          {
            entity: 'environment'
            required: false
          }
        ]
        name: 'apiCostCenter'
        schema: '{\'type\':\'string\',\'title\':\'Cost Center\',\'pattern\':\'^[A-Z]{2}-[0-9]{4}$\'}'
      }
      {
        assignedTo: [
          {
            entity: 'api'
            required: false
          }
          {
            entity: 'deployment'
            required: false
          }
        ]
        name: 'apiTeamOwner'
        schema: '{\'type\':\'string\',\'title\':\'Team Owner\',\'minLength\':1,\'maxLength\':100}'
      }
    ]
    roleAssignments: [
      {
        name: '73ec30e0-2e25-475f-beec-d90cab332eb7'
        principalId: '<principalId>'
        principalType: 'ServicePrincipal'
        roleDefinitionIdOrName: 'Owner'
      }
      {
        name: '<name>'
        principalId: '<principalId>'
        principalType: 'ServicePrincipal'
        roleDefinitionIdOrName: 'b24988ac-6180-42a0-ab88-20f7382dd24c'
      }
      {
        principalId: '<principalId>'
        principalType: 'ServicePrincipal'
        roleDefinitionIdOrName: '<roleDefinitionIdOrName>'
      }
    ]
    sku: 'Free'
    tags: {
      Environment: 'Non-Prod'
      'hidden-title': 'This is visible in the resource name'
      Role: 'DeploymentValidation'
    }
  }
}

via JSON parameters file
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    // Required parameters
    "name": {
      "value": "<name>"
    },
    // Non-required parameters
    "apis": {
      "value": [
        {
          "contacts": [
            {
              "email": "api-team@contoso.com",
              "name": "API Team",
              "url": "https://contoso.com/teams/api"
            }
          ],
          "customProperties": {
            "apiCostCenter": "CC-2001",
            "apiTeamOwner": "Platform Engineering"
          },
          "deployments": [
            {
              "definition": "openapi-spec",
              "environment": "staging-apim",
              "name": "petstore-staging-deployment",
              "title": "Petstore Staging",
              "version": "v2-0-0-preview"
            },
            {
              "customProperties": {
                "apiTeamOwner": "Platform Engineering"
              },
              "definition": "openapi-spec",
              "description": "Production deployment of the Petstore API.",
              "environment": "production-apim",
              "name": "petstore-prod-deployment",
              "server": {
                "runtimeUri": [
                  "https://contoso.com/petstore/api"
                ]
              },
              "state": "active",
              "title": "Petstore Production",
              "version": "v1-0-0"
            }
          ],
          "description": "A sample REST API for managing pets.",
          "externalDocumentation": [
            {
              "description": "Full reference documentation for the Petstore API.",
              "title": "API Documentation",
              "url": "https://contoso.com/docs/petstore"
            },
            {
              "title": "Getting Started Guide",
              "url": "https://contoso.com/petstore/getting-started"
            }
          ],
          "kind": "rest",
          "license": {
            "identifier": "mit",
            "name": "MIT License",
            "url": "https://opensource.org/licenses/MIT"
          },
          "name": "petstore-api",
          "summary": "Petstore management API.",
          "termsOfService": {
            "url": "https://contoso.com/terms-of-service"
          },
          "title": "Petstore API",
          "versions": [
            {
              "lifecycleStage": "retired",
              "name": "v0-9-0",
              "title": "v0.9.0"
            },
            {
              "definitions": [
                {
                  "description": "The OpenAPI 3.0 specification for the Petstore API v1.",
                  "name": "openapi-spec",
                  "title": "OpenAPI Specification"
                }
              ],
              "lifecycleStage": "production",
              "name": "v1-0-0",
              "title": "v1.0.0"
            },
            {
              "definitions": [
                {
                  "description": "The OpenAPI 3.0 specification for the Petstore API v2.",
                  "name": "openapi-spec",
                  "title": "OpenAPI Specification"
                }
              ],
              "lifecycleStage": "preview",
              "name": "v2-0-0-preview",
              "title": "v2.0.0-preview"
            }
          ]
        },
        {
          "customProperties": {
            "apiCostCenter": "CC-2001"
          },
          "description": "A GraphQL API",
          "kind": "graphql",
          "name": "graphql-api",
          "title": "GraphQL API"
        },
        {
          "customProperties": {
            "apiCostCenter": "CC-3001"
          },
          "description": "A SOAP-based API",
          "kind": "soap",
          "name": "soap-api",
          "title": "SOAP API"
        },
        {
          "customProperties": {
            "apiCostCenter": "CC-4001"
          },
          "description": "A webhook API",
          "kind": "webhook",
          "name": "webhook-notifications",
          "title": "Webhook Notifications"
        },
        {
          "customProperties": {
            "apiCostCenter": "CC-5001"
          },
          "description": "A gRPC API",
          "kind": "grpc",
          "name": "grpc-api",
          "title": "gRPC API"
        },
        {
          "customProperties": {
            "apiCostCenter": "CC-6001"
          },
          "description": "A WebSocket API",
          "kind": "websocket",
          "name": "ws-api",
          "title": "WebSocket API"
        }
      ]
    },
    "apiSources": {
      "value": [
        {
          "azureApiManagementSource": {
            "msiResourceId": "<msiResourceId>",
            "resourceId": "<resourceId>"
          },
          "importSpecification": "always",
          "name": "apim-import-source",
          "targetEnvironment": "production-apim",
          "targetLifecycleStage": "production"
        }
      ]
    },
    "environments": {
      "value": [
        {
          "customProperties": {
            "apiCostCenter": "CC-1001"
          },
          "description": "Production Azure API Management environment.",
          "kind": "production",
          "name": "production-apim",
          "onboarding": {
            "developerPortalUri": [
              "https://contoso.com/develop"
            ],
            "instructions": "Sign up using the developer portal to get started with our APIs."
          },
          "server": {
            "managementPortalUri": [
              "https://portal.azure.com"
            ],
            "type": "Azure API Management"
          },
          "title": "Production APIM"
        },
        {
          "description": "Staging Azure API Management environment.",
          "kind": "staging",
          "name": "staging-apim",
          "server": {
            "type": "Azure API Management"
          },
          "title": "Staging APIM"
        }
      ]
    },
    "location": {
      "value": "<location>"
    },
    "lock": {
      "value": {
        "kind": "CanNotDelete",
        "name": "ApiCenterDeleteLock"
      }
    },
    "managedIdentities": {
      "value": {
        "systemAssigned": true,
        "userAssignedResourceIds": [
          "<managedIdentityResourceId>"
        ]
      }
    },
    "metadataSchemas": {
      "value": [
        {
          "assignedTo": [
            {
              "entity": "api",
              "required": true
            },
            {
              "entity": "environment",
              "required": false
            }
          ],
          "name": "apiCostCenter",
          "schema": "{\"type\":\"string\",\"title\":\"Cost Center\",\"pattern\":\"^[A-Z]{2}-[0-9]{4}$\"}"
        },
        {
          "assignedTo": [
            {
              "entity": "api",
              "required": false
            },
            {
              "entity": "deployment",
              "required": false
            }
          ],
          "name": "apiTeamOwner",
          "schema": "{\"type\":\"string\",\"title\":\"Team Owner\",\"minLength\":1,\"maxLength\":100}"
        }
      ]
    },
    "roleAssignments": {
      "value": [
        {
          "name": "73ec30e0-2e25-475f-beec-d90cab332eb7",
          "principalId": "<principalId>",
          "principalType": "ServicePrincipal",
          "roleDefinitionIdOrName": "Owner"
        },
        {
          "name": "<name>",
          "principalId": "<principalId>",
          "principalType": "ServicePrincipal",
          "roleDefinitionIdOrName": "b24988ac-6180-42a0-ab88-20f7382dd24c"
        },
        {
          "principalId": "<principalId>",
          "principalType": "ServicePrincipal",
          "roleDefinitionIdOrName": "<roleDefinitionIdOrName>"
        }
      ]
    },
    "sku": {
      "value": "Free"
    },
    "tags": {
      "value": {
        "Environment": "Non-Prod",
        "hidden-title": "This is visible in the resource name",
        "Role": "DeploymentValidation"
      }
    }
  }
}

via Bicep parameters file
using './packages/api-center-services/main.bicep'

// Required parameters
param name = '<name>'
// Non-required parameters
param apis = [
  {
    contacts: [
      {
        email: 'api-team@contoso.com'
        name: 'API Team'
        url: 'https://contoso.com/teams/api'
      }
    ]
    customProperties: {
      apiCostCenter: 'CC-2001'
      apiTeamOwner: 'Platform Engineering'
    }
    deployments: [
      {
        definition: 'openapi-spec'
        environment: 'staging-apim'
        name: 'petstore-staging-deployment'
        title: 'Petstore Staging'
        version: 'v2-0-0-preview'
      }
      {
        customProperties: {
          apiTeamOwner: 'Platform Engineering'
        }
        definition: 'openapi-spec'
        description: 'Production deployment of the Petstore API.'
        environment: 'production-apim'
        name: 'petstore-prod-deployment'
        server: {
          runtimeUri: [
            'https://contoso.com/petstore/api'
          ]
        }
        state: 'active'
        title: 'Petstore Production'
        version: 'v1-0-0'
      }
    ]
    description: 'A sample REST API for managing pets.'
    externalDocumentation: [
      {
        description: 'Full reference documentation for the Petstore API.'
        title: 'API Documentation'
        url: 'https://contoso.com/docs/petstore'
      }
      {
        title: 'Getting Started Guide'
        url: 'https://contoso.com/petstore/getting-started'
      }
    ]
    kind: 'rest'
    license: {
      identifier: 'mit'
      name: 'MIT License'
      url: 'https://opensource.org/licenses/MIT'
    }
    name: 'petstore-api'
    summary: 'Petstore management API.'
    termsOfService: {
      url: 'https://contoso.com/terms-of-service'
    }
    title: 'Petstore API'
    versions: [
      {
        lifecycleStage: 'retired'
        name: 'v0-9-0'
        title: 'v0.9.0'
      }
      {
        definitions: [
          {
            description: 'The OpenAPI 3.0 specification for the Petstore API v1.'
            name: 'openapi-spec'
            title: 'OpenAPI Specification'
          }
        ]
        lifecycleStage: 'production'
        name: 'v1-0-0'
        title: 'v1.0.0'
      }
      {
        definitions: [
          {
            description: 'The OpenAPI 3.0 specification for the Petstore API v2.'
            name: 'openapi-spec'
            title: 'OpenAPI Specification'
          }
        ]
        lifecycleStage: 'preview'
        name: 'v2-0-0-preview'
        title: 'v2.0.0-preview'
      }
    ]
  }
  {
    customProperties: {
      apiCostCenter: 'CC-2001'
    }
    description: 'A GraphQL API'
    kind: 'graphql'
    name: 'graphql-api'
    title: 'GraphQL API'
  }
  {
    customProperties: {
      apiCostCenter: 'CC-3001'
    }
    description: 'A SOAP-based API'
    kind: 'soap'
    name: 'soap-api'
    title: 'SOAP API'
  }
  {
    customProperties: {
      apiCostCenter: 'CC-4001'
    }
    description: 'A webhook API'
    kind: 'webhook'
    name: 'webhook-notifications'
    title: 'Webhook Notifications'
  }
  {
    customProperties: {
      apiCostCenter: 'CC-5001'
    }
    description: 'A gRPC API'
    kind: 'grpc'
    name: 'grpc-api'
    title: 'gRPC API'
  }
  {
    customProperties: {
      apiCostCenter: 'CC-6001'
    }
    description: 'A WebSocket API'
    kind: 'websocket'
    name: 'ws-api'
    title: 'WebSocket API'
  }
]
param apiSources = [
  {
    azureApiManagementSource: {
      msiResourceId: '<msiResourceId>'
      resourceId: '<resourceId>'
    }
    importSpecification: 'always'
    name: 'apim-import-source'
    targetEnvironment: 'production-apim'
    targetLifecycleStage: 'production'
  }
]
param environments = [
  {
    customProperties: {
      apiCostCenter: 'CC-1001'
    }
    description: 'Production Azure API Management environment.'
    kind: 'production'
    name: 'production-apim'
    onboarding: {
      developerPortalUri: [
        'https://contoso.com/develop'
      ]
      instructions: 'Sign up using the developer portal to get started with our APIs.'
    }
    server: {
      managementPortalUri: [
        'https://portal.azure.com'
      ]
      type: 'Azure API Management'
    }
    title: 'Production APIM'
  }
  {
    description: 'Staging Azure API Management environment.'
    kind: 'staging'
    name: 'staging-apim'
    server: {
      type: 'Azure API Management'
    }
    title: 'Staging APIM'
  }
]
param location = '<location>'
param lock = {
  kind: 'CanNotDelete'
  name: 'ApiCenterDeleteLock'
}
param managedIdentities = {
  systemAssigned: true
  userAssignedResourceIds: [
    '<managedIdentityResourceId>'
  ]
}
param metadataSchemas = [
  {
    assignedTo: [
      {
        entity: 'api'
        required: true
      }
      {
        entity: 'environment'
        required: false
      }
    ]
    name: 'apiCostCenter'
    schema: '{\'type\':\'string\',\'title\':\'Cost Center\',\'pattern\':\'^[A-Z]{2}-[0-9]{4}$\'}'
  }
  {
    assignedTo: [
      {
        entity: 'api'
        required: false
      }
      {
        entity: 'deployment'
        required: false
      }
    ]
    name: 'apiTeamOwner'
    schema: '{\'type\':\'string\',\'title\':\'Team Owner\',\'minLength\':1,\'maxLength\':100}'
  }
]
param roleAssignments = [
  {
    name: '73ec30e0-2e25-475f-beec-d90cab332eb7'
    principalId: '<principalId>'
    principalType: 'ServicePrincipal'
    roleDefinitionIdOrName: 'Owner'
  }
  {
    name: '<name>'
    principalId: '<principalId>'
    principalType: 'ServicePrincipal'
    roleDefinitionIdOrName: 'b24988ac-6180-42a0-ab88-20f7382dd24c'
  }
  {
    principalId: '<principalId>'
    principalType: 'ServicePrincipal'
    roleDefinitionIdOrName: '<roleDefinitionIdOrName>'
  }
]
param sku = 'Free'
param tags = {
  Environment: 'Non-Prod'
  'hidden-title': 'This is visible in the resource name'
  Role: 'DeploymentValidation'
}

Example 3: WAF-aligned

This instance deploys the module in alignment with the best-practices of the Azure Well-Architected Framework.

You can find the full example and the setup of its dependencies in the deployment test folder path [/tests/e2e/waf-aligned]

via Bicep module
module service './packages/api-center-services/main.bicep' = {
  params: {
    // Required parameters
    name: '<name>'
    // Non-required parameters
    location: '<location>'
    lock: {
      kind: 'CanNotDelete'
      name: 'ApiCenterDeleteLock'
    }
    managedIdentities: {
      systemAssigned: true
    }
    metadataSchemas: []
    roleAssignments: [
      {
        principalId: '<principalId>'
        principalType: 'ServicePrincipal'
        roleDefinitionIdOrName: 'Azure API Center Data Reader'
      }
      {
        principalId: '<principalId>'
        principalType: 'ServicePrincipal'
        roleDefinitionIdOrName: 'Azure API Center Service Reader'
      }
    ]
    tags: {
      Environment: 'Non-Prod'
      Role: 'DeploymentValidation'
    }
  }
}

via JSON parameters file
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    // Required parameters
    "name": {
      "value": "<name>"
    },
    // Non-required parameters
    "location": {
      "value": "<location>"
    },
    "lock": {
      "value": {
        "kind": "CanNotDelete",
        "name": "ApiCenterDeleteLock"
      }
    },
    "managedIdentities": {
      "value": {
        "systemAssigned": true
      }
    },
    "metadataSchemas": {
      "value": []
    },
    "roleAssignments": {
      "value": [
        {
          "principalId": "<principalId>",
          "principalType": "ServicePrincipal",
          "roleDefinitionIdOrName": "Azure API Center Data Reader"
        },
        {
          "principalId": "<principalId>",
          "principalType": "ServicePrincipal",
          "roleDefinitionIdOrName": "Azure API Center Service Reader"
        }
      ]
    },
    "tags": {
      "value": {
        "Environment": "Non-Prod",
        "Role": "DeploymentValidation"
      }
    }
  }
}

via Bicep parameters file
using './packages/api-center-services/main.bicep'

// Required parameters
param name = '<name>'
// Non-required parameters
param location = '<location>'
param lock = {
  kind: 'CanNotDelete'
  name: 'ApiCenterDeleteLock'
}
param managedIdentities = {
  systemAssigned: true
}
param metadataSchemas = []
param roleAssignments = [
  {
    principalId: '<principalId>'
    principalType: 'ServicePrincipal'
    roleDefinitionIdOrName: 'Azure API Center Data Reader'
  }
  {
    principalId: '<principalId>'
    principalType: 'ServicePrincipal'
    roleDefinitionIdOrName: 'Azure API Center Service Reader'
  }
]
param tags = {
  Environment: 'Non-Prod'
  Role: 'DeploymentValidation'
}

Parameters

Required parameters

Parameter Type Description
name string The name of the API Center service.

Optional parameters

Parameter Type Description
apis array The APIs to create within the default workspace of the API Center service.
apiSources array The API sources to create within the default workspace for importing APIs from external sources.
enableTelemetry bool Enable/Disable usage telemetry for module.
environments array The environments to create within the default workspace of the API Center service.
location string Location for all Resources.
lock object The lock settings for the service resource.
managedIdentities object The managed identity definition for this resource.
metadataSchemas array The metadata schemas to create within the API Center service.
roleAssignments array Array of role assignments to create scoped to the service.
sku string The SKU to deploy, Use Free for evaluation purposes and Standard for long-lived and production deployments. Defaults to Standard.
tags object Tags of the resource.

Parameter: name

The name of the API Center service.

  • Required: Yes
  • Type: string

Parameter: apis

The APIs to create within the default workspace of the API Center service.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
kind string The kind of API.
name string The name of the API.
title string The title of the API.

Optional parameters

Parameter Type Description
contacts array The contacts for the API.
customProperties The custom metadata defined for API catalog entities.
deployments array The deployments for the API.
description string The description of the API.
externalDocumentation array External documentation for the API.
license object The license information for the API.
summary string Short description of the API.
termsOfService object The terms of service for the API.
versions array The versions for the API.

Parameter: apis.kind

The kind of API.

  • Required: Yes
  • Type: string
  • Allowed:
    [
      'graphql'
      'grpc'
      'rest'
      'soap'
      'webhook'
      'websocket'
    ]
    

Parameter: apis.name

The name of the API.

  • Required: Yes
  • Type: string

Parameter: apis.title

The title of the API.

  • Required: Yes
  • Type: string

Parameter: apis.contacts

The contacts for the API.

  • Required: No
  • Type: array

Optional parameters

Parameter Type Description
email string The email of the contact.
name string The name of the contact.
url string The URL of the contact.

Parameter: apis.contacts.email

The email of the contact.

  • Required: No
  • Type: string

Parameter: apis.contacts.name

The name of the contact.

  • Required: No
  • Type: string

Parameter: apis.contacts.url

The URL of the contact.

  • Required: No
  • Type: string

Parameter: apis.customProperties

The custom metadata defined for API catalog entities.

  • Required: No
  • Type:

Parameter: apis.deployments

The deployments for the API.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
definition string The deployed definition name.
environment string The target environment name of the deployment.
name string The name of the deployment.
version string The deployed version name.

Optional parameters

Parameter Type Description
customProperties The custom metadata defined for API catalog entities.
description string The description of the deployment.
server object The server information of the deployment.
state string The state of the deployment.
title string The title of the deployment.

Parameter: apis.deployments.definition

The deployed definition name.

  • Required: Yes
  • Type: string

Parameter: apis.deployments.environment

The target environment name of the deployment.

  • Required: Yes
  • Type: string

Parameter: apis.deployments.name

The name of the deployment.

  • Required: Yes
  • Type: string

Parameter: apis.deployments.version

The deployed version name.

  • Required: Yes
  • Type: string

Parameter: apis.deployments.customProperties

The custom metadata defined for API catalog entities.

  • Required: No
  • Type:

Parameter: apis.deployments.description

The description of the deployment.

  • Required: No
  • Type: string

Parameter: apis.deployments.server

The server information of the deployment.

  • Required: No
  • Type: object

Optional parameters

Parameter Type Description
runtimeUri array The base runtime URIs for this deployment.

Parameter: apis.deployments.server.runtimeUri

The base runtime URIs for this deployment.

  • Required: No
  • Type: array

Parameter: apis.deployments.state

The state of the deployment.

  • Required: No
  • Type: string
  • Allowed:
    [
      'active'
      'inactive'
    ]
    

Parameter: apis.deployments.title

The title of the deployment.

  • Required: No
  • Type: string

Parameter: apis.description

The description of the API.

  • Required: No
  • Type: string

Parameter: apis.externalDocumentation

External documentation for the API.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
url string The URL pointing to the documentation.

Optional parameters

Parameter Type Description
description string The description of the documentation.
title string The title of the documentation.

Parameter: apis.externalDocumentation.url

The URL pointing to the documentation.

  • Required: Yes
  • Type: string

Parameter: apis.externalDocumentation.description

The description of the documentation.

  • Required: No
  • Type: string

Parameter: apis.externalDocumentation.title

The title of the documentation.

  • Required: No
  • Type: string

Parameter: apis.license

The license information for the API.

  • Required: No
  • Type: object

Optional parameters

Parameter Type Description
identifier string SPDX license identifier. Mutually exclusive with url.
name string The name of the license.
url string URL pointing to the license details. Mutually exclusive with identifier.

Parameter: apis.license.identifier

SPDX license identifier. Mutually exclusive with url.

  • Required: No
  • Type: string

Parameter: apis.license.name

The name of the license.

  • Required: No
  • Type: string

Parameter: apis.license.url

URL pointing to the license details. Mutually exclusive with identifier.

  • Required: No
  • Type: string

Parameter: apis.summary

Short description of the API.

  • Required: No
  • Type: string

Parameter: apis.termsOfService

The terms of service for the API.

  • Required: No
  • Type: object

Required parameters

Parameter Type Description
url string URL pointing to the terms of service.

Parameter: apis.termsOfService.url

URL pointing to the terms of service.

  • Required: Yes
  • Type: string

Parameter: apis.versions

The versions for the API.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
lifecycleStage string The lifecycle stage of the version.
name string The name of the version.
title string The title of the version.

Optional parameters

Parameter Type Description
definitions array The definitions to create for the version.

Parameter: apis.versions.lifecycleStage

The lifecycle stage of the version.

  • Required: Yes
  • Type: string
  • Allowed:
    [
      'deprecated'
      'design'
      'development'
      'preview'
      'production'
      'retired'
      'testing'
    ]
    

Parameter: apis.versions.name

The name of the version.

  • Required: Yes
  • Type: string

Parameter: apis.versions.title

The title of the version.

  • Required: Yes
  • Type: string

Parameter: apis.versions.definitions

The definitions to create for the version.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
name string The name of the definition.
title string The title of the definition.

Optional parameters

Parameter Type Description
description string The description of the definition.

Parameter: apis.versions.definitions.name

The name of the definition.

  • Required: Yes
  • Type: string

Parameter: apis.versions.definitions.title

The title of the definition.

  • Required: Yes
  • Type: string

Parameter: apis.versions.definitions.description

The description of the definition.

  • Required: No
  • Type: string

Parameter: apiSources

The API sources to create within the default workspace for importing APIs from external sources.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
azureApiManagementSource object Configuration for importing APIs from Azure API Management.
name string The name of the API source.

Optional parameters

Parameter Type Description
importSpecification string Indicates if the specification should be imported along with metadata.
targetEnvironment string The target environment name. If not provided a new environment will be created.
targetLifecycleStage string The target lifecycle stage for imported APIs.

Parameter: apiSources.azureApiManagementSource

Configuration for importing APIs from Azure API Management.

  • Required: Yes
  • Type: object

Required parameters

Parameter Type Description
resourceId string The resource ID of the Azure API Management instance.

Optional parameters

Parameter Type Description
msiResourceId string The resource ID of the managed identity that has access to the API Management instance. If not provided, system-assigned identity is used and granted Api Management Service Reader role.

Parameter: apiSources.azureApiManagementSource.resourceId

The resource ID of the Azure API Management instance.

  • Required: Yes
  • Type: string

Parameter: apiSources.azureApiManagementSource.msiResourceId

The resource ID of the managed identity that has access to the API Management instance. If not provided, system-assigned identity is used and granted Api Management Service Reader role.

  • Required: No
  • Type: string

Parameter: apiSources.name

The name of the API source.

  • Required: Yes
  • Type: string

Parameter: apiSources.importSpecification

Indicates if the specification should be imported along with metadata.

  • Required: No
  • Type: string
  • Allowed:
    [
      'always'
      'never'
      'ondemand'
    ]
    

Parameter: apiSources.targetEnvironment

The target environment name. If not provided a new environment will be created.

  • Required: No
  • Type: string

Parameter: apiSources.targetLifecycleStage

The target lifecycle stage for imported APIs.

  • Required: No
  • Type: string
  • Allowed:
    [
      'deprecated'
      'design'
      'development'
      'preview'
      'production'
      'retired'
      'testing'
    ]
    

Parameter: enableTelemetry

Enable/Disable usage telemetry for module.

  • Required: No
  • Type: bool
  • Default: True

Parameter: environments

The environments to create within the default workspace of the API Center service.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
kind string The kind of environment.
name string The name of the environment.
title string The title of the environment.

Optional parameters

Parameter Type Description
customProperties The custom metadata defined for API catalog entities.
description string The description of the environment.
onboarding object Onboarding information for the environment.
server object Server information of the environment.

Parameter: environments.kind

The kind of environment.

  • Required: Yes
  • Type: string
  • Allowed:
    [
      'development'
      'production'
      'staging'
      'testing'
    ]
    

Parameter: environments.name

The name of the environment.

  • Required: Yes
  • Type: string

Parameter: environments.title

The title of the environment.

  • Required: Yes
  • Type: string

Parameter: environments.customProperties

The custom metadata defined for API catalog entities.

  • Required: No
  • Type:

Parameter: environments.description

The description of the environment.

  • Required: No
  • Type: string

Parameter: environments.onboarding

Onboarding information for the environment.

  • Required: No
  • Type: object

Optional parameters

Parameter Type Description
developerPortalUri array The developer portal URIs.
instructions string Onboarding instructions.

Parameter: environments.onboarding.developerPortalUri

The developer portal URIs.

  • Required: No
  • Type: array

Parameter: environments.onboarding.instructions

Onboarding instructions.

  • Required: No
  • Type: string

Parameter: environments.server

Server information of the environment.

  • Required: No
  • Type: object

Optional parameters

Parameter Type Description
managementPortalUri array The management portal URIs.
type string The type of server that represents the environment.

Parameter: environments.server.managementPortalUri

The management portal URIs.

  • Required: No
  • Type: array

Parameter: environments.server.type

The type of server that represents the environment.

  • Required: No
  • Type: string

Parameter: location

Location for all Resources.

  • Required: No
  • Type: string
  • Default: [resourceGroup().location]

Parameter: lock

The lock settings for the service resource.

  • Required: No
  • Type: object

Optional parameters

Parameter Type Description
kind string Specify the type of lock.
name string Specify the name of lock.
notes string Specify the notes of the lock.

Parameter: lock.kind

Specify the type of lock.

  • Required: No
  • Type: string
  • Allowed:
    [
      'CanNotDelete'
      'None'
      'ReadOnly'
    ]
    

Parameter: lock.name

Specify the name of lock.

  • Required: No
  • Type: string

Parameter: lock.notes

Specify the notes of the lock.

  • Required: No
  • Type: string

Parameter: managedIdentities

The managed identity definition for this resource.

  • Required: No
  • Type: object

Optional parameters

Parameter Type Description
systemAssigned bool Enables system assigned managed identity on the resource.
userAssignedResourceIds array The resource ID(s) to assign to the resource. Required if a user assigned identity is used for encryption.

Parameter: managedIdentities.systemAssigned

Enables system assigned managed identity on the resource.

  • Required: No
  • Type: bool

Parameter: managedIdentities.userAssignedResourceIds

The resource ID(s) to assign to the resource. Required if a user assigned identity is used for encryption.

  • Required: No
  • Type: array

Parameter: metadataSchemas

The metadata schemas to create within the API Center service.

  • Required: No
  • Type: array

Required parameters

Parameter Type Description
name string The name of the metadata schema.
schema string The JSON schema defining the metadata type.

Optional parameters

Parameter Type Description
assignedTo array The entities the metadata schema is assigned to.

Parameter: metadataSchemas.name

The name of the metadata schema.

  • Required: Yes
  • Type: string

Parameter: metadataSchemas.schema

The JSON schema defining the metadata type.

  • Required: Yes
  • Type: string

Parameter: metadataSchemas.assignedTo

The entities the metadata schema is assigned to.

  • Required: No
  • Type: array

Optional parameters

Parameter Type Description
deprecated bool Whether the metadata property is deprecated.
entity string The entity the metadata schema is assigned to.
required bool Whether the metadata is required for the entity.

Parameter: metadataSchemas.assignedTo.deprecated

Whether the metadata property is deprecated.

  • Required: No
  • Type: bool

Parameter: metadataSchemas.assignedTo.entity

The entity the metadata schema is assigned to.

  • Required: No
  • Type: string
  • Allowed:
    [
      'api'
      'deployment'
      'environment'
    ]
    

Parameter: metadataSchemas.assignedTo.required

Whether the metadata is required for the entity.

  • Required: No
  • Type: bool

Parameter: roleAssignments

Array of role assignments to create scoped to the service.

  • Required: No
  • Type: array
  • Roles configurable by name:
    • 'Contributor'
    • 'Owner'
    • 'Reader'
    • 'Role Based Access Control Administrator'
    • 'User Access Administrator'
    • 'Azure API Center Compliance Manager'
    • 'Azure API Center Data Reader'
    • 'Azure API Center Service Contributor'
    • 'Azure API Center Service Reader'

Required parameters

Parameter Type Description
principalId string The principal ID of the principal (user/group/identity) to assign the role to.
roleDefinitionIdOrName string The role to assign. You can provide either the display name of the role definition, the role definition GUID, or its fully qualified ID in the following format: '/providers/Microsoft.Authorization/roleDefinitions/c2f4ef07-c644-48eb-af81-4b1b4947fb11'.

Optional parameters

Parameter Type Description
condition string The conditions on the role assignment. This limits the resources it can be assigned to. e.g.: @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:ContainerName] StringEqualsIgnoreCase "foo_storage_container".
conditionVersion string Version of the condition.
delegatedManagedIdentityResourceId string The Resource Id of the delegated managed identity resource.
description string The description of the role assignment.
name string The name (as GUID) of the role assignment. If not provided, a GUID will be generated.
principalType string The principal type of the assigned principal ID.

Parameter: roleAssignments.principalId

The principal ID of the principal (user/group/identity) to assign the role to.

  • Required: Yes
  • Type: string

Parameter: roleAssignments.roleDefinitionIdOrName

The role to assign. You can provide either the display name of the role definition, the role definition GUID, or its fully qualified ID in the following format: '/providers/Microsoft.Authorization/roleDefinitions/c2f4ef07-c644-48eb-af81-4b1b4947fb11'.

  • Required: Yes
  • Type: string

Parameter: roleAssignments.condition

The conditions on the role assignment. This limits the resources it can be assigned to. e.g.: @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:ContainerName] StringEqualsIgnoreCase "foo_storage_container".

  • Required: No
  • Type: string

Parameter: roleAssignments.conditionVersion

Version of the condition.

  • Required: No
  • Type: string
  • Allowed:
    [
      '2.0'
    ]
    

Parameter: roleAssignments.delegatedManagedIdentityResourceId

The Resource Id of the delegated managed identity resource.

  • Required: No
  • Type: string

Parameter: roleAssignments.description

The description of the role assignment.

  • Required: No
  • Type: string

Parameter: roleAssignments.name

The name (as GUID) of the role assignment. If not provided, a GUID will be generated.

  • Required: No
  • Type: string

Parameter: roleAssignments.principalType

The principal type of the assigned principal ID.

  • Required: No
  • Type: string
  • Allowed:
    [
      'Device'
      'ForeignGroup'
      'Group'
      'ServicePrincipal'
      'User'
    ]
    

Parameter: sku

The SKU to deploy, Use Free for evaluation purposes and Standard for long-lived and production deployments. Defaults to Standard.

  • Required: No
  • Type: string
  • Default: 'Standard'
  • Allowed:
    [
      'Free'
      'Standard'
    ]
    

Parameter: tags

Tags of the resource.

  • Required: No
  • Type: object

Outputs

Output Type Description
location string The location the resource was deployed into.
name string The name of the API Center service.
resourceGroupName string The name of the resource group the API Center service was deployed into.
resourceId string The resource ID of the API Center service.
systemAssignedMIPrincipalId string The principal ID of the system assigned identity.

Cross-referenced modules

This section gives you an overview of all local-referenced module files (i.e., other modules that are referenced in this module) and all remote-referenced files (i.e., Bicep modules that are referenced from a Bicep Registry or Template Specs).

Reference Type
./packages/utl-common-types/main.bicep Local Reference

Data Collection

The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices.

Changelog

The latest version of the changelog can be found here.

0.1.0

Changes

  • Initial version

Breaking Changes

  • None
 
 {
  "workingFolder": "packages",
  "packages": [
    // packages defined earlier
    {
      "name": "avm-bicep/api-center-services",
      "version": "0.1.0"
    }
  ]
}

Stats

Selected version:

0.1.0

Downloads this version:

0

Downloads all versions:

0

Latest version:

0.1.0

Latest update:

10-07-2026

avm-bicep

Other versions (1)

Ready to End Infrastructure Code Chaos?

Join infrastructure teams who've moved from scattered repositories to unified package management

Built by infrastructure experts
Who understand your challenges
Complete solutions
No scattered files
See what's deployed where
When it needs updates
Zero vendor lock-in
Packages work without us
No setup fees or contracts Free migration assistance Cancel anytime with no penalties
Direct founder access Zero security incidents in 2+ years Works with any cloud, any CI/CD platform