api-management-services
This Bicep AVM module deploys an API Management Service. The default deployment is set to use a Premium SKU to align with Microsoft WAF-aligned best practices. In most cases, non-prod deployments should use a lower-tier SKU.
ipm add --package avm-bicep/api-management-services --version 0.12.0
API Management Services [Microsoft.ApiManagement/service]
⚠️THIS MODULE IS CURRENTLY ORPHANED.⚠️
- Only security and bug fixes are being handled by the AVM core team at present.
- If interested in becoming the module owner of this orphaned module (must be Microsoft FTE), please look for the related "orphaned module" GitHub issue here!
This module deploys an API Management Service. The default deployment is set to use a Premium SKU to align with Microsoft WAF-aligned best practices. In most cases, non-prod deployments should use a lower-tier SKU.
Navigation
Resource Types
| Resource Type | API Version | References |
|---|---|---|
Microsoft.ApiManagement/service |
2024-05-01 | |
Microsoft.ApiManagement/service/apis |
2024-05-01 | |
Microsoft.ApiManagement/service/apis/diagnostics |
2024-05-01 | |
Microsoft.ApiManagement/service/apis/operations |
2024-05-01 | |
Microsoft.ApiManagement/service/apis/operations/policies |
2024-05-01 | |
Microsoft.ApiManagement/service/apis/policies |
2024-05-01 | |
Microsoft.ApiManagement/service/apiVersionSets |
2024-05-01 | |
Microsoft.ApiManagement/service/authorizationServers |
2024-05-01 | |
Microsoft.ApiManagement/service/backends |
2024-05-01 | |
Microsoft.ApiManagement/service/caches |
2024-05-01 | |
Microsoft.ApiManagement/service/identityProviders |
2024-05-01 | |
Microsoft.ApiManagement/service/loggers |
2024-05-01 | |
Microsoft.ApiManagement/service/namedValues |
2024-05-01 | |
Microsoft.ApiManagement/service/policies |
2024-05-01 | |
Microsoft.ApiManagement/service/portalsettings |
2024-05-01 | |
Microsoft.ApiManagement/service/products |
2024-05-01 | |
Microsoft.ApiManagement/service/products/apis |
2024-05-01 | |
Microsoft.ApiManagement/service/products/groups |
2024-05-01 | |
Microsoft.ApiManagement/service/subscriptions |
2024-05-01 | |
Microsoft.Authorization/locks |
2020-05-01 | |
Microsoft.Authorization/roleAssignments |
2022-04-01 | |
Microsoft.Insights/diagnosticSettings |
2021-05-01-preview | |
Microsoft.Network/privateEndpoints |
2024-10-01 | |
Microsoft.Network/privateEndpoints/privateDnsZoneGroups |
2024-10-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-management-services/main.bicep.
- Deploying a Consumption SKU
- Using only defaults
- Deploying a Developer SKU
- Using large parameter set
- Deploying an APIM v2 sku
- WAF-aligned
Example 1: Deploying a Consumption SKU
This instance deploys the module using a Consumption SKU.
via Bicep module
module service './packages/api-management-services/main.bicep' = {
name: 'serviceDeployment'
params: {
// Required parameters
name: 'apiscon001'
publisherEmail: 'apimgmt-noreply@mail.windowsazure.com'
publisherName: 'az-amorg-x-001'
// Non-required parameters
sku: 'Consumption'
}
}
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": "apiscon001"
},
"publisherEmail": {
"value": "apimgmt-noreply@mail.windowsazure.com"
},
"publisherName": {
"value": "az-amorg-x-001"
},
// Non-required parameters
"sku": {
"value": "Consumption"
}
}
}
via Bicep parameters file
using './packages/api-management-services/main.bicep'
// Required parameters
param name = 'apiscon001'
param publisherEmail = 'apimgmt-noreply@mail.windowsazure.com'
param publisherName = 'az-amorg-x-001'
// Non-required parameters
param sku = 'Consumption'
Example 2: Using only defaults
This instance deploys the module with the minimum set of required parameters.
via Bicep module
module service './packages/api-management-services/main.bicep' = {
name: 'serviceDeployment'
params: {
// Required parameters
name: 'apismin001'
publisherEmail: 'apimgmt-noreply@mail.windowsazure.com'
publisherName: 'az-amorg-x-001'
}
}
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": "apismin001"
},
"publisherEmail": {
"value": "apimgmt-noreply@mail.windowsazure.com"
},
"publisherName": {
"value": "az-amorg-x-001"
}
}
}
via Bicep parameters file
using './packages/api-management-services/main.bicep'
// Required parameters
param name = 'apismin001'
param publisherEmail = 'apimgmt-noreply@mail.windowsazure.com'
param publisherName = 'az-amorg-x-001'
Example 3: Deploying a Developer SKU
This instance deploys the module using a Developer SKU.
via Bicep module
module service './packages/api-management-services/main.bicep' = {
name: 'serviceDeployment'
params: {
// Required parameters
name: 'apisdev001'
publisherEmail: 'apimgmt-noreply@mail.windowsazure.com'
publisherName: 'az-amorg-x-001'
// Non-required parameters
enableDeveloperPortal: true
sku: 'Developer'
}
}
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": "apisdev001"
},
"publisherEmail": {
"value": "apimgmt-noreply@mail.windowsazure.com"
},
"publisherName": {
"value": "az-amorg-x-001"
},
// Non-required parameters
"enableDeveloperPortal": {
"value": true
},
"sku": {
"value": "Developer"
}
}
}
via Bicep parameters file
using './packages/api-management-services/main.bicep'
// Required parameters
param name = 'apisdev001'
param publisherEmail = 'apimgmt-noreply@mail.windowsazure.com'
param publisherName = 'az-amorg-x-001'
// Non-required parameters
param enableDeveloperPortal = true
param sku = 'Developer'
Example 4: Using large parameter set
This instance deploys the module with most of its features enabled.
via Bicep module
module service './packages/api-management-services/main.bicep' = {
name: 'serviceDeployment'
params: {
// Required parameters
name: 'apismax001'
publisherEmail: 'apimgmt-noreply@mail.windowsazure.com'
publisherName: 'az-amorg-x-001'
// Non-required parameters
additionalLocations: [
{
disableGateway: false
location: '<location>'
publicIpAddressResourceId: '<publicIpAddressResourceId>'
sku: {
capacity: 1
name: 'Premium'
}
virtualNetworkConfiguration: {
subnetResourceId: '<subnetResourceId>'
}
}
]
apiDiagnostics: [
{
apiName: 'echo-api'
loggerName: 'logger'
metrics: true
name: 'applicationinsights'
}
]
apis: [
{
apiVersionSetName: 'echo-version-set'
displayName: 'Echo API'
name: 'echo-api'
path: 'echo'
protocols: [
'http'
'https'
]
serviceUrl: 'http://echoapi.cloudapp.net/api'
}
]
apiVersionSets: [
{
description: 'echo-version-set'
displayName: 'echo-version-set'
name: 'echo-version-set'
versioningScheme: 'Segment'
}
]
authorizationServers: [
{
authorizationEndpoint: '<authorizationEndpoint>'
clientId: 'apimclientid'
clientRegistrationEndpoint: 'http://localhost'
clientSecret: '<clientSecret>'
displayName: 'AuthServer1'
grantTypes: [
'authorizationCode'
]
name: 'AuthServer1'
tokenEndpoint: '<tokenEndpoint>'
}
]
backends: [
{
name: 'backend'
tls: {
validateCertificateChain: false
validateCertificateName: false
}
url: 'http://echoapi.cloudapp.net/api'
}
]
caches: [
{
connectionString: 'connectionstringtest'
name: 'westeurope'
useFromLocation: 'westeurope'
}
]
diagnosticSettings: [
{
eventHubAuthorizationRuleResourceId: '<eventHubAuthorizationRuleResourceId>'
eventHubName: '<eventHubName>'
metricCategories: [
{
category: 'AllMetrics'
}
]
name: 'customSetting'
storageAccountResourceId: '<storageAccountResourceId>'
workspaceResourceId: '<workspaceResourceId>'
}
]
identityProviders: [
{
allowedTenants: [
'mytenant.onmicrosoft.com'
]
authority: '<authority>'
clientId: 'apimClientid'
clientLibrary: 'MSAL-2'
clientSecret: 'apimSlientSecret'
name: 'aad'
signInTenant: 'mytenant.onmicrosoft.com'
}
]
location: '<location>'
lock: {
kind: 'CanNotDelete'
name: 'myCustomLockName'
}
loggers: [
{
credentials: {
instrumentationKey: '<instrumentationKey>'
}
description: 'Logger to Azure Application Insights'
isBuffered: false
name: 'logger'
targetResourceId: '<targetResourceId>'
type: 'applicationInsights'
}
]
managedIdentities: {
systemAssigned: true
userAssignedResourceIds: [
'<managedIdentityResourceId>'
]
}
namedValues: [
{
displayName: 'apimkey'
name: 'apimkey'
secret: true
}
]
policies: [
{
format: 'xml'
value: '<policies> <inbound> <rate-limit-by-key calls=\'250\' renewal-period=\'60\' counter-key=\'@(context.Request.IpAddress)\' /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>'
}
]
portalsettings: [
{
name: 'signin'
properties: {
enabled: false
}
}
{
name: 'signup'
properties: {
enabled: false
termsOfService: {
consentRequired: false
enabled: false
}
}
}
]
products: [
{
apis: [
'echo-api'
]
approvalRequired: false
displayName: 'Starter'
groups: [
'developers'
]
name: 'Starter'
subscriptionRequired: false
}
]
publicIpAddressResourceId: '<publicIpAddressResourceId>'
publicNetworkAccess: 'Enabled'
roleAssignments: [
{
name: '6352c3e3-ac6b-43d5-ac43-1077ff373721'
principalId: '<principalId>'
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: 'Owner'
}
{
name: '<name>'
principalId: '<principalId>'
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: 'b24988ac-6180-42a0-ab88-20f7382dd24c'
}
{
principalId: '<principalId>'
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: '<roleDefinitionIdOrName>'
}
]
subnetResourceId: '<subnetResourceId>'
subscriptions: [
{
displayName: 'testArmSubscriptionAllApis'
name: 'testArmSubscriptionAllApis'
scope: '/apis'
}
]
tags: {
Environment: 'Non-Prod'
'hidden-title': 'This is visible in the resource name'
Role: 'DeploymentValidation'
}
virtualNetworkType: 'Internal'
}
}
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": "apismax001"
},
"publisherEmail": {
"value": "apimgmt-noreply@mail.windowsazure.com"
},
"publisherName": {
"value": "az-amorg-x-001"
},
// Non-required parameters
"additionalLocations": {
"value": [
{
"disableGateway": false,
"location": "<location>",
"publicIpAddressResourceId": "<publicIpAddressResourceId>",
"sku": {
"capacity": 1,
"name": "Premium"
},
"virtualNetworkConfiguration": {
"subnetResourceId": "<subnetResourceId>"
}
}
]
},
"apiDiagnostics": {
"value": [
{
"apiName": "echo-api",
"loggerName": "logger",
"metrics": true,
"name": "applicationinsights"
}
]
},
"apis": {
"value": [
{
"apiVersionSetName": "echo-version-set",
"displayName": "Echo API",
"name": "echo-api",
"path": "echo",
"protocols": [
"http",
"https"
],
"serviceUrl": "http://echoapi.cloudapp.net/api"
}
]
},
"apiVersionSets": {
"value": [
{
"description": "echo-version-set",
"displayName": "echo-version-set",
"name": "echo-version-set",
"versioningScheme": "Segment"
}
]
},
"authorizationServers": {
"value": [
{
"authorizationEndpoint": "<authorizationEndpoint>",
"clientId": "apimclientid",
"clientRegistrationEndpoint": "http://localhost",
"clientSecret": "<clientSecret>",
"displayName": "AuthServer1",
"grantTypes": [
"authorizationCode"
],
"name": "AuthServer1",
"tokenEndpoint": "<tokenEndpoint>"
}
]
},
"backends": {
"value": [
{
"name": "backend",
"tls": {
"validateCertificateChain": false,
"validateCertificateName": false
},
"url": "http://echoapi.cloudapp.net/api"
}
]
},
"caches": {
"value": [
{
"connectionString": "connectionstringtest",
"name": "westeurope",
"useFromLocation": "westeurope"
}
]
},
"diagnosticSettings": {
"value": [
{
"eventHubAuthorizationRuleResourceId": "<eventHubAuthorizationRuleResourceId>",
"eventHubName": "<eventHubName>",
"metricCategories": [
{
"category": "AllMetrics"
}
],
"name": "customSetting",
"storageAccountResourceId": "<storageAccountResourceId>",
"workspaceResourceId": "<workspaceResourceId>"
}
]
},
"identityProviders": {
"value": [
{
"allowedTenants": [
"mytenant.onmicrosoft.com"
],
"authority": "<authority>",
"clientId": "apimClientid",
"clientLibrary": "MSAL-2",
"clientSecret": "apimSlientSecret",
"name": "aad",
"signInTenant": "mytenant.onmicrosoft.com"
}
]
},
"location": {
"value": "<location>"
},
"lock": {
"value": {
"kind": "CanNotDelete",
"name": "myCustomLockName"
}
},
"loggers": {
"value": [
{
"credentials": {
"instrumentationKey": "<instrumentationKey>"
},
"description": "Logger to Azure Application Insights",
"isBuffered": false,
"name": "logger",
"targetResourceId": "<targetResourceId>",
"type": "applicationInsights"
}
]
},
"managedIdentities": {
"value": {
"systemAssigned": true,
"userAssignedResourceIds": [
"<managedIdentityResourceId>"
]
}
},
"namedValues": {
"value": [
{
"displayName": "apimkey",
"name": "apimkey",
"secret": true
}
]
},
"policies": {
"value": [
{
"format": "xml",
"value": "<policies> <inbound> <rate-limit-by-key calls=\"250\" renewal-period=\"60\" counter-key=\"@(context.Request.IpAddress)\" /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>"
}
]
},
"portalsettings": {
"value": [
{
"name": "signin",
"properties": {
"enabled": false
}
},
{
"name": "signup",
"properties": {
"enabled": false,
"termsOfService": {
"consentRequired": false,
"enabled": false
}
}
}
]
},
"products": {
"value": [
{
"apis": [
"echo-api"
],
"approvalRequired": false,
"displayName": "Starter",
"groups": [
"developers"
],
"name": "Starter",
"subscriptionRequired": false
}
]
},
"publicIpAddressResourceId": {
"value": "<publicIpAddressResourceId>"
},
"publicNetworkAccess": {
"value": "Enabled"
},
"roleAssignments": {
"value": [
{
"name": "6352c3e3-ac6b-43d5-ac43-1077ff373721",
"principalId": "<principalId>",
"principalType": "ServicePrincipal",
"roleDefinitionIdOrName": "Owner"
},
{
"name": "<name>",
"principalId": "<principalId>",
"principalType": "ServicePrincipal",
"roleDefinitionIdOrName": "b24988ac-6180-42a0-ab88-20f7382dd24c"
},
{
"principalId": "<principalId>",
"principalType": "ServicePrincipal",
"roleDefinitionIdOrName": "<roleDefinitionIdOrName>"
}
]
},
"subnetResourceId": {
"value": "<subnetResourceId>"
},
"subscriptions": {
"value": [
{
"displayName": "testArmSubscriptionAllApis",
"name": "testArmSubscriptionAllApis",
"scope": "/apis"
}
]
},
"tags": {
"value": {
"Environment": "Non-Prod",
"hidden-title": "This is visible in the resource name",
"Role": "DeploymentValidation"
}
},
"virtualNetworkType": {
"value": "Internal"
}
}
}
via Bicep parameters file
using './packages/api-management-services/main.bicep'
// Required parameters
param name = 'apismax001'
param publisherEmail = 'apimgmt-noreply@mail.windowsazure.com'
param publisherName = 'az-amorg-x-001'
// Non-required parameters
param additionalLocations = [
{
disableGateway: false
location: '<location>'
publicIpAddressResourceId: '<publicIpAddressResourceId>'
sku: {
capacity: 1
name: 'Premium'
}
virtualNetworkConfiguration: {
subnetResourceId: '<subnetResourceId>'
}
}
]
param apiDiagnostics = [
{
apiName: 'echo-api'
loggerName: 'logger'
metrics: true
name: 'applicationinsights'
}
]
param apis = [
{
apiVersionSetName: 'echo-version-set'
displayName: 'Echo API'
name: 'echo-api'
path: 'echo'
protocols: [
'http'
'https'
]
serviceUrl: 'http://echoapi.cloudapp.net/api'
}
]
param apiVersionSets = [
{
description: 'echo-version-set'
displayName: 'echo-version-set'
name: 'echo-version-set'
versioningScheme: 'Segment'
}
]
param authorizationServers = [
{
authorizationEndpoint: '<authorizationEndpoint>'
clientId: 'apimclientid'
clientRegistrationEndpoint: 'http://localhost'
clientSecret: '<clientSecret>'
displayName: 'AuthServer1'
grantTypes: [
'authorizationCode'
]
name: 'AuthServer1'
tokenEndpoint: '<tokenEndpoint>'
}
]
param backends = [
{
name: 'backend'
tls: {
validateCertificateChain: false
validateCertificateName: false
}
url: 'http://echoapi.cloudapp.net/api'
}
]
param caches = [
{
connectionString: 'connectionstringtest'
name: 'westeurope'
useFromLocation: 'westeurope'
}
]
param diagnosticSettings = [
{
eventHubAuthorizationRuleResourceId: '<eventHubAuthorizationRuleResourceId>'
eventHubName: '<eventHubName>'
metricCategories: [
{
category: 'AllMetrics'
}
]
name: 'customSetting'
storageAccountResourceId: '<storageAccountResourceId>'
workspaceResourceId: '<workspaceResourceId>'
}
]
param identityProviders = [
{
allowedTenants: [
'mytenant.onmicrosoft.com'
]
authority: '<authority>'
clientId: 'apimClientid'
clientLibrary: 'MSAL-2'
clientSecret: 'apimSlientSecret'
name: 'aad'
signInTenant: 'mytenant.onmicrosoft.com'
}
]
param location = '<location>'
param lock = {
kind: 'CanNotDelete'
name: 'myCustomLockName'
}
param loggers = [
{
credentials: {
instrumentationKey: '<instrumentationKey>'
}
description: 'Logger to Azure Application Insights'
isBuffered: false
name: 'logger'
targetResourceId: '<targetResourceId>'
type: 'applicationInsights'
}
]
param managedIdentities = {
systemAssigned: true
userAssignedResourceIds: [
'<managedIdentityResourceId>'
]
}
param namedValues = [
{
displayName: 'apimkey'
name: 'apimkey'
secret: true
}
]
param policies = [
{
format: 'xml'
value: '<policies> <inbound> <rate-limit-by-key calls=\'250\' renewal-period=\'60\' counter-key=\'@(context.Request.IpAddress)\' /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>'
}
]
param portalsettings = [
{
name: 'signin'
properties: {
enabled: false
}
}
{
name: 'signup'
properties: {
enabled: false
termsOfService: {
consentRequired: false
enabled: false
}
}
}
]
param products = [
{
apis: [
'echo-api'
]
approvalRequired: false
displayName: 'Starter'
groups: [
'developers'
]
name: 'Starter'
subscriptionRequired: false
}
]
param publicIpAddressResourceId = '<publicIpAddressResourceId>'
param publicNetworkAccess = 'Enabled'
param roleAssignments = [
{
name: '6352c3e3-ac6b-43d5-ac43-1077ff373721'
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 subnetResourceId = '<subnetResourceId>'
param subscriptions = [
{
displayName: 'testArmSubscriptionAllApis'
name: 'testArmSubscriptionAllApis'
scope: '/apis'
}
]
param tags = {
Environment: 'Non-Prod'
'hidden-title': 'This is visible in the resource name'
Role: 'DeploymentValidation'
}
param virtualNetworkType = 'Internal'
Example 5: Deploying an APIM v2 sku
This instance deploys the module using a v2 SKU.
via Bicep module
module service './packages/api-management-services/main.bicep' = {
name: 'serviceDeployment'
params: {
// Required parameters
name: 'apisv2s001'
publisherEmail: 'apimgmt-noreply@mail.windowsazure.com'
publisherName: 'az-amorg-x-001'
// Non-required parameters
enableDeveloperPortal: true
sku: 'BasicV2'
}
}
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": "apisv2s001"
},
"publisherEmail": {
"value": "apimgmt-noreply@mail.windowsazure.com"
},
"publisherName": {
"value": "az-amorg-x-001"
},
// Non-required parameters
"enableDeveloperPortal": {
"value": true
},
"sku": {
"value": "BasicV2"
}
}
}
via Bicep parameters file
using './packages/api-management-services/main.bicep'
// Required parameters
param name = 'apisv2s001'
param publisherEmail = 'apimgmt-noreply@mail.windowsazure.com'
param publisherName = 'az-amorg-x-001'
// Non-required parameters
param enableDeveloperPortal = true
param sku = 'BasicV2'
Example 6: WAF-aligned
This instance deploys the module in alignment with the best-practices of the Azure Well-Architected Framework.
via Bicep module
module service './packages/api-management-services/main.bicep' = {
name: 'serviceDeployment'
params: {
// Required parameters
name: 'apiswaf002'
publisherEmail: 'apimgmt-noreply@mail.windowsazure.com'
publisherName: 'az-amorg-x-001'
// Non-required parameters
additionalLocations: [
{
availabilityZones: [
1
2
3
]
disableGateway: false
location: '<location>'
sku: {
capacity: 3
name: 'Premium'
}
}
]
apis: [
{
apiVersionSetName: 'echo-version-set'
description: 'An echo API service'
displayName: 'Echo API'
name: 'echo-api'
path: 'echo'
protocols: [
'https'
]
serviceUrl: 'https://echoapi.cloudapp.net/api'
}
]
apiVersionSets: [
{
description: 'An echo API version set'
displayName: 'Echo version set'
name: 'echo-version-set'
versioningScheme: 'Segment'
}
]
authorizationServers: [
{
authorizationEndpoint: '<authorizationEndpoint>'
clientId: 'apimClientid'
clientRegistrationEndpoint: 'https://localhost'
clientSecret: '<clientSecret>'
displayName: 'AuthServer1'
grantTypes: [
'authorizationCode'
]
name: 'AuthServer1'
tokenEndpoint: '<tokenEndpoint>'
}
]
backends: [
{
name: 'backend'
tls: {
validateCertificateChain: true
validateCertificateName: true
}
url: 'https://echoapi.cloudapp.net/api'
}
]
caches: [
{
connectionString: 'connectionstringtest'
name: 'westeurope'
useFromLocation: 'westeurope'
}
]
customProperties: {
'Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2': 'True'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11': 'False'
}
diagnosticSettings: [
{
eventHubAuthorizationRuleResourceId: '<eventHubAuthorizationRuleResourceId>'
eventHubName: '<eventHubName>'
storageAccountResourceId: '<storageAccountResourceId>'
workspaceResourceId: '<workspaceResourceId>'
}
]
identityProviders: [
{
allowedTenants: [
'mytenant.onmicrosoft.com'
]
authority: '<authority>'
clientId: 'apimClientid'
clientLibrary: 'MSAL-2'
clientSecret: '<clientSecret>'
name: 'aad'
signInTenant: 'mytenant.onmicrosoft.com'
}
]
loggers: [
{
credentials: {
instrumentationKey: '<instrumentationKey>'
}
description: 'Logger to Azure Application Insights'
isBuffered: false
name: 'logger'
targetResourceId: '<targetResourceId>'
type: 'applicationInsights'
}
]
managedIdentities: {
systemAssigned: true
userAssignedResourceIds: [
'<managedIdentityResourceId>'
]
}
namedValues: [
{
displayName: 'apimkey'
name: 'apimkey'
secret: true
}
]
policies: [
{
format: 'xml'
value: '<policies> <inbound> <rate-limit-by-key calls=\'250\' renewal-period=\'60\' counter-key=\'@(context.Request.IpAddress)\' /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>'
}
]
portalsettings: [
{
name: 'signin'
properties: {
enabled: false
}
}
{
name: 'signup'
properties: {
enabled: false
termsOfService: {
consentRequired: false
enabled: false
}
}
}
]
privateEndpoints: [
{
privateDnsZoneGroup: {
privateDnsZoneGroupConfigs: [
{
privateDnsZoneResourceId: '<privateDnsZoneResourceId>'
}
]
}
subnetResourceId: '<subnetResourceId>'
}
]
products: [
{
apis: [
'echo-api'
]
approvalRequired: true
description: 'This is an echo API'
displayName: 'Echo API'
groups: [
'developers'
]
name: 'Starter'
subscriptionRequired: true
terms: 'By accessing or using the services provided by Echo API through Azure API Management, you agree to be bound by these Terms of Use. These terms may be updated from time to time, and your continued use of the services constitutes acceptance of any changes.'
}
]
publicNetworkAccess: '<publicNetworkAccess>'
subscriptions: [
{
displayName: 'testArmSubscriptionAllApis'
name: 'testArmSubscriptionAllApis'
scope: '/apis'
}
]
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": "apiswaf002"
},
"publisherEmail": {
"value": "apimgmt-noreply@mail.windowsazure.com"
},
"publisherName": {
"value": "az-amorg-x-001"
},
// Non-required parameters
"additionalLocations": {
"value": [
{
"availabilityZones": [
1,
2,
3
],
"disableGateway": false,
"location": "<location>",
"sku": {
"capacity": 3,
"name": "Premium"
}
}
]
},
"apis": {
"value": [
{
"apiVersionSetName": "echo-version-set",
"description": "An echo API service",
"displayName": "Echo API",
"name": "echo-api",
"path": "echo",
"protocols": [
"https"
],
"serviceUrl": "https://echoapi.cloudapp.net/api"
}
]
},
"apiVersionSets": {
"value": [
{
"description": "An echo API version set",
"displayName": "Echo version set",
"name": "echo-version-set",
"versioningScheme": "Segment"
}
]
},
"authorizationServers": {
"value": [
{
"authorizationEndpoint": "<authorizationEndpoint>",
"clientId": "apimClientid",
"clientRegistrationEndpoint": "https://localhost",
"clientSecret": "<clientSecret>",
"displayName": "AuthServer1",
"grantTypes": [
"authorizationCode"
],
"name": "AuthServer1",
"tokenEndpoint": "<tokenEndpoint>"
}
]
},
"backends": {
"value": [
{
"name": "backend",
"tls": {
"validateCertificateChain": true,
"validateCertificateName": true
},
"url": "https://echoapi.cloudapp.net/api"
}
]
},
"caches": {
"value": [
{
"connectionString": "connectionstringtest",
"name": "westeurope",
"useFromLocation": "westeurope"
}
]
},
"customProperties": {
"value": {
"Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": "True",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": "False",
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": "False"
}
},
"diagnosticSettings": {
"value": [
{
"eventHubAuthorizationRuleResourceId": "<eventHubAuthorizationRuleResourceId>",
"eventHubName": "<eventHubName>",
"storageAccountResourceId": "<storageAccountResourceId>",
"workspaceResourceId": "<workspaceResourceId>"
}
]
},
"identityProviders": {
"value": [
{
"allowedTenants": [
"mytenant.onmicrosoft.com"
],
"authority": "<authority>",
"clientId": "apimClientid",
"clientLibrary": "MSAL-2",
"clientSecret": "<clientSecret>",
"name": "aad",
"signInTenant": "mytenant.onmicrosoft.com"
}
]
},
"loggers": {
"value": [
{
"credentials": {
"instrumentationKey": "<instrumentationKey>"
},
"description": "Logger to Azure Application Insights",
"isBuffered": false,
"name": "logger",
"targetResourceId": "<targetResourceId>",
"type": "applicationInsights"
}
]
},
"managedIdentities": {
"value": {
"systemAssigned": true,
"userAssignedResourceIds": [
"<managedIdentityResourceId>"
]
}
},
"namedValues": {
"value": [
{
"displayName": "apimkey",
"name": "apimkey",
"secret": true
}
]
},
"policies": {
"value": [
{
"format": "xml",
"value": "<policies> <inbound> <rate-limit-by-key calls=\"250\" renewal-period=\"60\" counter-key=\"@(context.Request.IpAddress)\" /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>"
}
]
},
"portalsettings": {
"value": [
{
"name": "signin",
"properties": {
"enabled": false
}
},
{
"name": "signup",
"properties": {
"enabled": false,
"termsOfService": {
"consentRequired": false,
"enabled": false
}
}
}
]
},
"privateEndpoints": {
"value": [
{
"privateDnsZoneGroup": {
"privateDnsZoneGroupConfigs": [
{
"privateDnsZoneResourceId": "<privateDnsZoneResourceId>"
}
]
},
"subnetResourceId": "<subnetResourceId>"
}
]
},
"products": {
"value": [
{
"apis": [
"echo-api"
],
"approvalRequired": true,
"description": "This is an echo API",
"displayName": "Echo API",
"groups": [
"developers"
],
"name": "Starter",
"subscriptionRequired": true,
"terms": "By accessing or using the services provided by Echo API through Azure API Management, you agree to be bound by these Terms of Use. These terms may be updated from time to time, and your continued use of the services constitutes acceptance of any changes."
}
]
},
"publicNetworkAccess": {
"value": "<publicNetworkAccess>"
},
"subscriptions": {
"value": [
{
"displayName": "testArmSubscriptionAllApis",
"name": "testArmSubscriptionAllApis",
"scope": "/apis"
}
]
},
"tags": {
"value": {
"Environment": "Non-Prod",
"hidden-title": "This is visible in the resource name",
"Role": "DeploymentValidation"
}
}
}
}
via Bicep parameters file
using './packages/api-management-services/main.bicep'
// Required parameters
param name = 'apiswaf002'
param publisherEmail = 'apimgmt-noreply@mail.windowsazure.com'
param publisherName = 'az-amorg-x-001'
// Non-required parameters
param additionalLocations = [
{
availabilityZones: [
1
2
3
]
disableGateway: false
location: '<location>'
sku: {
capacity: 3
name: 'Premium'
}
}
]
param apis = [
{
apiVersionSetName: 'echo-version-set'
description: 'An echo API service'
displayName: 'Echo API'
name: 'echo-api'
path: 'echo'
protocols: [
'https'
]
serviceUrl: 'https://echoapi.cloudapp.net/api'
}
]
param apiVersionSets = [
{
description: 'An echo API version set'
displayName: 'Echo version set'
name: 'echo-version-set'
versioningScheme: 'Segment'
}
]
param authorizationServers = [
{
authorizationEndpoint: '<authorizationEndpoint>'
clientId: 'apimClientid'
clientRegistrationEndpoint: 'https://localhost'
clientSecret: '<clientSecret>'
displayName: 'AuthServer1'
grantTypes: [
'authorizationCode'
]
name: 'AuthServer1'
tokenEndpoint: '<tokenEndpoint>'
}
]
param backends = [
{
name: 'backend'
tls: {
validateCertificateChain: true
validateCertificateName: true
}
url: 'https://echoapi.cloudapp.net/api'
}
]
param caches = [
{
connectionString: 'connectionstringtest'
name: 'westeurope'
useFromLocation: 'westeurope'
}
]
param customProperties = {
'Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2': 'True'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10': 'False'
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11': 'False'
}
param diagnosticSettings = [
{
eventHubAuthorizationRuleResourceId: '<eventHubAuthorizationRuleResourceId>'
eventHubName: '<eventHubName>'
storageAccountResourceId: '<storageAccountResourceId>'
workspaceResourceId: '<workspaceResourceId>'
}
]
param identityProviders = [
{
allowedTenants: [
'mytenant.onmicrosoft.com'
]
authority: '<authority>'
clientId: 'apimClientid'
clientLibrary: 'MSAL-2'
clientSecret: '<clientSecret>'
name: 'aad'
signInTenant: 'mytenant.onmicrosoft.com'
}
]
param loggers = [
{
credentials: {
instrumentationKey: '<instrumentationKey>'
}
description: 'Logger to Azure Application Insights'
isBuffered: false
name: 'logger'
targetResourceId: '<targetResourceId>'
type: 'applicationInsights'
}
]
param managedIdentities = {
systemAssigned: true
userAssignedResourceIds: [
'<managedIdentityResourceId>'
]
}
param namedValues = [
{
displayName: 'apimkey'
name: 'apimkey'
secret: true
}
]
param policies = [
{
format: 'xml'
value: '<policies> <inbound> <rate-limit-by-key calls=\'250\' renewal-period=\'60\' counter-key=\'@(context.Request.IpAddress)\' /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>'
}
]
param portalsettings = [
{
name: 'signin'
properties: {
enabled: false
}
}
{
name: 'signup'
properties: {
enabled: false
termsOfService: {
consentRequired: false
enabled: false
}
}
}
]
param privateEndpoints = [
{
privateDnsZoneGroup: {
privateDnsZoneGroupConfigs: [
{
privateDnsZoneResourceId: '<privateDnsZoneResourceId>'
}
]
}
subnetResourceId: '<subnetResourceId>'
}
]
param products = [
{
apis: [
'echo-api'
]
approvalRequired: true
description: 'This is an echo API'
displayName: 'Echo API'
groups: [
'developers'
]
name: 'Starter'
subscriptionRequired: true
terms: 'By accessing or using the services provided by Echo API through Azure API Management, you agree to be bound by these Terms of Use. These terms may be updated from time to time, and your continued use of the services constitutes acceptance of any changes.'
}
]
param publicNetworkAccess = '<publicNetworkAccess>'
param subscriptions = [
{
displayName: 'testArmSubscriptionAllApis'
name: 'testArmSubscriptionAllApis'
scope: '/apis'
}
]
param tags = {
Environment: 'Non-Prod'
'hidden-title': 'This is visible in the resource name'
Role: 'DeploymentValidation'
}
Parameters
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | The name of the API Management service. |
publisherEmail |
string | The email address of the owner of the service. |
publisherName |
string | The name of the owner of the service. |
Conditional parameters
| Parameter | Type | Description |
|---|---|---|
skuCapacity |
int | The scale units for this API Management service. Required if using Basic, Standard, or Premium skus. For range of capacities for each sku, reference https://azure.microsoft.com/en-us/pricing/details/api-management/. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
additionalLocations |
array | Additional datacenter locations of the API Management service. Not supported with V2 SKUs. |
apiDiagnostics |
array | API Diagnostics. |
apis |
array | APIs. |
apiVersionSets |
array | API Version Sets. |
authorizationServers |
array | Authorization servers. |
availabilityZones |
array | A list of availability zones denoting where the resource needs to come from. Only supported by Premium sku. |
backends |
array | Backends. |
caches |
array | Caches. |
certificates |
array | List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10. |
customProperties |
object | Custom properties of the API Management service. Not supported if SKU is Consumption. |
diagnosticSettings |
array | The diagnostic settings of the service. |
disableGateway |
bool | Property only valid for an API Management service deployed in multiple locations. This can be used to disable the gateway in master region. |
enableClientCertificate |
bool | Property only meant to be used for Consumption SKU Service. This enforces a client certificate to be presented on each request to the gateway. This also enables the ability to authenticate the certificate in the policy on the gateway. |
enableDeveloperPortal |
bool | Enable the Developer Portal. The developer portal is not supported on the Consumption SKU. |
enableTelemetry |
bool | Enable/Disable usage telemetry for module. |
hostnameConfigurations |
array | Custom hostname configuration of the API Management service. |
identityProviders |
array | Identity providers. |
location |
string | Location for all Resources. |
lock |
object | The lock settings of the service. |
loggers |
array | Loggers. |
managedIdentities |
object | The managed identity definition for this resource. |
minApiVersion |
string | Limit control plane API calls to API Management service with version equal to or newer than this value. |
namedValues |
array | Named values. |
newGuidValue |
string | Necessary to create a new GUID. |
notificationSenderEmail |
string | The notification sender email address for the service. |
policies |
array | Policies. |
portalsettings |
array | Portal settings. |
privateEndpoints |
array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
products |
array | Products. |
publicIpAddressResourceId |
string | Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the region. Supported only for Developer and Premium SKU being deployed in Virtual Network. |
publicNetworkAccess |
string | Whether or not public endpoint access is allowed for this API Management service. If set to 'Disabled', private endpoints are the exclusive access method. MUST be enabled during service creation. |
restore |
bool | Undelete API Management Service if it was previously soft-deleted. If this flag is specified and set to True all other properties will be ignored. |
roleAssignments |
array | Array of role assignments to create. |
sku |
string | The pricing tier of this API Management service. |
subnetResourceId |
string | The full resource ID of a subnet in a virtual network to deploy the API Management service in. |
subscriptions |
array | Subscriptions. |
tags |
object | Tags of the resource. |
virtualNetworkType |
string | The type of VPN in which API Management service needs to be configured in. None (Default Value) means the API Management service is not part of any Virtual Network, External means the API Management deployment is set up inside a Virtual Network having an internet Facing Endpoint, and Internal means that API Management deployment is setup inside a Virtual Network having an Intranet Facing Endpoint only. |
Parameter: name
The name of the API Management service.
- Required: Yes
- Type: string
Parameter: publisherEmail
The email address of the owner of the service.
- Required: Yes
- Type: string
Parameter: publisherName
The name of the owner of the service.
- Required: Yes
- Type: string
Parameter: skuCapacity
The scale units for this API Management service. Required if using Basic, Standard, or Premium skus. For range of capacities for each sku, reference https://azure.microsoft.com/en-us/pricing/details/api-management/.
- Required: No
- Type: int
- Default:
3
Parameter: additionalLocations
Additional datacenter locations of the API Management service. Not supported with V2 SKUs.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
location |
string | The location name of the additional region among Azure Data center regions. |
sku |
object | SKU properties of the API Management service. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
availabilityZones |
array | A list of availability zones denoting where the resource needs to come from. |
disableGateway |
bool | Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in this additional location. |
natGatewayState |
string | Property can be used to enable NAT Gateway for this API Management service. |
publicIpAddressResourceId |
string | Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the location. Supported only for Premium SKU being deployed in Virtual Network. |
virtualNetworkConfiguration |
object | Virtual network configuration for the location. |
Parameter: additionalLocations.location
The location name of the additional region among Azure Data center regions.
- Required: Yes
- Type: string
Parameter: additionalLocations.sku
SKU properties of the API Management service.
- Required: Yes
- Type: object
Required parameters
| Parameter | Type | Description |
|---|---|---|
capacity |
int | Capacity of the SKU (number of deployed units of the SKU). For Consumption SKU capacity must be specified as 0. |
name |
string | Name of the Sku. |
Parameter: additionalLocations.sku.capacity
Capacity of the SKU (number of deployed units of the SKU). For Consumption SKU capacity must be specified as 0.
- Required: Yes
- Type: int
Parameter: additionalLocations.sku.name
Name of the Sku.
- Required: Yes
- Type: string
- Allowed:
[ 'Basic' 'BasicV2' 'Consumption' 'Developer' 'Isolated' 'Premium' 'Standard' 'StandardV2' ]
Parameter: additionalLocations.availabilityZones
A list of availability zones denoting where the resource needs to come from.
- Required: No
- Type: array
- Allowed:
[ 1 2 3 ]
Parameter: additionalLocations.disableGateway
Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in this additional location.
- Required: No
- Type: bool
Parameter: additionalLocations.natGatewayState
Property can be used to enable NAT Gateway for this API Management service.
- Required: No
- Type: string
- Allowed:
[ 'Disabled' 'Enabled' ]
Parameter: additionalLocations.publicIpAddressResourceId
Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the location. Supported only for Premium SKU being deployed in Virtual Network.
- Required: No
- Type: string
Parameter: additionalLocations.virtualNetworkConfiguration
Virtual network configuration for the location.
- Required: No
- Type: object
Required parameters
| Parameter | Type | Description |
|---|---|---|
subnetResourceId |
string | The full resource ID of a subnet in a virtual network to deploy the API Management service in. |
Parameter: additionalLocations.virtualNetworkConfiguration.subnetResourceId
The full resource ID of a subnet in a virtual network to deploy the API Management service in.
- Required: Yes
- Type: string
Parameter: apiDiagnostics
API Diagnostics.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
apiName |
string | The name of the parent API. |
loggerName |
string | The name of the logger. |
Conditional parameters
| Parameter | Type | Description |
|---|---|---|
httpCorrelationProtocol |
string | Sets correlation protocol to use for Application Insights diagnostics. Required if using Application Insights. |
metrics |
bool | Emit custom metrics via emit-metric policy. Required if using Application Insights. |
operationNameFormat |
string | The format of the Operation Name for Application Insights telemetries. Required if using Application Insights. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
alwaysLog |
string | Specifies for what type of messages sampling settings should not apply. |
backend |
object | Diagnostic settings for incoming/outgoing HTTP messages to the Backend. |
frontend |
object | Diagnostic settings for incoming/outgoing HTTP messages to the Gateway. |
logClientIp |
bool | Log the ClientIP. |
name |
string | Type of diagnostic resource. |
samplingPercentage |
int | Rate of sampling for fixed-rate sampling. Specifies the percentage of requests that are logged. 0% sampling means zero requests logged, while 100% sampling means all requests logged. |
verbosity |
string | The verbosity level applied to traces emitted by trace policies. |
Parameter: apiDiagnostics.apiName
The name of the parent API.
- Required: Yes
- Type: string
Parameter: apiDiagnostics.loggerName
The name of the logger.
- Required: Yes
- Type: string
Parameter: apiDiagnostics.httpCorrelationProtocol
Sets correlation protocol to use for Application Insights diagnostics. Required if using Application Insights.
- Required: No
- Type: string
- Allowed:
[ 'Legacy' 'None' 'W3C' ]
Parameter: apiDiagnostics.metrics
Emit custom metrics via emit-metric policy. Required if using Application Insights.
- Required: No
- Type: bool
Parameter: apiDiagnostics.operationNameFormat
The format of the Operation Name for Application Insights telemetries. Required if using Application Insights.
- Required: No
- Type: string
- Allowed:
[ 'Name' 'URI' ]
Parameter: apiDiagnostics.alwaysLog
Specifies for what type of messages sampling settings should not apply.
- Required: No
- Type: string
Parameter: apiDiagnostics.backend
Diagnostic settings for incoming/outgoing HTTP messages to the Backend.
- Required: No
- Type: object
Parameter: apiDiagnostics.frontend
Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.
- Required: No
- Type: object
Parameter: apiDiagnostics.logClientIp
Log the ClientIP.
- Required: No
- Type: bool
Parameter: apiDiagnostics.name
Type of diagnostic resource.
- Required: No
- Type: string
- Allowed:
[ 'applicationinsights' 'azuremonitor' 'local' ]
Parameter: apiDiagnostics.samplingPercentage
Rate of sampling for fixed-rate sampling. Specifies the percentage of requests that are logged. 0% sampling means zero requests logged, while 100% sampling means all requests logged.
- Required: No
- Type: int
Parameter: apiDiagnostics.verbosity
The verbosity level applied to traces emitted by trace policies.
- Required: No
- Type: string
- Allowed:
[ 'error' 'information' 'verbose' ]
Parameter: apis
APIs.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
displayName |
string | API name. Must be 1 to 300 characters long. |
name |
string | API revision identifier. Must be unique in the current API Management service instance. Non-current revision has ;rev=n as a suffix where n is the revision number. |
path |
string | Relative URL uniquely identifying this API and all of its resource paths within the API Management service instance. It is appended to the API endpoint base URL specified during the service instance creation to form a public URL for this API. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
apiRevision |
string | Describes the Revision of the API. If no value is provided, default revision 1 is created. |
apiRevisionDescription |
string | Description of the API Revision. |
apiType |
string | Type of API to create. * http creates a REST API * soap creates a SOAP pass-through API * websocket creates websocket API * graphql creates GraphQL API. |
apiVersion |
string | Indicates the Version identifier of the API if the API is versioned. |
apiVersionDescription |
string | Description of the API Version. |
apiVersionSetName |
string | The name of the API version set to link. |
authenticationSettings |
object | Collection of authentication settings included into this API. |
description |
string | Description of the API. May include HTML formatting tags. |
diagnostics |
array | Array of diagnostics to apply to the Service API. |
format |
string | Format of the Content in which the API is getting imported. |
isCurrent |
bool | Indicates if API revision is current API revision. |
operations |
array | The operations of the api. |
policies |
array | Array of Policies to apply to the Service API. |
protocols |
array | Describes on which protocols the operations in this API can be invoked. - HTTP or HTTPS. |
serviceUrl |
string | Absolute URL of the backend service implementing this API. Cannot be more than 2000 characters long. |
sourceApiId |
string | API identifier of the source API. |
subscriptionKeyParameterNames |
object | Protocols over which API is made available. |
subscriptionRequired |
bool | Specifies whether an API or Product subscription is required for accessing the API. |
type |
string | Type of API. |
value |
string | Content value when Importing an API. |
Parameter: apis.displayName
API name. Must be 1 to 300 characters long.
- Required: Yes
- Type: string
Parameter: apis.name
API revision identifier. Must be unique in the current API Management service instance. Non-current revision has ;rev=n as a suffix where n is the revision number.
- Required: Yes
- Type: string
Parameter: apis.path
Relative URL uniquely identifying this API and all of its resource paths within the API Management service instance. It is appended to the API endpoint base URL specified during the service instance creation to form a public URL for this API.
- Required: Yes
- Type: string
Parameter: apis.apiRevision
Describes the Revision of the API. If no value is provided, default revision 1 is created.
- Required: No
- Type: string
Parameter: apis.apiRevisionDescription
Description of the API Revision.
- Required: No
- Type: string
Parameter: apis.apiType
Type of API to create. * http creates a REST API * soap creates a SOAP pass-through API * websocket creates websocket API * graphql creates GraphQL API.
- Required: No
- Type: string
- Allowed:
[ 'graphql' 'http' 'soap' 'websocket' ]
Parameter: apis.apiVersion
Indicates the Version identifier of the API if the API is versioned.
- Required: No
- Type: string
Parameter: apis.apiVersionDescription
Description of the API Version.
- Required: No
- Type: string
Parameter: apis.apiVersionSetName
The name of the API version set to link.
- Required: No
- Type: string
Parameter: apis.authenticationSettings
Collection of authentication settings included into this API.
- Required: No
- Type: object
Parameter: apis.description
Description of the API. May include HTML formatting tags.
- Required: No
- Type: string
Parameter: apis.diagnostics
Array of diagnostics to apply to the Service API.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
loggerName |
string | The name of the logger. |
Conditional parameters
| Parameter | Type | Description |
|---|---|---|
httpCorrelationProtocol |
string | Sets correlation protocol to use for Application Insights diagnostics. Required if using Application Insights. |
metrics |
bool | Emit custom metrics via emit-metric policy. Required if using Application Insights. |
operationNameFormat |
string | The format of the Operation Name for Application Insights telemetries. Required if using Application Insights. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
alwaysLog |
string | Specifies for what type of messages sampling settings should not apply. |
backend |
object | Diagnostic settings for incoming/outgoing HTTP messages to the Backend. |
frontend |
object | Diagnostic settings for incoming/outgoing HTTP messages to the Gateway. |
logClientIp |
bool | Log the ClientIP. |
name |
string | Type of diagnostic resource. |
samplingPercentage |
int | Rate of sampling for fixed-rate sampling. Specifies the percentage of requests that are logged. 0% sampling means zero requests logged, while 100% sampling means all requests logged. |
verbosity |
string | The verbosity level applied to traces emitted by trace policies. |
Parameter: apis.diagnostics.loggerName
The name of the logger.
- Required: Yes
- Type: string
Parameter: apis.diagnostics.httpCorrelationProtocol
Sets correlation protocol to use for Application Insights diagnostics. Required if using Application Insights.
- Required: No
- Type: string
- Allowed:
[ 'Legacy' 'None' 'W3C' ]
Parameter: apis.diagnostics.metrics
Emit custom metrics via emit-metric policy. Required if using Application Insights.
- Required: No
- Type: bool
Parameter: apis.diagnostics.operationNameFormat
The format of the Operation Name for Application Insights telemetries. Required if using Application Insights.
- Required: No
- Type: string
- Allowed:
[ 'Name' 'URI' ]
Parameter: apis.diagnostics.alwaysLog
Specifies for what type of messages sampling settings should not apply.
- Required: No
- Type: string
Parameter: apis.diagnostics.backend
Diagnostic settings for incoming/outgoing HTTP messages to the Backend.
- Required: No
- Type: object
Parameter: apis.diagnostics.frontend
Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.
- Required: No
- Type: object
Parameter: apis.diagnostics.logClientIp
Log the ClientIP.
- Required: No
- Type: bool
Parameter: apis.diagnostics.name
Type of diagnostic resource.
- Required: No
- Type: string
- Allowed:
[ 'applicationinsights' 'azuremonitor' 'local' ]
Parameter: apis.diagnostics.samplingPercentage
Rate of sampling for fixed-rate sampling. Specifies the percentage of requests that are logged. 0% sampling means zero requests logged, while 100% sampling means all requests logged.
- Required: No
- Type: int
Parameter: apis.diagnostics.verbosity
The verbosity level applied to traces emitted by trace policies.
- Required: No
- Type: string
- Allowed:
[ 'error' 'information' 'verbose' ]
Parameter: apis.format
Format of the Content in which the API is getting imported.
- Required: No
- Type: string
- Allowed:
[ 'openapi' 'openapi-link' 'openapi+json' 'openapi+json-link' 'swagger-json' 'swagger-link-json' 'wadl-link-json' 'wadl-xml' 'wsdl' 'wsdl-link' ]
Parameter: apis.isCurrent
Indicates if API revision is current API revision.
- Required: No
- Type: bool
Parameter: apis.operations
The operations of the api.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
displayName |
string | The display name of the operation. |
method |
string | A Valid HTTP Operation Method. Typical Http Methods like GET, PUT, POST but not limited by only them. |
name |
string | The name of the policy. |
urlTemplate |
string | Relative URL template identifying the target resource for this operation. May include parameters. Example: /customers/{cid}/orders/{oid}/?date={date}. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
description |
string | Description of the operation. May include HTML formatting tags. Must not be longer than 1.000 characters. |
policies |
array | The policies to apply to the operation. |
request |
object | An entity containing request details. |
responses |
array | An entity containing request details. |
templateParameters |
array | Collection of URL template parameters. |
Parameter: apis.operations.displayName
The display name of the operation.
- Required: Yes
- Type: string
Parameter: apis.operations.method
A Valid HTTP Operation Method. Typical Http Methods like GET, PUT, POST but not limited by only them.
- Required: Yes
- Type: string
Parameter: apis.operations.name
The name of the policy.
- Required: Yes
- Type: string
Parameter: apis.operations.urlTemplate
Relative URL template identifying the target resource for this operation. May include parameters. Example: /customers/{cid}/orders/{oid}/?date={date}.
- Required: Yes
- Type: string
Parameter: apis.operations.description
Description of the operation. May include HTML formatting tags. Must not be longer than 1.000 characters.
- Required: No
- Type: string
Parameter: apis.operations.policies
The policies to apply to the operation.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
format |
string | Format of the policyContent. |
name |
string | The name of the policy. |
value |
string | Contents of the Policy as defined by the format. |
Parameter: apis.operations.policies.format
Format of the policyContent.
- Required: Yes
- Type: string
- Allowed:
[ 'rawxml' 'rawxml-link' 'xml' 'xml-link' ]
Parameter: apis.operations.policies.name
The name of the policy.
- Required: Yes
- Type: string
Parameter: apis.operations.policies.value
Contents of the Policy as defined by the format.
- Required: Yes
- Type: string
Parameter: apis.operations.request
An entity containing request details.
- Required: No
- Type: object
Parameter: apis.operations.responses
An entity containing request details.
- Required: No
- Type: array
Parameter: apis.operations.templateParameters
Collection of URL template parameters.
- Required: No
- Type: array
Parameter: apis.policies
Array of Policies to apply to the Service API.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
value |
string | Contents of the Policy as defined by the format. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
format |
string | Format of the policyContent. |
name |
string | The name of the policy. |
Parameter: apis.policies.value
Contents of the Policy as defined by the format.
- Required: Yes
- Type: string
Parameter: apis.policies.format
Format of the policyContent.
- Required: No
- Type: string
- Allowed:
[ 'rawxml' 'rawxml-link' 'xml' 'xml-link' ]
Parameter: apis.policies.name
The name of the policy.
- Required: No
- Type: string
Parameter: apis.protocols
Describes on which protocols the operations in this API can be invoked. - HTTP or HTTPS.
- Required: No
- Type: array
Parameter: apis.serviceUrl
Absolute URL of the backend service implementing this API. Cannot be more than 2000 characters long.
- Required: No
- Type: string
Parameter: apis.sourceApiId
API identifier of the source API.
- Required: No
- Type: string
Parameter: apis.subscriptionKeyParameterNames
Protocols over which API is made available.
- Required: No
- Type: object
Parameter: apis.subscriptionRequired
Specifies whether an API or Product subscription is required for accessing the API.
- Required: No
- Type: bool
Parameter: apis.type
Type of API.
- Required: No
- Type: string
- Allowed:
[ 'graphql' 'http' 'soap' 'websocket' ]
Parameter: apis.value
Content value when Importing an API.
- Required: No
- Type: string
Parameter: apiVersionSets
API Version Sets.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
displayName |
string | The display name of the Name of API Version Set. |
name |
string | API Version set name. |
versioningScheme |
string | An value that determines where the API Version identifier will be located in a HTTP request. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
description |
string | Description of API Version Set. |
versionHeaderName |
string | Name of HTTP header parameter that indicates the API Version if versioningScheme is set to header. |
versionQueryName |
string | Name of query parameter that indicates the API Version if versioningScheme is set to query. |
Parameter: apiVersionSets.displayName
The display name of the Name of API Version Set.
- Required: Yes
- Type: string
Parameter: apiVersionSets.name
API Version set name.
- Required: Yes
- Type: string
Parameter: apiVersionSets.versioningScheme
An value that determines where the API Version identifier will be located in a HTTP request.
- Required: Yes
- Type: string
- Allowed:
[ 'Header' 'Query' 'Segment' ]
Parameter: apiVersionSets.description
Description of API Version Set.
- Required: No
- Type: string
Parameter: apiVersionSets.versionHeaderName
Name of HTTP header parameter that indicates the API Version if versioningScheme is set to header.
- Required: No
- Type: string
Parameter: apiVersionSets.versionQueryName
Name of query parameter that indicates the API Version if versioningScheme is set to query.
- Required: No
- Type: string
Parameter: authorizationServers
Authorization servers.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
authorizationEndpoint |
string | OAuth authorization endpoint. See http://tools.ietf.org/html/rfc6749#section-3.2. |
clientId |
securestring | Client or app ID registered with this authorization server. |
clientSecret |
securestring | Client or app secret registered with this authorization server. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value. |
displayName |
string | API Management Service Authorization Servers name. Must be 1 to 50 characters long. |
grantTypes |
array | Form of an authorization grant, which the client uses to request the access token. - authorizationCode, implicit, resourceOwnerPassword, clientCredentials. |
name |
string | Identifier of the authorization server. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
authorizationMethods |
array | HTTP verbs supported by the authorization endpoint. GET must be always present. POST is optional. - HEAD, OPTIONS, TRACE, GET, POST, PUT, PATCH, DELETE. |
bearerTokenSendingMethods |
array | Specifies the mechanism by which access token is passed to the API. - authorizationHeader or query. |
clientAuthenticationMethod |
array | Method of authentication supported by the token endpoint of this authorization server. Possible values are Basic and/or Body. When Body is specified, client credentials and other parameters are passed within the request body in the application/x-www-form-urlencoded format. - Basic or Body. |
clientRegistrationEndpoint |
string | Optional reference to a page where client or app registration for this authorization server is performed. Contains absolute URL to entity being referenced. |
defaultScope |
string | Access token scope that is going to be requested by default. Can be overridden at the API level. Should be provided in the form of a string containing space-delimited values. |
resourceOwnerPassword |
securestring | Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner password. |
resourceOwnerUsername |
string | Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner username. |
serverDescription |
string | Description of the authorization server. Can contain HTML formatting tags. |
supportState |
bool | If true, authorization server will include state parameter from the authorization request to its response. Client may use state parameter to raise protocol security. |
tokenBodyParameters |
array | Additional parameters required by the token endpoint of this authorization server represented as an array of JSON objects with name and value string properties, i.e. {"name" : "name value", "value": "a value"}. - TokenBodyParameterContract object. |
tokenEndpoint |
string | OAuth token endpoint. Contains absolute URI to entity being referenced. |
Parameter: authorizationServers.authorizationEndpoint
OAuth authorization endpoint. See http://tools.ietf.org/html/rfc6749#section-3.2.
- Required: Yes
- Type: string
Parameter: authorizationServers.clientId
Client or app ID registered with this authorization server.
- Required: Yes
- Type: securestring
Parameter: authorizationServers.clientSecret
Client or app secret registered with this authorization server. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
- Required: Yes
- Type: securestring
Parameter: authorizationServers.displayName
API Management Service Authorization Servers name. Must be 1 to 50 characters long.
- Required: Yes
- Type: string
Parameter: authorizationServers.grantTypes
Form of an authorization grant, which the client uses to request the access token. - authorizationCode, implicit, resourceOwnerPassword, clientCredentials.
- Required: Yes
- Type: array
- Allowed:
[ 'authorizationCode' 'clientCredentials' 'implicit' 'resourceOwnerPassword' ]
Parameter: authorizationServers.name
Identifier of the authorization server.
- Required: Yes
- Type: string
Parameter: authorizationServers.authorizationMethods
HTTP verbs supported by the authorization endpoint. GET must be always present. POST is optional. - HEAD, OPTIONS, TRACE, GET, POST, PUT, PATCH, DELETE.
- Required: No
- Type: array
Parameter: authorizationServers.bearerTokenSendingMethods
Specifies the mechanism by which access token is passed to the API. - authorizationHeader or query.
- Required: No
- Type: array
Parameter: authorizationServers.clientAuthenticationMethod
Method of authentication supported by the token endpoint of this authorization server. Possible values are Basic and/or Body. When Body is specified, client credentials and other parameters are passed within the request body in the application/x-www-form-urlencoded format. - Basic or Body.
- Required: No
- Type: array
Parameter: authorizationServers.clientRegistrationEndpoint
Optional reference to a page where client or app registration for this authorization server is performed. Contains absolute URL to entity being referenced.
- Required: No
- Type: string
Parameter: authorizationServers.defaultScope
Access token scope that is going to be requested by default. Can be overridden at the API level. Should be provided in the form of a string containing space-delimited values.
- Required: No
- Type: string
Parameter: authorizationServers.resourceOwnerPassword
Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner password.
- Required: No
- Type: securestring
Parameter: authorizationServers.resourceOwnerUsername
Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner username.
- Required: No
- Type: string
Parameter: authorizationServers.serverDescription
Description of the authorization server. Can contain HTML formatting tags.
- Required: No
- Type: string
Parameter: authorizationServers.supportState
If true, authorization server will include state parameter from the authorization request to its response. Client may use state parameter to raise protocol security.
- Required: No
- Type: bool
Parameter: authorizationServers.tokenBodyParameters
Additional parameters required by the token endpoint of this authorization server represented as an array of JSON objects with name and value string properties, i.e. {"name" : "name value", "value": "a value"}. - TokenBodyParameterContract object.
- Required: No
- Type: array
Parameter: authorizationServers.tokenEndpoint
OAuth token endpoint. Contains absolute URI to entity being referenced.
- Required: No
- Type: string
Parameter: availabilityZones
A list of availability zones denoting where the resource needs to come from. Only supported by Premium sku.
- Required: No
- Type: array
- Default:
[ 1 2 3 ] - Allowed:
[ 1 2 3 ]
Parameter: backends
Backends.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | Backend Name. |
url |
string | Runtime URL of the Backend. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
credentials |
object | Backend Credentials Contract Properties. |
description |
string | Backend Description. |
protocol |
string | Backend communication protocol. - http or soap. |
proxy |
object | Backend Proxy Contract Properties. |
resourceId |
string | Management Uri of the Resource in External System. This URL can be the Arm Resource ID of Logic Apps, Function Apps or API Apps. |
serviceFabricCluster |
object | Backend Service Fabric Cluster Properties. |
title |
string | Backend Title. |
tls |
object | Backend TLS Properties. |
Parameter: backends.name
Backend Name.
- Required: Yes
- Type: string
Parameter: backends.url
Runtime URL of the Backend.
- Required: Yes
- Type: string
Parameter: backends.credentials
Backend Credentials Contract Properties.
- Required: No
- Type: object
Parameter: backends.description
Backend Description.
- Required: No
- Type: string
Parameter: backends.protocol
Backend communication protocol. - http or soap.
- Required: No
- Type: string
Parameter: backends.proxy
Backend Proxy Contract Properties.
- Required: No
- Type: object
Parameter: backends.resourceId
Management Uri of the Resource in External System. This URL can be the Arm Resource ID of Logic Apps, Function Apps or API Apps.
- Required: No
- Type: string
Parameter: backends.serviceFabricCluster
Backend Service Fabric Cluster Properties.
- Required: No
- Type: object
Parameter: backends.title
Backend Title.
- Required: No
- Type: string
Parameter: backends.tls
Backend TLS Properties.
- Required: No
- Type: object
Parameter: caches
Caches.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
connectionString |
string | Runtime connection string to cache. Can be referenced by a named value like so, {{ |
name |
string | Identifier of the Cache entity. Cache identifier (should be either 'default' or valid Azure region identifier). |
useFromLocation |
string | Location identifier to use cache from (should be either 'default' or valid Azure region identifier). |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
description |
string | Cache description. |
resourceId |
string | Original uri of entity in external system cache points to. |
Parameter: caches.connectionString
Runtime connection string to cache. Can be referenced by a named value like so, {{
- Required: Yes
- Type: string
Parameter: caches.name
Identifier of the Cache entity. Cache identifier (should be either 'default' or valid Azure region identifier).
- Required: Yes
- Type: string
Parameter: caches.useFromLocation
Location identifier to use cache from (should be either 'default' or valid Azure region identifier).
- Required: Yes
- Type: string
Parameter: caches.description
Cache description.
- Required: No
- Type: string
Parameter: caches.resourceId
Original uri of entity in external system cache points to.
- Required: No
- Type: string
Parameter: certificates
List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10.
- Required: No
- Type: array
Parameter: customProperties
Custom properties of the API Management service. Not supported if SKU is Consumption.
- Required: No
- Type: object
- Default:
{ 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA': 'False' 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA': 'False' 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA': 'False' 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256': 'False' 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256': 'False' 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA': 'False' 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256': 'False' 'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168': 'False' }
Parameter: diagnosticSettings
The diagnostic settings of the service.
- Required: No
- Type: array
Optional parameters
| Parameter | Type | Description |
|---|---|---|
eventHubAuthorizationRuleResourceId |
string | Resource ID of the diagnostic event hub authorization rule for the Event Hubs namespace in which the event hub should be created or streamed to. |
eventHubName |
string | Name of the diagnostic event hub within the namespace to which logs are streamed. Without this, an event hub is created for each log category. For security reasons, it is recommended to set diagnostic settings to send data to either storage account, log analytics workspace or event hub. |
logAnalyticsDestinationType |
string | A string indicating whether the export to Log Analytics should use the default destination type, i.e. AzureDiagnostics, or use a destination type. |
logCategoriesAndGroups |
array | The name of logs that will be streamed. "allLogs" includes all possible logs for the resource. Set to [] to disable log collection. |
marketplacePartnerResourceId |
string | The full ARM resource ID of the Marketplace resource to which you would like to send Diagnostic Logs. |
metricCategories |
array | The name of metrics that will be streamed. "allMetrics" includes all possible metrics for the resource. Set to [] to disable metric collection. |
name |
string | The name of the diagnostic setting. |
storageAccountResourceId |
string | Resource ID of the diagnostic storage account. For security reasons, it is recommended to set diagnostic settings to send data to either storage account, log analytics workspace or event hub. |
workspaceResourceId |
string | Resource ID of the diagnostic log analytics workspace. For security reasons, it is recommended to set diagnostic settings to send data to either storage account, log analytics workspace or event hub. |
Parameter: diagnosticSettings.eventHubAuthorizationRuleResourceId
Resource ID of the diagnostic event hub authorization rule for the Event Hubs namespace in which the event hub should be created or streamed to.
- Required: No
- Type: string
Parameter: diagnosticSettings.eventHubName
Name of the diagnostic event hub within the namespace to which logs are streamed. Without this, an event hub is created for each log category. For security reasons, it is recommended to set diagnostic settings to send data to either storage account, log analytics workspace or event hub.
- Required: No
- Type: string
Parameter: diagnosticSettings.logAnalyticsDestinationType
A string indicating whether the export to Log Analytics should use the default destination type, i.e. AzureDiagnostics, or use a destination type.
- Required: No
- Type: string
- Allowed:
[ 'AzureDiagnostics' 'Dedicated' ]
Parameter: diagnosticSettings.logCategoriesAndGroups
The name of logs that will be streamed. "allLogs" includes all possible logs for the resource. Set to [] to disable log collection.
- Required: No
- Type: array
Optional parameters
| Parameter | Type | Description |
|---|---|---|
category |
string | Name of a Diagnostic Log category for a resource type this setting is applied to. Set the specific logs to collect here. |
categoryGroup |
string | Name of a Diagnostic Log category group for a resource type this setting is applied to. Set to allLogs to collect all logs. |
enabled |
bool | Enable or disable the category explicitly. Default is true. |
Parameter: diagnosticSettings.logCategoriesAndGroups.category
Name of a Diagnostic Log category for a resource type this setting is applied to. Set the specific logs to collect here.
- Required: No
- Type: string
Parameter: diagnosticSettings.logCategoriesAndGroups.categoryGroup
Name of a Diagnostic Log category group for a resource type this setting is applied to. Set to allLogs to collect all logs.
- Required: No
- Type: string
Parameter: diagnosticSettings.logCategoriesAndGroups.enabled
Enable or disable the category explicitly. Default is true.
- Required: No
- Type: bool
Parameter: diagnosticSettings.marketplacePartnerResourceId
The full ARM resource ID of the Marketplace resource to which you would like to send Diagnostic Logs.
- Required: No
- Type: string
Parameter: diagnosticSettings.metricCategories
The name of metrics that will be streamed. "allMetrics" includes all possible metrics for the resource. Set to [] to disable metric collection.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
category |
string | Name of a Diagnostic Metric category for a resource type this setting is applied to. Set to AllMetrics to collect all metrics. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
enabled |
bool | Enable or disable the category explicitly. Default is true. |
Parameter: diagnosticSettings.metricCategories.category
Name of a Diagnostic Metric category for a resource type this setting is applied to. Set to AllMetrics to collect all metrics.
- Required: Yes
- Type: string
Parameter: diagnosticSettings.metricCategories.enabled
Enable or disable the category explicitly. Default is true.
- Required: No
- Type: bool
Parameter: diagnosticSettings.name
The name of the diagnostic setting.
- Required: No
- Type: string
Parameter: diagnosticSettings.storageAccountResourceId
Resource ID of the diagnostic storage account. For security reasons, it is recommended to set diagnostic settings to send data to either storage account, log analytics workspace or event hub.
- Required: No
- Type: string
Parameter: diagnosticSettings.workspaceResourceId
Resource ID of the diagnostic log analytics workspace. For security reasons, it is recommended to set diagnostic settings to send data to either storage account, log analytics workspace or event hub.
- Required: No
- Type: string
Parameter: disableGateway
Property only valid for an API Management service deployed in multiple locations. This can be used to disable the gateway in master region.
- Required: No
- Type: bool
- Default:
False
Parameter: enableClientCertificate
Property only meant to be used for Consumption SKU Service. This enforces a client certificate to be presented on each request to the gateway. This also enables the ability to authenticate the certificate in the policy on the gateway.
- Required: No
- Type: bool
- Default:
False
Parameter: enableDeveloperPortal
Enable the Developer Portal. The developer portal is not supported on the Consumption SKU.
- Required: No
- Type: bool
- Default:
False
Parameter: enableTelemetry
Enable/Disable usage telemetry for module.
- Required: No
- Type: bool
- Default:
True
Parameter: hostnameConfigurations
Custom hostname configuration of the API Management service.
- Required: No
- Type: array
Parameter: identityProviders
Identity providers.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | Identity provider name. |
Conditional parameters
| Parameter | Type | Description |
|---|---|---|
clientId |
string | Client ID of the Application in the external Identity Provider. Required if identity provider is used. |
clientSecret |
securestring | Client secret of the Application in external Identity Provider, used to authenticate login request. Required if identity provider is used. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
allowedTenants |
array | List of Allowed Tenants when configuring Azure Active Directory login. - string. |
authority |
string | OpenID Connect discovery endpoint hostname for AAD or AAD B2C. |
clientLibrary |
string | The client library to be used in the developer portal. Only applies to AAD and AAD B2C Identity Provider. |
passwordResetPolicyName |
string | Password Reset Policy Name. Only applies to AAD B2C Identity Provider. |
profileEditingPolicyName |
string | Profile Editing Policy Name. Only applies to AAD B2C Identity Provider. |
signInPolicyName |
string | Signin Policy Name. Only applies to AAD B2C Identity Provider. |
signInTenant |
string | The TenantId to use instead of Common when logging into Active Directory. |
signUpPolicyName |
string | Signup Policy Name. Only applies to AAD B2C Identity Provider. |
type |
string | Identity Provider Type identifier. |
Parameter: identityProviders.name
Identity provider name.
- Required: Yes
- Type: string
Parameter: identityProviders.clientId
Client ID of the Application in the external Identity Provider. Required if identity provider is used.
- Required: No
- Type: string
Parameter: identityProviders.clientSecret
Client secret of the Application in external Identity Provider, used to authenticate login request. Required if identity provider is used.
- Required: No
- Type: securestring
Parameter: identityProviders.allowedTenants
List of Allowed Tenants when configuring Azure Active Directory login. - string.
- Required: No
- Type: array
Parameter: identityProviders.authority
OpenID Connect discovery endpoint hostname for AAD or AAD B2C.
- Required: No
- Type: string
Parameter: identityProviders.clientLibrary
The client library to be used in the developer portal. Only applies to AAD and AAD B2C Identity Provider.
- Required: No
- Type: string
- Allowed:
[ 'ADAL' 'MSAL-2' ]
Parameter: identityProviders.passwordResetPolicyName
Password Reset Policy Name. Only applies to AAD B2C Identity Provider.
- Required: No
- Type: string
Parameter: identityProviders.profileEditingPolicyName
Profile Editing Policy Name. Only applies to AAD B2C Identity Provider.
- Required: No
- Type: string
Parameter: identityProviders.signInPolicyName
Signin Policy Name. Only applies to AAD B2C Identity Provider.
- Required: No
- Type: string
Parameter: identityProviders.signInTenant
The TenantId to use instead of Common when logging into Active Directory.
- Required: No
- Type: string
Parameter: identityProviders.signUpPolicyName
Signup Policy Name. Only applies to AAD B2C Identity Provider.
- Required: No
- Type: string
Parameter: identityProviders.type
Identity Provider Type identifier.
- Required: No
- Type: string
- Allowed:
[ 'aad' 'aadB2C' 'facebook' 'google' 'microsoft' 'twitter' ]
Parameter: location
Location for all Resources.
- Required: No
- Type: string
- Default:
[resourceGroup().location]
Parameter: lock
The lock settings of the service.
- 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: loggers
Loggers.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | Resource Name. |
type |
string | Logger type. |
Conditional parameters
| Parameter | Type | Description |
|---|---|---|
credentials |
secureObject | The name and SendRule connection string of the event hub for azureEventHub logger. Instrumentation key for applicationInsights logger. Required if loggerType = applicationInsights or azureEventHub. |
targetResourceId |
string | Azure Resource Id of a log target (either Azure Event Hub resource or Azure Application Insights resource). Required if loggerType = applicationInsights or azureEventHub. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
description |
string | Logger description. |
isBuffered |
bool | Whether records are buffered in the logger before publishing. |
Parameter: loggers.name
Resource Name.
- Required: Yes
- Type: string
Parameter: loggers.type
Logger type.
- Required: Yes
- Type: string
- Allowed:
[ 'applicationInsights' 'azureEventHub' 'azureMonitor' ]
Parameter: loggers.credentials
The name and SendRule connection string of the event hub for azureEventHub logger. Instrumentation key for applicationInsights logger. Required if loggerType = applicationInsights or azureEventHub.
- Required: No
- Type: secureObject
Parameter: loggers.targetResourceId
Azure Resource Id of a log target (either Azure Event Hub resource or Azure Application Insights resource). Required if loggerType = applicationInsights or azureEventHub.
- Required: No
- Type: string
Parameter: loggers.description
Logger description.
- Required: No
- Type: string
Parameter: loggers.isBuffered
Whether records are buffered in the logger before publishing.
- Required: No
- Type: bool
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: minApiVersion
Limit control plane API calls to API Management service with version equal to or newer than this value.
- Required: No
- Type: string
Parameter: namedValues
Named values.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
displayName |
string | Unique name of NamedValue. It may contain only letters, digits, period, dash, and underscore characters. |
name |
string | The name of the named value. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
keyVault |
object | KeyVault location details of the namedValue. |
secret |
bool | Determines whether the value is a secret and should be encrypted or not. Default value is false. |
tags |
array | Tags that when provided can be used to filter the NamedValue list. - string. |
value |
securestring | Value of the NamedValue. Can contain policy expressions. It may not be empty or consist only of whitespace. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value. |
Parameter: namedValues.displayName
Unique name of NamedValue. It may contain only letters, digits, period, dash, and underscore characters.
- Required: Yes
- Type: string
Parameter: namedValues.name
The name of the named value.
- Required: Yes
- Type: string
Parameter: namedValues.keyVault
KeyVault location details of the namedValue.
- Required: No
- Type: object
Parameter: namedValues.secret
Determines whether the value is a secret and should be encrypted or not. Default value is false.
- Required: No
- Type: bool
Parameter: namedValues.tags
Tags that when provided can be used to filter the NamedValue list. - string.
- Required: No
- Type: array
Parameter: namedValues.value
Value of the NamedValue. Can contain policy expressions. It may not be empty or consist only of whitespace. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
- Required: No
- Type: securestring
Parameter: newGuidValue
Necessary to create a new GUID.
- Required: No
- Type: string
- Default:
[newGuid()]
Parameter: notificationSenderEmail
The notification sender email address for the service.
- Required: No
- Type: string
- Default:
'apimgmt-noreply@mail.windowsazure.com'
Parameter: policies
Policies.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
value |
string | Contents of the Policy as defined by the format. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
format |
string | Format of the policyContent. |
name |
string | The name of the policy. |
Parameter: policies.value
Contents of the Policy as defined by the format.
- Required: Yes
- Type: string
Parameter: policies.format
Format of the policyContent.
- Required: No
- Type: string
- Allowed:
[ 'rawxml' 'rawxml-link' 'xml' 'xml-link' ]
Parameter: policies.name
The name of the policy.
- Required: No
- Type: string
Parameter: portalsettings
Portal settings.
- Required: No
- Type: array
- Discriminator:
name
The available variants are:
| Variant | Description |
|---|---|
signin |
The type for sign-in portal settings. |
signup |
The type for sign-up portal settings. |
delegation |
The type for delegation portal settings. |
Variant: portalsettings.name-signin
The type for sign-in portal settings.
To use this variant, set the property name to signin.
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | The name of the portal-setting. |
properties |
object | The portal-settings contract properties. |
Parameter: portalsettings.name-signin.name
The name of the portal-setting.
- Required: Yes
- Type: string
- Allowed:
[ 'signin' ]
Parameter: portalsettings.name-signin.properties
The portal-settings contract properties.
- Required: Yes
- Type: object
Required parameters
| Parameter | Type | Description |
|---|---|---|
enabled |
bool | Redirect Anonymous users to the Sign-In page. |
Parameter: portalsettings.name-signin.properties.enabled
Redirect Anonymous users to the Sign-In page.
- Required: Yes
- Type: bool
Variant: portalsettings.name-signup
The type for sign-up portal settings.
To use this variant, set the property name to signup.
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | The name of the portal-setting. |
properties |
object | The portal-settings contract properties. |
Parameter: portalsettings.name-signup.name
The name of the portal-setting.
- Required: Yes
- Type: string
- Allowed:
[ 'signup' ]
Parameter: portalsettings.name-signup.properties
The portal-settings contract properties.
- Required: Yes
- Type: object
Optional parameters
| Parameter | Type | Description |
|---|---|---|
enabled |
bool | Allow users to sign up on a developer portal. |
termsOfService |
object | Terms of service contract properties. |
Parameter: portalsettings.name-signup.properties.enabled
Allow users to sign up on a developer portal.
- Required: No
- Type: bool
Parameter: portalsettings.name-signup.properties.termsOfService
Terms of service contract properties.
- Required: No
- Type: object
Otional parameters
| Parameter | Type | Description |
|---|---|---|
consentRequired |
bool | Ask user for consent to the terms of service. |
enabled |
bool | Display terms of service during a sign-up process. |
text |
string | A terms of service text. |
Parameter: portalsettings.name-signup.properties.termsOfService.consentRequired
Ask user for consent to the terms of service.
- Required: No
- Type: bool
Parameter: portalsettings.name-signup.properties.termsOfService.enabled
Display terms of service during a sign-up process.
- Required: No
- Type: bool
Parameter: portalsettings.name-signup.properties.termsOfService.text
A terms of service text.
- Required: No
- Type: string
Variant: portalsettings.name-delegation
The type for delegation portal settings.
To use this variant, set the property name to delegation.
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | The name of the portal-setting. |
properties |
object | The portal-settings contract properties. |
Parameter: portalsettings.name-delegation.name
The name of the portal-setting.
- Required: Yes
- Type: string
- Allowed:
[ 'delegation' ]
Parameter: portalsettings.name-delegation.properties
The portal-settings contract properties.
- Required: Yes
- Type: object
Optional parameters
| Parameter | Type | Description |
|---|---|---|
subscriptions |
object | Subscriptions delegation settings. |
url |
string | A delegation Url. |
userRegistration |
object | User registration delegation settings. |
validationKey |
securestring | A base64-encoded validation key to validate, that a request is coming from Azure API Management. |
Parameter: portalsettings.name-delegation.properties.subscriptions
Subscriptions delegation settings.
- Required: No
- Type: object
Required parameters
| Parameter | Type | Description |
|---|---|---|
enabled |
bool | Enable or disable delegation for subscriptions. |
Parameter: portalsettings.name-delegation.properties.subscriptions.enabled
Enable or disable delegation for subscriptions.
- Required: Yes
- Type: bool
Parameter: portalsettings.name-delegation.properties.url
A delegation Url.
- Required: No
- Type: string
Parameter: portalsettings.name-delegation.properties.userRegistration
User registration delegation settings.
- Required: No
- Type: object
Required parameters
| Parameter | Type | Description |
|---|---|---|
enabled |
bool | Enable or disable delegation for user registration. |
Parameter: portalsettings.name-delegation.properties.userRegistration.enabled
Enable or disable delegation for user registration.
- Required: Yes
- Type: bool
Parameter: portalsettings.name-delegation.properties.validationKey
A base64-encoded validation key to validate, that a request is coming from Azure API Management.
- Required: No
- Type: securestring
Parameter: privateEndpoints
Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
subnetResourceId |
string | Resource ID of the subnet where the endpoint needs to be created. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
applicationSecurityGroupResourceIds |
array | Application security groups in which the Private Endpoint IP configuration is included. |
customDnsConfigs |
array | Custom DNS configurations. |
customNetworkInterfaceName |
string | The custom name of the network interface attached to the Private Endpoint. |
enableTelemetry |
bool | Enable/Disable usage telemetry for module. |
ipConfigurations |
array | A list of IP configurations of the Private Endpoint. This will be used to map to the first-party Service endpoints. |
isManualConnection |
bool | If Manual Private Link Connection is required. |
location |
string | The location to deploy the Private Endpoint to. |
lock |
object | Specify the type of lock. |
manualConnectionRequestMessage |
string | A message passed to the owner of the remote resource with the manual connection request. |
name |
string | The name of the Private Endpoint. |
privateDnsZoneGroup |
object | The private DNS Zone Group to configure for the Private Endpoint. |
privateLinkServiceConnectionName |
string | The name of the private link connection to create. |
resourceGroupResourceId |
string | The resource ID of the Resource Group the Private Endpoint will be created in. If not specified, the Resource Group of the provided Virtual Network Subnet is used. |
roleAssignments |
array | Array of role assignments to create. |
service |
string | The subresource to deploy the Private Endpoint for. For example "vault" for a Key Vault Private Endpoint. |
tags |
object | Tags to be applied on all resources/Resource Groups in this deployment. |
Parameter: privateEndpoints.subnetResourceId
Resource ID of the subnet where the endpoint needs to be created.
- Required: Yes
- Type: string
Parameter: privateEndpoints.applicationSecurityGroupResourceIds
Application security groups in which the Private Endpoint IP configuration is included.
- Required: No
- Type: array
Parameter: privateEndpoints.customDnsConfigs
Custom DNS configurations.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
ipAddresses |
array | A list of private IP addresses of the private endpoint. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
fqdn |
string | FQDN that resolves to private endpoint IP address. |
Parameter: privateEndpoints.customDnsConfigs.ipAddresses
A list of private IP addresses of the private endpoint.
- Required: Yes
- Type: array
Parameter: privateEndpoints.customDnsConfigs.fqdn
FQDN that resolves to private endpoint IP address.
- Required: No
- Type: string
Parameter: privateEndpoints.customNetworkInterfaceName
The custom name of the network interface attached to the Private Endpoint.
- Required: No
- Type: string
Parameter: privateEndpoints.enableTelemetry
Enable/Disable usage telemetry for module.
- Required: No
- Type: bool
Parameter: privateEndpoints.ipConfigurations
A list of IP configurations of the Private Endpoint. This will be used to map to the first-party Service endpoints.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | The name of the resource that is unique within a resource group. |
properties |
object | Properties of private endpoint IP configurations. |
Parameter: privateEndpoints.ipConfigurations.name
The name of the resource that is unique within a resource group.
- Required: Yes
- Type: string
Parameter: privateEndpoints.ipConfigurations.properties
Properties of private endpoint IP configurations.
- Required: Yes
- Type: object
Required parameters
| Parameter | Type | Description |
|---|---|---|
groupId |
string | The ID of a group obtained from the remote resource that this private endpoint should connect to. |
memberName |
string | The member name of a group obtained from the remote resource that this private endpoint should connect to. |
privateIPAddress |
string | A private IP address obtained from the private endpoint's subnet. |
Parameter: privateEndpoints.ipConfigurations.properties.groupId
The ID of a group obtained from the remote resource that this private endpoint should connect to.
- Required: Yes
- Type: string
Parameter: privateEndpoints.ipConfigurations.properties.memberName
The member name of a group obtained from the remote resource that this private endpoint should connect to.
- Required: Yes
- Type: string
Parameter: privateEndpoints.ipConfigurations.properties.privateIPAddress
A private IP address obtained from the private endpoint's subnet.
- Required: Yes
- Type: string
Parameter: privateEndpoints.isManualConnection
If Manual Private Link Connection is required.
- Required: No
- Type: bool
Parameter: privateEndpoints.location
The location to deploy the Private Endpoint to.
- Required: No
- Type: string
Parameter: privateEndpoints.lock
Specify the type of lock.
- 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: privateEndpoints.lock.kind
Specify the type of lock.
- Required: No
- Type: string
- Allowed:
[ 'CanNotDelete' 'None' 'ReadOnly' ]
Parameter: privateEndpoints.lock.name
Specify the name of lock.
- Required: No
- Type: string
Parameter: privateEndpoints.lock.notes
Specify the notes of the lock.
- Required: No
- Type: string
Parameter: privateEndpoints.manualConnectionRequestMessage
A message passed to the owner of the remote resource with the manual connection request.
- Required: No
- Type: string
Parameter: privateEndpoints.name
The name of the Private Endpoint.
- Required: No
- Type: string
Parameter: privateEndpoints.privateDnsZoneGroup
The private DNS Zone Group to configure for the Private Endpoint.
- Required: No
- Type: object
Required parameters
| Parameter | Type | Description |
|---|---|---|
privateDnsZoneGroupConfigs |
array | The private DNS Zone Groups to associate the Private Endpoint. A DNS Zone Group can support up to 5 DNS zones. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | The name of the Private DNS Zone Group. |
Parameter: privateEndpoints.privateDnsZoneGroup.privateDnsZoneGroupConfigs
The private DNS Zone Groups to associate the Private Endpoint. A DNS Zone Group can support up to 5 DNS zones.
- Required: Yes
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
privateDnsZoneResourceId |
string | The resource id of the private DNS zone. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
name |
string | The name of the private DNS Zone Group config. |
Parameter: privateEndpoints.privateDnsZoneGroup.privateDnsZoneGroupConfigs.privateDnsZoneResourceId
The resource id of the private DNS zone.
- Required: Yes
- Type: string
Parameter: privateEndpoints.privateDnsZoneGroup.privateDnsZoneGroupConfigs.name
The name of the private DNS Zone Group config.
- Required: No
- Type: string
Parameter: privateEndpoints.privateDnsZoneGroup.name
The name of the Private DNS Zone Group.
- Required: No
- Type: string
Parameter: privateEndpoints.privateLinkServiceConnectionName
The name of the private link connection to create.
- Required: No
- Type: string
Parameter: privateEndpoints.resourceGroupResourceId
The resource ID of the Resource Group the Private Endpoint will be created in. If not specified, the Resource Group of the provided Virtual Network Subnet is used.
- Required: No
- Type: string
Parameter: privateEndpoints.roleAssignments
Array of role assignments to create.
- Required: No
- Type: array
- Roles configurable by name:
'Contributor''DNS Resolver Contributor''DNS Zone Contributor''Domain Services Contributor''Domain Services Reader''Network Contributor''Owner''Private DNS Zone Contributor''Reader''Role Based Access Control Administrator'
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: privateEndpoints.roleAssignments.principalId
The principal ID of the principal (user/group/identity) to assign the role to.
- Required: Yes
- Type: string
Parameter: privateEndpoints.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: privateEndpoints.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: privateEndpoints.roleAssignments.conditionVersion
Version of the condition.
- Required: No
- Type: string
- Allowed:
[ '2.0' ]
Parameter: privateEndpoints.roleAssignments.delegatedManagedIdentityResourceId
The Resource Id of the delegated managed identity resource.
- Required: No
- Type: string
Parameter: privateEndpoints.roleAssignments.description
The description of the role assignment.
- Required: No
- Type: string
Parameter: privateEndpoints.roleAssignments.name
The name (as GUID) of the role assignment. If not provided, a GUID will be generated.
- Required: No
- Type: string
Parameter: privateEndpoints.roleAssignments.principalType
The principal type of the assigned principal ID.
- Required: No
- Type: string
- Allowed:
[ 'Device' 'ForeignGroup' 'Group' 'ServicePrincipal' 'User' ]
Parameter: privateEndpoints.service
The subresource to deploy the Private Endpoint for. For example "vault" for a Key Vault Private Endpoint.
- Required: No
- Type: string
Parameter: privateEndpoints.tags
Tags to be applied on all resources/Resource Groups in this deployment.
- Required: No
- Type: object
Parameter: products
Products.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
displayName |
string | API Management Service Products name. Must be 1 to 300 characters long. |
name |
string | Product Name. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
apis |
array | Names of Product APIs. |
approvalRequired |
bool | Whether subscription approval is required. If false, new subscriptions will be approved automatically enabling developers to call the products APIs immediately after subscribing. If true, administrators must manually approve the subscription before the developer can any of the products APIs. Can be present only if subscriptionRequired property is present and has a value of false. |
description |
string | Product description. May include HTML formatting tags. |
groups |
array | Names of Product Groups. |
state |
string | whether product is published or not. Published products are discoverable by users of developer portal. Non published products are visible only to administrators. Default state of Product is notPublished. - notPublished or published. |
subscriptionRequired |
bool | Whether a product subscription is required for accessing APIs included in this product. If true, the product is referred to as "protected" and a valid subscription key is required for a request to an API included in the product to succeed. If false, the product is referred to as "open" and requests to an API included in the product can be made without a subscription key. If property is omitted when creating a new product it's value is assumed to be true. |
subscriptionsLimit |
int | Whether the number of subscriptions a user can have to this product at the same time. Set to null or omit to allow unlimited per user subscriptions. Can be present only if subscriptionRequired property is present and has a value of false. |
terms |
string | Product terms of use. Developers trying to subscribe to the product will be presented and required to accept these terms before they can complete the subscription process. |
Parameter: products.displayName
API Management Service Products name. Must be 1 to 300 characters long.
- Required: Yes
- Type: string
Parameter: products.name
Product Name.
- Required: Yes
- Type: string
Parameter: products.apis
Names of Product APIs.
- Required: No
- Type: array
Parameter: products.approvalRequired
Whether subscription approval is required. If false, new subscriptions will be approved automatically enabling developers to call the products APIs immediately after subscribing. If true, administrators must manually approve the subscription before the developer can any of the products APIs. Can be present only if subscriptionRequired property is present and has a value of false.
- Required: No
- Type: bool
Parameter: products.description
Product description. May include HTML formatting tags.
- Required: No
- Type: string
Parameter: products.groups
Names of Product Groups.
- Required: No
- Type: array
Parameter: products.state
whether product is published or not. Published products are discoverable by users of developer portal. Non published products are visible only to administrators. Default state of Product is notPublished. - notPublished or published.
- Required: No
- Type: string
Parameter: products.subscriptionRequired
Whether a product subscription is required for accessing APIs included in this product. If true, the product is referred to as "protected" and a valid subscription key is required for a request to an API included in the product to succeed. If false, the product is referred to as "open" and requests to an API included in the product can be made without a subscription key. If property is omitted when creating a new product it's value is assumed to be true.
- Required: No
- Type: bool
Parameter: products.subscriptionsLimit
Whether the number of subscriptions a user can have to this product at the same time. Set to null or omit to allow unlimited per user subscriptions. Can be present only if subscriptionRequired property is present and has a value of false.
- Required: No
- Type: int
Parameter: products.terms
Product terms of use. Developers trying to subscribe to the product will be presented and required to accept these terms before they can complete the subscription process.
- Required: No
- Type: string
Parameter: publicIpAddressResourceId
Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the region. Supported only for Developer and Premium SKU being deployed in Virtual Network.
- Required: No
- Type: string
Parameter: publicNetworkAccess
Whether or not public endpoint access is allowed for this API Management service. If set to 'Disabled', private endpoints are the exclusive access method. MUST be enabled during service creation.
- Required: No
- Type: string
Parameter: restore
Undelete API Management Service if it was previously soft-deleted. If this flag is specified and set to True all other properties will be ignored.
- Required: No
- Type: bool
- Default:
False
Parameter: roleAssignments
Array of role assignments to create.
- Required: No
- Type: array
- Roles configurable by name:
'API Management Developer Portal Content Editor''API Management Service Contributor''API Management Service Operator Role''API Management Service Reader Role''Contributor''Owner''Reader''Role Based Access Control Administrator''User Access Administrator'
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 pricing tier of this API Management service.
- Required: No
- Type: string
- Default:
'Premium' - Allowed:
[ 'Basic' 'BasicV2' 'Consumption' 'Developer' 'Premium' 'Standard' 'StandardV2' ]
Parameter: subnetResourceId
The full resource ID of a subnet in a virtual network to deploy the API Management service in.
- Required: No
- Type: string
Parameter: subscriptions
Subscriptions.
- Required: No
- Type: array
Required parameters
| Parameter | Type | Description |
|---|---|---|
displayName |
string | API Management Service Subscriptions name. Must be 1 to 100 characters long. |
name |
string | Subscription name. |
Optional parameters
| Parameter | Type | Description |
|---|---|---|
allowTracing |
bool | Determines whether tracing can be enabled. |
ownerId |
string | User (user ID path) for whom subscription is being created in form /users/{userId}. |
primaryKey |
string | Primary subscription key. If not specified during request key will be generated automatically. |
scope |
string | Scope type to choose between a product, "allAPIs" or a specific API. Scope like "/products/{productId}" or "/apis" or "/apis/{apiId}". |
secondaryKey |
string | Secondary subscription key. If not specified during request key will be generated automatically. |
state |
string | Initial subscription state. If no value is specified, subscription is created with Submitted state. Possible states are "" active "?" the subscription is active, "" suspended "?" the subscription is blocked, and the subscriber cannot call any APIs of the product, * submitted ? the subscription request has been made by the developer, but has not yet been approved or rejected, * rejected ? the subscription request has been denied by an administrator, * cancelled ? the subscription has been cancelled by the developer or administrator, * expired ? the subscription reached its expiration date and was deactivated. - suspended, active, expired, submitted, rejected, cancelled. |
Parameter: subscriptions.displayName
API Management Service Subscriptions name. Must be 1 to 100 characters long.
- Required: Yes
- Type: string
Parameter: subscriptions.name
Subscription name.
- Required: Yes
- Type: string
Parameter: subscriptions.allowTracing
Determines whether tracing can be enabled.
- Required: No
- Type: bool
Parameter: subscriptions.ownerId
User (user ID path) for whom subscription is being created in form /users/{userId}.
- Required: No
- Type: string
Parameter: subscriptions.primaryKey
Primary subscription key. If not specified during request key will be generated automatically.
- Required: No
- Type: string
Parameter: subscriptions.scope
Scope type to choose between a product, "allAPIs" or a specific API. Scope like "/products/{productId}" or "/apis" or "/apis/{apiId}".
- Required: No
- Type: string
Parameter: subscriptions.secondaryKey
Secondary subscription key. If not specified during request key will be generated automatically.
- Required: No
- Type: string
Parameter: subscriptions.state
Initial subscription state. If no value is specified, subscription is created with Submitted state. Possible states are "" active "?" the subscription is active, "" suspended "?" the subscription is blocked, and the subscriber cannot call any APIs of the product, * submitted ? the subscription request has been made by the developer, but has not yet been approved or rejected, * rejected ? the subscription request has been denied by an administrator, * cancelled ? the subscription has been cancelled by the developer or administrator, * expired ? the subscription reached its expiration date and was deactivated. - suspended, active, expired, submitted, rejected, cancelled.
- Required: No
- Type: string
Parameter: tags
Tags of the resource.
- Required: No
- Type: object
Parameter: virtualNetworkType
The type of VPN in which API Management service needs to be configured in. None (Default Value) means the API Management service is not part of any Virtual Network, External means the API Management deployment is set up inside a Virtual Network having an internet Facing Endpoint, and Internal means that API Management deployment is setup inside a Virtual Network having an Intranet Facing Endpoint only.
- Required: No
- Type: string
- Default:
'None' - Allowed:
[ 'External' 'Internal' 'None' ]
Outputs
| Output | Type | Description |
|---|---|---|
location |
string | The location the resource was deployed into. |
name |
string | The name of the API management service. |
privateEndpoints |
array | The private endpoints of the key vault. |
resourceGroupName |
string | The resource group the API management service was deployed into. |
resourceId |
string | The resource ID of the API management 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/private-endpoints/main.bicep |
Local Reference |
./packages/utl-common-types/main.bicep |
Local Reference |
Notes
The latest version of this module only includes supported versions of the API Management resource. All unsupported versions of API Management have been removed from the related parameters. See the API Management stv1 platform retirement article for more details.
Parameter Usage: apiManagementServicePolicy
Parameter JSON format
"apiManagementServicePolicy": {
"value": {
"value":"<policies> <inbound> <rate-limit-by-key calls='250' renewal-period='60' counter-key='@(context.Request.IpAddress)' /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>",
"format":"xml"
}
}
Bicep format
apiManagementServicePolicy: {
value:'<policies> <inbound> <rate-limit-by-key calls=\'250\' renewal-period='60' counter-key=\'@(context.Request.IpAddress)\' /> </inbound> <backend> <forward-request /> </backend> <outbound> </outbound> </policies>'
format:'xml'
}
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.12.0
Changes
- Added support for
privateEndpointsparameter - Added
privateEndpointsoutput
Breaking Changes
publicNetworkAccessis set toDisabledif not specified andprivateEndpointsare configured
0.11.2
Changes
- Added support for
publicNetworkAccessparameter
Breaking Changes
- None
0.11.1
Changes
- Applied the
@secure()decorator to thevalueparameter within thenamedValueinput object. - Minor json formatting adjustments
Breaking Changes
- None
0.11.0
Changes
- Introduced
avm/res/api-management/service/apias child module - Introduced
avm/res/api-management/service/api/diagnosticsas child module - Introduced
avm/res/api-management/service/api/policyas child module - Introduced
avm/res/api-management/service/api-version-setas child module - Introduced
avm/res/api-management/service/authorization-serveras child module - Introduced
avm/res/api-management/service/backendas child module - Introduced
avm/res/api-management/service/cacheas child module - Introduced
avm/res/api-management/service/identity-provideras child module - Introduced
avm/res/api-management/service/loggeras child module - Introduced
avm/res/api-management/service/named-valueas child module - Introduced
avm/res/api-management/service/policyas child module - Introduced
avm/res/api-management/service/portalsettingas child module - Introduced
avm/res/api-management/service/productas child module - Introduced
avm/res/api-management/service/product/apias child module - Introduced
avm/res/api-management/service/product/groupas child module - Introduced
avm/res/api-management/service/subscriptionas child module - Added types for parameters
backendscachesapiDiagnosticsidentityProvidersloggersnamedValuespoliciesportalsettingsproductssubscriptionscertificates
- Updated LockType to 'avm-common-types version'
0.6.0, enabling custom notes for locks.
Breaking Changes
- Reduced type of
products/apis&products/productsfrom array of objects to array of string as only the name can be configured - Diverse bugfixes like renaming the parameters
identityProvider/signinTenanttosignInTenant,logger/resourceIdtotargetResourceId&logger/loggerTypetotypebeing named incorrectly and hence not being passed through
0.9.1
Changes
- Initial version
- Updated ReadMe with AzAdvertizer reference
Breaking Changes
- None
{
"workingFolder": "packages",
"packages": [
// packages defined earlier
{
"name": "avm-bicep/api-management-services",
"version": "0.12.0"
}
]
}
Stats
Selected version:
0.12.0
Downloads this version:
0
Downloads all versions:
9
Latest version:
0.12.0
Latest update:
23-10-2025
avm-bicep
Other packages
from avm-bicep
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 challengesComplete solutions
No scattered filesSee what's deployed where
When it needs updatesZero vendor lock-in
Packages work without usDirect founder access Zero security incidents in 2+ years Works with any cloud, any CI/CD platform