{ "id": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "$schema": "http://json-schema.org/draft-04/schema#", "title": "Template", "description": "An Azure deployment template", "type": "object", "properties": { "$schema": { "type": "string", "description": "JSON schema reference" }, "metadata": { "type": "object", "description": "Additional unstructured metadata to include with the template deployment.", "additionalProperties": true }, "apiProfile": { "type": "string", "enum": [ "2017-03-09-profile", "2018-03-01-hybrid", "2018-06-01-profile", "2019-03-01-hybrid" ], "description": "The apiProfile to use for all resources in the template." }, "contentVersion": { "type": "string", "pattern": "(^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$)", "description": "A 4 number format for the version number of this template file. For example, 1.0.0.0" }, "variables": { "type": "object", "description": "Variable definitions" }, "parameters": { "type": "object", "description": "Input parameter definitions", "additionalProperties": { "$ref": "#/definitions/parameter" } }, "functions": { "type": "array", "items": { "$ref": "#/definitions/functionNamespace" }, "description": "User defined functions" }, "resources": { "description": "Collection of resources to be deployed", "oneOf":[ { "$ref": "#/definitions/resourcesWithoutSymbolicName" }, { "$ref": "#/definitions/resourcesWithSymbolicName" } ] }, "outputs": { "type": "object", "description": "Output parameter definitions", "additionalProperties": { "$ref": "#/definitions/output" } } }, "additionalProperties": false, "required": [ "$schema", "contentVersion", "resources" ], "definitions": { "ARMResourceBase": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the resource" }, "type": { "type": "string", "description": "Resource type" }, "condition": { "oneOf": [ { "type": "boolean" }, { "$ref": "https://schema.management.azure.com/schemas/common/definitions.json#/definitions/expression" } ], "description": "Condition of the resource" }, "apiVersion": { "type": "string", "description": "API Version of the resource type, optional when apiProfile is used on the template" }, "dependsOn": { "type": "array", "items": { "type": "string" }, "description": "Collection of resources this resource depends on" } }, "required": [ "name", "type" ] }, "proxyResourceBase": { "allOf": [ { "$ref": "#/definitions/ARMResourceBase" }, { "properties": { "location": { "$ref": "#/definitions/resourceLocations", "description": "Location to deploy resource to" } } } ] }, "resourceBase": { "allOf": [ { "$ref": "#/definitions/ARMResourceBase" }, { "properties": { "location": { "$ref": "#/definitions/resourceLocations", "description": "Location to deploy resource to" }, "tags": { "type": "object", "description": "Name-value pairs to add to the resource" }, "copy": { "$ref": "#/definitions/resourceCopy" }, "scope": { "type": "string", "description": "Scope for the resource or deployment. Today, this works for two cases: 1) setting the scope for extension resources 2) deploying resources to the tenant scope in non-tenant scope deployments" }, "comments": { "type": "string" } } } ] }, "resourceBaseExternal": { "$ref": "#/definitions/resourceBase", "required": [ "plan" ] }, "resourceSku": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the sku" }, "tier": { "type": "string", "description": "Tier of the sku" }, "size": { "type": "string", "description": "Size of the sku" }, "family": { "type": "string", "description": "Family of the sku" }, "capacity": { "type": "integer", "description": "Capacity of the sku" } }, "required": [ "name" ] }, "resourceCopy": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the copy" }, "count": { "oneOf": [ { "$ref": "https://schema.management.azure.com/schemas/common/definitions.json#/definitions/expression" }, { "type": "integer" } ], "description": "Count of the copy" }, "mode": { "type": "string", "enum": [ "Parallel", "Serial" ], "description": "The copy mode" }, "batchSize": { "oneOf": [ { "$ref": "https://schema.management.azure.com/schemas/common/definitions.json#/definitions/expression" }, { "type": "integer" } ], "description": "The serial copy batch size" } } }, "resourceKind": { "type": "string", "maxLength": 64, "pattern": "(^[a-zA-Z0-9_.()-]+$)", "description": "Kind of resource" }, "resourcePlan": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the plan" }, "promotionCode": { "type": "string", "description": "Plan promotion code" }, "publisher": { "type": "string", "description": "Name of the publisher" }, "product": { "type": "string", "description": "Name of the product" }, "version": { "type": "string", "description": "Version of the product" } }, "required": [ "name" ], "description": "Plan of the resource" }, "resourceLocations": { "anyOf": [ { "type": "string" }, { "enum": [ "East Asia", "Southeast Asia", "Central US", "East US", "East US 2", "West US", "North Central US", "South Central US", "North Europe", "West Europe", "Japan West", "Japan East", "Brazil South", "Australia East", "Australia Southeast", "Central India", "West India", "South India", "Canada Central", "Canada East", "West Central US", "West US 2", "UK South", "UK West", "Korea Central", "Korea South", "global" ] } ] }, "functionNamespace": { "type": "object", "properties": { "namespace": { "type": "string", "minLength": 1, "description": "Function namespace" }, "members": { "type": "object", "additionalProperties": { "$ref": "#/definitions/functionMember" }, "description": "Function members" } } }, "functionMember": { "type": "object", "properties": { "parameters": { "type": "array", "items": { "$ref": "#/definitions/functionParameter" }, "description": "Function parameters" }, "output": { "$ref": "#/definitions/functionOutput", "description": "Function output" } } }, "functionParameter": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Function parameter name" }, "type": { "$ref": "#/definitions/parameterTypes", "description": "Type of function parameter value" } } }, "functionOutput": { "type": "object", "properties": { "type": { "$ref": "#/definitions/parameterTypes", "description": "Type of function output value" }, "value": { "$ref": "#/definitions/parameterValueTypes", "description": "Value assigned for function output" } } }, "parameter": { "type": "object", "properties": { "type": { "$ref": "#/definitions/parameterTypes", "description": "Type of input parameter" }, "defaultValue": { "$ref": "#/definitions/parameterValueTypes", "description": "Default value to be used if one is not provided" }, "allowedValues": { "type": "array", "description": "Value can only be one of these values" }, "metadata": { "type": "object", "description": "Metadata for the parameter, can be any valid JSON object" }, "minValue": { "type": "integer", "description": "Minimum value for the int type parameter" }, "maxValue": { "type": "integer", "description": "Maximum value for the int type parameter" }, "minLength": { "type": "integer", "description": "Minimum length for the string or array type parameter" }, "maxLength": { "type": "integer", "description": "Maximum length for the string or array type parameter" } }, "required": [ "type" ], "description": "Input parameter definitions" }, "output": { "type": "object", "properties": { "condition": { "oneOf": [ { "type": "boolean" }, { "$ref": "https://schema.management.azure.com/schemas/common/definitions.json#/definitions/expression" } ], "description": "Condition of the output" }, "type": { "$ref": "#/definitions/parameterTypes", "description": "Type of output value" }, "value": { "$ref": "#/definitions/parameterValueTypes", "description": "Value assigned for output" }, "copy": { "$ref": "#/definitions/outputCopy", "description": "Output copy" } }, "required": [ "type" ], "description": "Set of output parameters" }, "parameterTypes": { "enum": [ "string", "securestring", "int", "bool", "object", "secureObject", "array" ] }, "parameterValueTypes": { "type": [ "string", "boolean", "integer", "number", "object", "array", "null" ] }, "keyVaultReference": { "type": "object", "properties": { "keyVault": { "type": "object", "properties": { "id": { "type": "string", "minLength": 1 } }, "required": [ "id" ], "additionalProperties": false }, "secretName": { "type": "string", "minLength": 1 }, "secretVersion": { "type": "string", "minLength": 1 } }, "required": [ "keyVault", "secretName" ], "additionalProperties": false }, "outputCopy": { "type": "object", "properties": { "count": { "oneOf": [ { "$ref": "https://schema.management.azure.com/schemas/common/definitions.json#/definitions/expression" }, { "type": "integer" } ], "description": "Count of the copy" }, "input": { "anyOf": [ { "type": [ "string", "boolean", "integer", "array", "object", "null" ] }, { "$ref": "https://schema.management.azure.com/schemas/common/definitions.json#/definitions/expression" } ], "description": "Input of the copy" } }, "required": [ "count", "input" ], "description": "Output copy" }, "resource":{ "description": "Collection of resource schemas", "oneOf": [ { "$ref": "https://schema.management.azure.com/schemas/common/autogeneratedResources.json" } ] }, "resourcesWithSymbolicName":{ "type": "object", "description": "Resources with symbolic names", "additionalProperties": { "$ref": "#/definitions/resource" } }, "resourcesWithoutSymbolicName":{ "type": "array", "description": "Resources without symbolic names", "items": { "$ref": "#/definitions/resource" } } } }