{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/microsoft-azure-functions/refs/heads/main/json-schema/azure-functions-site-config-schema.json",
"title": "SiteConfig",
"description": "Configuration of an App Service app.",
"type": "object",
"properties": {
"numberOfWorkers": {
"type": "integer",
"format": "int32",
"description": "Number of workers."
},
"defaultDocuments": {
"type": "array",
"description": "Default documents.",
"items": {
"type": "string"
}
},
"netFrameworkVersion": {
"type": "string",
"description": ".NET Framework version.",
"default": "v4.6"
},
"phpVersion": {
"type": "string",
"description": "Version of PHP."
},
"pythonVersion": {
"type": "string",
"description": "Version of Python."
},
"nodeVersion": {
"type": "string",
"description": "Version of Node.js."
},
"powerShellVersion": {
"type": "string",
"description": "Version of PowerShell."
},
"linuxFxVersion": {
"type": "string",
"description": "Linux App Framework and version"
},
"windowsFxVersion": {
"type": "string",
"description": "Xenon App Framework and version"
},
"requestTracingEnabled": {
"type": "boolean",
"description": "true if request tracing is enabled; otherwise, false."
},
"requestTracingExpirationTime": {
"type": "string",
"format": "date-time",
"description": "Request tracing expiration time."
},
"remoteDebuggingEnabled": {
"type": "boolean",
"description": "true if remote debugging is enabled; otherwise, false."
},
"remoteDebuggingVersion": {
"type": "string",
"description": "Remote debugging version."
},
"httpLoggingEnabled": {
"type": "boolean",
"description": "true if HTTP logging is enabled; otherwise, false."
},
"acrUseManagedIdentityCreds": {
"type": "boolean",
"description": "Flag to use Managed Identity Creds for ACR pull"
},
"acrUserManagedIdentityID": {
"type": "string",
"description": "If using user managed identity, the user managed identity ClientId"
},
"logsDirectorySizeLimit": {
"type": "integer",
"format": "int32",
"description": "HTTP logs directory size limit."
},
"detailedErrorLoggingEnabled": {
"type": "boolean",
"description": "true if detailed error logging is enabled; otherwise, false."
},
"publishingUsername": {
"type": "string",
"description": "Publishing user name."
},
"appSettings": {
"type": "array",
"description": "Application settings. This property is not returned in response to normal create and read requests since it may contain sensitive information.",
"items": {
"$ref": "#/definitions/NameValuePair"
},
"x-ms-identifiers": [
"name"
],
"x-ms-mutability": [
"update",
"create"
]
},
"metadata": {
"type": "array",
"description": "Application metadata. This property cannot be retrieved, since it may contain secrets.",
"items": {
"$ref": "#/definitions/NameValuePair"
},
"x-ms-identifiers": [
"name"
],
"x-ms-mutability": [
"update",
"create"
]
},
"connectionStrings": {
"type": "array",
"description": "Connection strings. This property is not returned in response to normal create and read requests since it may contain sensitive information.",
"items": {
"$ref": "#/definitions/ConnStringInfo"
},
"x-ms-identifiers": [
"name"
],
"x-ms-mutability": [
"update",
"create"
]
},
"machineKey": {
"$ref": "#/definitions/SiteMachineKey",
"description": "Site MachineKey.",
"readOnly": true
},
"handlerMappings": {
"type": "array",
"description": "Handler mappings.",
"items": {
"$ref": "#/definitions/HandlerMapping"
},
"x-ms-identifiers": [
"extension"
]
},
"documentRoot": {
"type": "string",
"description": "Document root."
},
"scmType": {
"$ref": "#/definitions/ScmType",
"description": "SCM type."
},
"use32BitWorkerProcess": {
"type": "boolean",
"description": "true to use 32-bit worker process; otherwise, false."
},
"webSocketsEnabled": {
"type": "boolean",
"description": "true if WebSocket is enabled; otherwise, false."
},
"alwaysOn": {
"type": "boolean",
"description": "true if Always On is enabled; otherwise, false."
},
"javaVersion": {
"type": "string",
"description": "Java version."
},
"javaContainer": {
"type": "string",
"description": "Java container."
},
"javaContainerVersion": {
"type": "string",
"description": "Java container version."
},
"appCommandLine": {
"type": "string",
"description": "App command line to launch."
},
"managedPipelineMode": {
"$ref": "#/definitions/ManagedPipelineMode",
"description": "Managed pipeline mode."
},
"virtualApplications": {
"type": "array",
"description": "Virtual applications.",
"items": {
"$ref": "#/definitions/VirtualApplication"
},
"x-ms-identifiers": [
"virtualPath"
]
},
"loadBalancing": {
"$ref": "#/definitions/SiteLoadBalancing",
"description": "Site load balancing."
},
"experiments": {
"$ref": "#/definitions/Experiments",
"description": "This is work around for polymorphic types."
},
"limits": {
"$ref": "#/definitions/SiteLimits",
"description": "Site limits."
},
"autoHealEnabled": {
"type": "boolean",
"description": "true if Auto Heal is enabled; otherwise, false."
},
"autoHealRules": {
"$ref": "#/definitions/AutoHealRules",
"description": "Auto Heal rules."
},
"tracingOptions": {
"type": "string",
"description": "Tracing options."
},
"vnetName": {
"type": "string",
"description": "Virtual Network name.",
"x-ms-mutability": [
"read",
"create"
]
},
"vnetRouteAllEnabled": {
"type": "boolean",
"description": "Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied."
},
"vnetPrivatePortsCount": {
"type": "integer",
"format": "int32",
"description": "The number of private ports assigned to this app. These will be assigned dynamically on runtime."
},
"cors": {
"$ref": "#/definitions/CorsSettings",
"description": "Cross-Origin Resource Sharing (CORS) settings."
},
"push": {
"$ref": "#/definitions/PushSettings",
"description": "Push endpoint settings."
},
"apiDefinition": {
"$ref": "#/definitions/ApiDefinitionInfo",
"description": "Information about the formal API definition for the app."
},
"apiManagementConfig": {
"$ref": "#/definitions/ApiManagementConfig",
"description": "Azure API management settings linked to the app."
},
"autoSwapSlotName": {
"type": "string",
"description": "Auto-swap slot name."
},
"localMySqlEnabled": {
"type": "boolean",
"description": "true to enable local MySQL; otherwise, false.",
"default": false
},
"managedServiceIdentityId": {
"type": "integer",
"format": "int32",
"description": "Managed Service Identity Id"
},
"xManagedServiceIdentityId": {
"type": "integer",
"format": "int32",
"description": "Explicit Managed Service Identity Id"
},
"keyVaultReferenceIdentity": {
"type": "string",
"description": "Identity to use for Key Vault Reference authentication."
},
"ipSecurityRestrictions": {
"type": "array",
"description": "IP security restrictions for main.",
"items": {
"$ref": "#/definitions/IpSecurityRestriction"
},
"x-ms-identifiers": [
"name"
]
},
"ipSecurityRestrictionsDefaultAction": {
"$ref": "#/definitions/DefaultAction",
"description": "Default action for main access restriction if no rules are matched."
},
"scmIpSecurityRestrictions": {
"type": "array",
"description": "IP security restrictions for scm.",
"items": {
"$ref": "#/definitions/IpSecurityRestriction"
},
"x-ms-identifiers": [
"name"
]
},
"scmIpSecurityRestrictionsDefaultAction": {
"$ref": "#/definitions/DefaultAction",
"description": "Default action for scm access restriction if no rules are matched."
},
"scmIpSecurityRestrictionsUseMain": {
"type": "boolean",
"description": "IP security restrictions for scm to use main."
},
"http20Enabled": {
"type": "boolean",
"description": "Http20Enabled: configures a web site to allow clients to connect over http2.0",
"default": true
},
"http20ProxyFlag": {
"type": "integer",
"format": "int32",
"description": "Http20ProxyFlag: Configures a website to allow http2.0 to pass be proxied all the way to the app. 0 = disabled, 1 = pass through all http2 traffic, 2 = pass through gRPC only.",
"default": 0
},
"minTlsVersion": {
"$ref": "#/definitions/SupportedTlsVersions",
"description": "MinTlsVersion: configures the minimum version of TLS required for SSL requests"
},
"minTlsCipherSuite": {
"$ref": "#/definitions/TlsCipherSuites",
"description": "The minimum strength TLS cipher suite allowed for an application"
},
"scmMinTlsVersion": {
"$ref": "#/definitions/SupportedTlsVersions",
"description": "ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site"
},
"ftpsState": {
"$ref": "#/definitions/FtpsState",
"description": "State of FTP / FTPS service"
},
"preWarmedInstanceCount": {
"type": "integer",
"format": "int32",
"description": "Number of preWarmed instances.\nThis setting only applies to the Consumption and Elastic Plans",
"minimum": 0,
"maximum": 10
},
"functionAppScaleLimit": {
"type": "integer",
"format": "int32",
"description": "Maximum number of workers that a site can scale out to.\nThis setting only applies to the Consumption and Elastic Premium Plans",
"minimum": 0
},
"elasticWebAppScaleLimit": {
"type": "integer",
"format": "int32",
"description": "Maximum number of workers that a site can scale out to.\nThis setting only applies to apps in plans where ElasticScaleEnabled is true",
"minimum": 0
},
"healthCheckPath": {
"type": "string",
"description": "Health check path"
},
"functionsRuntimeScaleMonitoringEnabled": {
"type": "boolean",
"description": "Gets or sets a value indicating whether functions runtime scale monitoring is enabled. When enabled,\nthe ScaleController will not monitor event sources directly, but will instead call to the\nruntime to get scale status."
},
"websiteTimeZone": {
"type": "string",
"description": "Sets the time zone a site uses for generating timestamps. Compatible with Linux and Windows App Service. Setting the WEBSITE_TIME_ZONE app setting takes precedence over this config. For Linux, expects tz database values https://www.iana.org/time-zones (for a quick reference see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For Windows, expects one of the time zones listed under HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones"
},
"minimumElasticInstanceCount": {
"type": "integer",
"format": "int32",
"description": "Number of minimum instance count for a site\nThis setting only applies to the Elastic Plans",
"minimum": 0,
"maximum": 20
},
"azureStorageAccounts": {
"type": "object",
"description": "List of Azure Storage Accounts.",
"additionalProperties": {
"$ref": "#/definitions/AzureStorageInfoValue"
}
},
"publicNetworkAccess": {
"type": "string",
"description": "Property to allow or block all public traffic."
}
}
}