Resources/Schema/New-CmAzPaasWeb.Schema.json

{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "New-CmAzPaasWeb",
    "type": "object",
    "title": "New-CmAzPaasWeb",
    "description": "Settings Root.",
    "required": [
        "webSolutions"
    ],
    "properties": {
        "component": {
            "$id": "#/component",
            "type": ["string", "null"],
            "title": "Component",
            "description": "Value to determine what cmdlet should be dynamically loaded for these settings."
        },
        "service": {
            "$id": "#/service",
            "type": ["object", "null"],
            "title": "Service",
            "required": [
                "publish"
            ],
            "description": "Contains dependency and publish details for service location.",
            "properties": {
                "publish": {
                    "$id": "#/service/publish",
                    "type": ["object", "null"],
                    "title": "Publish",
                    "description": "Contains publish details for service location.",
                    "properties": {
                        "resourceGroup": {
                            "$id": "#/service/publish/resourceGroup",
                            "type": ["string", "null"],
                            "title": "ResourceGroup",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "appServicePlan": {
                            "$id": "#/service/publish/appServicePlan",
                            "type": ["string", "null"],
                            "title": "AppServicePlan",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "webapp": {
                            "$id": "#/service/publish/webapp",
                            "type": ["string", "null"],
                            "title": "Webapp",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "apiManagement": {
                            "$id": "#/service/publish/apiManagement",
                            "type": ["string", "null"],
                            "title": "APIManagement",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "frontdoor": {
                            "$id": "#/service/publish/frontdoor",
                            "type": ["string", "null"],
                            "title": "FrontDoor",
                            "description": "Dependency value to fetch existing resource type."
                        },
                        "frontdoorResourceGroup": {
                            "$id": "#/service/publish/frontdoorResourceGroup",
                            "type": ["string", "null"],
                            "title": "FrontdoorResourceGroup",
                            "description": "Dependency value to fetch existing resource type."
                        },
                        "cdn": {
                            "$id": "#/service/publish/cdn",
                            "type": ["string", "null"],
                            "title": "CDN",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "endpoint": {
                            "$id": "#/service/publish/endpoint",
                            "type": ["string", "null"],
                            "title": "Endpoint",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "slot": {
                            "$id": "#/service/publish/slot",
                            "type": ["string", "null"],
                            "title": "Slot",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "function": {
                            "$id": "#/service/publish/function",
                            "type": ["string", "null"],
                            "title": "Function",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "privateEndpoint": {
                            "$id": "#/service/publish/privateEndpoint",
                            "type": ["string", "null"],
                            "title": "PrivateEndpoint",
                            "description": "Global default value to publish on deployed resource type."
                        }
                    },
                    "additionalProperties": false
                },
                "dependencies": {
                    "$id": "#/service/dependencies",
                    "type": ["object", "null"],
                    "title": "Dependencies",
                    "description": "Contains dependency details for service location.",
                    "properties": {
                        "appInsights": {
                            "$id": "#/service/dependencies/appInsights",
                            "type": ["string", "null"],
                            "title": "AppInsights",
                            "description": "Global default dependency value to fetch existing resource type."
                        },
                        "keyvault": {
                            "$id": "#/service/dependencies/keyvault",
                            "type": ["string", "null"],
                            "title": "Keyvault",
                            "description": "Global default dependency value to fetch existing resource type."
                        },
                        "webApplicationFirewallPolicy": {
                            "$id": "#/service/dependencies/webApplicationFirewallPolicy",
                            "type": ["string", "null"],
                            "title": "WebApplicationFirewallPolicy",
                            "description": "Global default dependency value to fetch existing resource type."
                        },
                        "storage": {
                            "$id": "#/service/dependencies/storage",
                            "type": ["string", "null"],
                            "title": "Storage",
                            "description": "Global default dependency value to fetch existing resource type."
                        },
                        "vnet": {
                            "$id": "#/service/dependencies/vnet",
                            "type": ["string", "null"],
                            "title": "Vnet",
                            "description": "Global default dependency value to fetch existing resource type."
                        },
                        "privateZones": {
                            "$id": "#/service/dependencies/vnet",
                            "type": ["array", "null"],
                            "title": "Private Zones",
                            "description": "Global default dependency value to fetch existing resource type."
                        }
                    },
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "webSolutions": {
            "$id": "#/webSolutions",
            "type": ["array", "null"],
            "title": "WebSolutions",
            "description": "List of details required to deploy all resource groups, app service plans, webapps, cdns, Azure front door and api management instances.",
            "items": {
                "$id": "#/webSolutions/items",
                "allOf": [
                    {
                        "$id": "#/webSolutions/items/allOf",
                        "type": "object",
                        "required": [
                            "name"
                        ],
                        "properties": {
                            "name": {
                                "$id": "#/webSolutions/items/allOf/name",
                                "type": "string",
                                "title": "Name",
                                "description": "Becomes part of the generated resource group's name."
                            },
                            "service": {
                                "$id": "#/webSolutions/items/allOf/service",
                                "type": ["object", "null"],
                                "title": "Service",
                                "description": "Contains dependency and publish details for service location.",
                                "properties": {
                                    "publish": {
                                        "$id": "#/webSolutions/items/allOf/service/publish",
                                        "type": ["object", "null"],
                                        "title": "Publish",
                                        "description": "Contains publish details for service location.",
                                        "properties": {
                                            "resourceGroup": {
                                                "$id": "#/webSolutions/items/allOf/service/publish/resourceGroup",
                                                "type": ["string", "null"],
                                                "title": "ResourceGroup",
                                                "description": "Local overriding value to publish on deployed existing resource type."
                                            }
                                        },
                                        "additionalProperties": false
                                    }
                                },
                                "additionalProperties": false
                            },
                            "appServicePlans": {
                                "$id": "#/webSolutions/items/allOf/appServicePlans",
                                "type": ["array", "null"],
                                "title": "AppServicePlans",
                                "description": "List of details required to deploy all app service plans, webapps, cdns and api management instances.",
                                "items": {
                                    "$id": "#/webSolutions/items/allOf/appServicePlans/items",
                                    "allOf": [
                                        {
                                            "$id": "#/webSolutions/items/allOf/appServicePlans/items/allOf",
                                            "type": "object",
                                            "required": [
                                                "name",
                                                "sku",
                                                "location"
                                            ],
                                            "properties": {
                                                "name": {
                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/name",
                                                    "type": "string",
                                                    "title": "Name",
                                                    "description": "Becomes part of the generated app service plan's name."
                                                },
                                                "service": {
                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/service",
                                                    "type": ["object", "null"],
                                                    "title": "Service",
                                                    "description": "Contains dependency and publish details for service location.",
                                                    "properties": {
                                                        "publish": {
                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/service/publish",
                                                            "type": ["object", "null"],
                                                            "title": "Publish",
                                                            "description": "Contains publish details for service location.",
                                                            "properties": {
                                                                "appServicePlan": {
                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/service/publish/appServicePlan",
                                                                    "type": ["string", "null"],
                                                                    "title": "AppServicePlan",
                                                                    "description": "Local overriding value to publish on deployed existing resource type."
                                                                }
                                                            },
                                                            "additionalProperties": false
                                                        }
                                                    },
                                                    "additionalProperties": false
                                                },
                                                "sku": {
                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/sku",
                                                    "type": "string",
                                                    "title": "Sku",
                                                    "description": "Sku of the app service plan. This defines the capacity of the resources."
                                                },
                                                "location": {
                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/location",
                                                    "type": "string",
                                                    "title": "location",
                                                    "description": "Location for app service plan, default location for webapps that share the plan."
                                                },
                                                "functions": {
                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions",
                                                    "type": "array",
                                                    "title": "functions",
                                                    "description": "Contains details used to deploy functions which share the same app service plan.",
                                                    "additionalItems": false,
                                                    "items": {
                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items",
                                                        "allOf": [
                                                            {
                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf",
                                                                "type": "object",
                                                                "required": ["name", "runtime"],
                                                                "properties": {
                                                                    "name": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/name",
                                                                        "type": "string",
                                                                        "title": "Name",
                                                                        "description": "Becomes part of the generated function app's name."
                                                                    },
                                                                    "enableAppInsight": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/enableAppInsight",
                                                                        "type": ["boolean", "null"],
                                                                        "title": "EnableAppInsight",
                                                                        "description": "Enables application insights for the web app.",
                                                                        "default": false
                                                                    },
                                                                    "privateEndpoints": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints",
                                                                        "type": ["array", "null"],
                                                                        "title": "PrivateEndpoints",
                                                                        "description": "Container for private endpoint details.",
                                                                        "items": {
                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items",
                                                                            "allOf": [
                                                                                {
                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf",
                                                                                    "type": "object",
                                                                                    "required": [
                                                                                        "subnetName"
                                                                                    ],
                                                                                    "properties": {
                                                                                        "subnetName": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/subnetName",
                                                                                            "type": "string",
                                                                                            "title": "SubnetName",
                                                                                            "description": "Names of underlying sub-resources to create private connection with."
                                                                                        },
                                                                                        "name": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/name",
                                                                                            "type": ["string", "null"],
                                                                                            "title": "Name",
                                                                                            "description": "Becomes part of private endpoint name."
                                                                                        },
                                                                                        "service": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service",
                                                                                            "type": "object",
                                                                                            "title": "Service",
                                                                                            "description": "Contains dependency and publish details for service location.",
                                                                                            "properties": {
                                                                                                "dependencies": {
                                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/dependencies",
                                                                                                    "type": "object",
                                                                                                    "title": "Dependencies",
                                                                                                    "description": "Contains dependency details for service location.",
                                                                                                    "properties": {
                                                                                                        "vnet": {
                                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/dependencies/vnet",
                                                                                                            "type": "string",
                                                                                                            "title": "Vnet",
                                                                                                            "description": "Local overriding dependency value to fetch existing resource type."
                                                                                                        },
                                                                                                        "privateZones": {
                                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/dependencies/privateZones",
                                                                                                            "type": "array",
                                                                                                            "title": "PrivateZones",
                                                                                                            "description": "Dependency value to fetch existing resource type. Enables private zone integration."
                                                                                                        }
                                                                                                    },
                                                                                                    "additionalProperties": false
                                                                                                },
                                                                                                "publish": {
                                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/publish",
                                                                                                    "type": "object",
                                                                                                    "title": "Publish",
                                                                                                    "description": "Contains publish details for service location.",
                                                                                                    "properties": {
                                                                                                        "privateEndpoint": {
                                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/publish/privateEndpoint",
                                                                                                            "type": "string",
                                                                                                            "title": "privateEndpoint",
                                                                                                            "description": "Local overriding value to publish on deployed existing resource type."
                                                                                                        }
                                                                                                    },
                                                                                                    "additionalProperties": false
                                                                                                }
                                                                                            },
                                                                                            "additionalProperties": false
                                                                                        }
                                                                                    },
                                                                                    "additionalProperties": false
                                                                                }
                                                                            ]
                                                                        }
                                                                    },
                                                                    "runtime": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/runtime",
                                                                        "type": "string",
                                                                        "title": "RunTime",
                                                                        "description": "Defines the technology stack used to run the app."
                                                                    },
                                                                    "service": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/service",
                                                                        "type": ["object", "null"],
                                                                        "title": "Service",
                                                                        "description": "Contains dependency and publish details for service location.",
                                                                        "properties": {
                                                                            "publish": {
                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/service/publish",
                                                                                "type": ["object", "null"],
                                                                                "title": "Publish",
                                                                                "description": "Contains publish details for service location.",
                                                                                "properties": {
                                                                                    "function": {
                                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/service/publish/function",
                                                                                        "type": ["string", "null"],
                                                                                        "title": "function",
                                                                                        "description": "Local overriding value to publish on deployed existing resource type."
                                                                                    }
                                                                                },
                                                                                "additionalProperties": false
                                                                            },
                                                                            "dependencies": {
                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/service/dependencies",
                                                                                "type": ["object", "null"],
                                                                                "title": "Dependencies",
                                                                                "description": "Contains dependency details for service location.",
                                                                                "properties": {
                                                                                    "storage": {
                                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/functions/items/allOf/service/dependencies/storage",
                                                                                        "type": ["string", "null"],
                                                                                        "title": "storage",
                                                                                        "description": "Local overriding value to fetch existing resource type."
                                                                                    }
                                                                                },
                                                                                "additionalProperties": false
                                                                            }
                                                                        },
                                                                        "additionalProperties": false
                                                                    }
                                                                },
                                                                "additionalProperties": false
                                                            }
                                                        ]
                                                    }
                                                },
                                                "webapps": {
                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps",
                                                    "type": "array",
                                                    "title": "Webapps",
                                                    "description": "Contains details used to deploy webapps which share the same app service plan.",
                                                    "items": {
                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items",
                                                        "allOf": [
                                                            {
                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf",
                                                                "type": "object",
                                                                "required": [
                                                                    "name",
                                                                    "runTime"
                                                                ],
                                                                "properties": {
                                                                    "name": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/name",
                                                                        "type": "string",
                                                                        "title": "Name",
                                                                        "description": "Becomes part of the generated web app's name."
                                                                    },
                                                                    "enableAppInsight": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/enableAppInsight",
                                                                        "type": ["boolean", "null"],
                                                                        "title": "EnableAppInsight",
                                                                        "description": "Enables application insights for the web app.",
                                                                        "default": false
                                                                    },
                                                                    "backendpool": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/backendpool",
                                                                        "type": ["string", "null"],
                                                                        "title": "Backendpool",
                                                                        "description": "Name of front door backendpool which will route requests to this web app."
                                                                    },
                                                                    "backendHostHeader": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/backendHostHeader",
                                                                        "type": ["boolean", "null"],
                                                                        "title": "BackendHostHeader",
                                                                        "description": "Enable or disable backend host header on backend pool for the webapp.",
                                                                        "default": false
                                                                    },
                                                                    "weight": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/weight",
                                                                        "type": ["integer", "null"],
                                                                        "title": "Weight",
                                                                        "description": " Weight is an integer from 1 to 1000. Allows you to distribute traffic evenly or to use a pre-defined settings.",
                                                                        "default": 100,
                                                                        "minimum": 1,
                                                                        "maximum": 1000
                                                                    },
                                                                    "priority": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/priority",
                                                                        "type": ["integer", "null"],
                                                                        "title": "Priority",
                                                                        "description": "Allows implementation of failover patterns.",
                                                                        "default": 1
                                                                    },
                                                                    "runTime": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/runTime",
                                                                        "type": "string",
                                                                        "title": "RunTime",
                                                                        "description": "Defines the technology stack used to run the app."
                                                                    },
                                                                    "service": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/service",
                                                                        "type": ["object", "null"],
                                                                        "title": "Service",
                                                                        "description": "Contains dependency and publish details for service location.",
                                                                        "properties": {
                                                                            "publish": {
                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/service/publish",
                                                                                "type": ["object", "null"],
                                                                                "title": "Publish",
                                                                                "description": "Contains publish details for service location.",
                                                                                "properties": {
                                                                                    "webapp": {
                                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/service/publish/webapp",
                                                                                        "type": ["string", "null"],
                                                                                        "title": "Webapp",
                                                                                        "description": "Local overriding value to publish on deployed existing resource type."
                                                                                    }
                                                                                },
                                                                                "additionalProperties": false
                                                                            }
                                                                        },
                                                                        "additionalProperties": false
                                                                    },
                                                                    "privateEndpoints": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints",
                                                                        "type": ["array", "null"],
                                                                        "title": "PrivateEndpoints",
                                                                        "description": "Container for private endpoint details.",
                                                                        "items": {
                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items",
                                                                            "allOf": [
                                                                                {
                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf",
                                                                                    "type": "object",
                                                                                    "required": [
                                                                                        "service",
                                                                                        "subnetName"
                                                                                    ],
                                                                                    "properties": {
                                                                                        "subnetName": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/subnetName",
                                                                                            "type": "string",
                                                                                            "title": "SubnetName",
                                                                                            "description": "Names of underlying sub-resources to create private connection with."
                                                                                        },
                                                                                        "name": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/name",
                                                                                            "type": ["string", "null"],
                                                                                            "title": "Name",
                                                                                            "description": "Becomes part of private endpoint name."
                                                                                        },
                                                                                        "service": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/service",
                                                                                            "type": "object",
                                                                                            "title": "Service",
                                                                                            "description": "Contains dependency and publish details for service location.",
                                                                                            "properties": {
                                                                                                "dependencies": {
                                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/service/dependencies",
                                                                                                    "type": "object",
                                                                                                    "title": "Dependencies",
                                                                                                    "description": "Contains dependency details for service location.",
                                                                                                    "properties": {
                                                                                                        "vnet": {
                                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/service/dependencies/vnet",
                                                                                                            "type": "string",
                                                                                                            "title": "Vnet",
                                                                                                            "description": "Local overriding dependency value to fetch existing resource type."
                                                                                                        },
                                                                                                        "privateZones": {
                                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/service/dependencies/privateZones",
                                                                                                            "type": "array",
                                                                                                            "title": "PrivateZones",
                                                                                                            "description": "Dependency value to fetch existing resource type. Enables private zone integration."
                                                                                                        }
                                                                                                    },
                                                                                                    "additionalProperties": false
                                                                                                },
                                                                                                "publish": {
                                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/service/publish",
                                                                                                    "type": "object",
                                                                                                    "title": "Publish",
                                                                                                    "description": "Contains publish details for service location.",
                                                                                                    "properties": {
                                                                                                        "privateEndpoint": {
                                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/privateEndpoints/items/allOf/service/publish/privateEndpoint",
                                                                                                            "type": "string",
                                                                                                            "title": "privateEndpoint",
                                                                                                            "description": "Local overriding value to publish on deployed existing resource type."
                                                                                                        }
                                                                                                    },
                                                                                                    "additionalProperties": false
                                                                                                }
                                                                                            },
                                                                                            "additionalProperties": false
                                                                                        }
                                                                                    },
                                                                                    "additionalProperties": false
                                                                                }
                                                                            ]
                                                                        }
                                                                    },
                                                                    "slots": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots",
                                                                        "type": ["array", "null"],
                                                                        "title": "Slots",
                                                                        "description": "Defines the names and service location details of the staging slots for the web app.",
                                                                        "items": {
                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items",
                                                                            "oneOf": [
                                                                                {
                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object",
                                                                                    "type": "object",
                                                                                    "required": [
                                                                                        "name"
                                                                                    ],
                                                                                    "properties": {
                                                                                        "name": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/name",
                                                                                            "type": ["string", "null"],
                                                                                            "title": "Name",
                                                                                            "description": "Becomes part of private endpoint name."
                                                                                        },
                                                                                        "service": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/service",
                                                                                            "type": "object",
                                                                                            "title": "Service",
                                                                                            "description": "Contains dependency and publish details for service location.",
                                                                                            "properties": {
                                                                                                "publish": {
                                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/service/publish",
                                                                                                    "type": "object",
                                                                                                    "title": "Publish",
                                                                                                    "description": "Contains publish details for service location.",
                                                                                                    "properties": {
                                                                                                        "slot": {
                                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/service/publish/slot",
                                                                                                            "type": "string",
                                                                                                            "title": "Slot",
                                                                                                            "description": "Local overriding value to publish on deployed existing resource type."
                                                                                                        }
                                                                                                    },
                                                                                                    "additionalProperties": false
                                                                                                }
                                                                                            },
                                                                                            "additionalProperties": false
                                                                                        },
                                                                                        "privateEndpoints": {
                                                                                            "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints",
                                                                                            "type": ["array", "null"],
                                                                                            "title": "PrivateEndpoints",
                                                                                            "description": "Container for private endpoint details.",
                                                                                            "items": {
                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items",
                                                                                                "allOf": [
                                                                                                    {
                                                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf",
                                                                                                        "type": "object",
                                                                                                        "required": [
                                                                                                            "service",
                                                                                                            "subnetName"
                                                                                                        ],
                                                                                                        "properties": {
                                                                                                            "subnetName": {
                                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/subnetName",
                                                                                                                "type": "string",
                                                                                                                "title": "SubnetName",
                                                                                                                "description": "Names of underlying sub-resources to create private connection with."
                                                                                                            },
                                                                                                            "name": {
                                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/name",
                                                                                                                "type": ["string", "null"],
                                                                                                                "title": "Name",
                                                                                                                "description": "Becomes part of private endpoint name."
                                                                                                            },
                                                                                                            "service": {
                                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/service",
                                                                                                                "type": "object",
                                                                                                                "title": "Service",
                                                                                                                "description": "Contains dependency and publish details for service location.",
                                                                                                                "properties": {
                                                                                                                    "dependencies": {
                                                                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/service/dependencies",
                                                                                                                        "type": "object",
                                                                                                                        "title": "Dependencies",
                                                                                                                        "description": "Contains dependency details for service location.",
                                                                                                                        "properties": {
                                                                                                                            "vnet": {
                                                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/service/dependencies/vnet",
                                                                                                                                "type": "string",
                                                                                                                                "title": "Vnet",
                                                                                                                                "description": "Local overriding dependency value to fetch existing resource type."
                                                                                                                            },
                                                                                                                            "privateZones": {
                                                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/service/dependencies/privateZones",
                                                                                                                                "type": "array",
                                                                                                                                "title": "PrivateZones",
                                                                                                                                "description": "Dependency value to fetch existing resource type. Enables private zone integration."
                                                                                                                            }
                                                                                                                        },
                                                                                                                        "additionalProperties": false
                                                                                                                    },
                                                                                                                    "publish": {
                                                                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/service/publish",
                                                                                                                        "type": "object",
                                                                                                                        "title": "Publish",
                                                                                                                        "description": "Contains publish details for service location.",
                                                                                                                        "properties": {
                                                                                                                            "privateEndpoint": {
                                                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/Object/privateEndpoints/items/allOf/service/publish/privateEndpoint",
                                                                                                                                "type": "string",
                                                                                                                                "title": "privateEndpoint",
                                                                                                                                "description": "Local overriding value to publish on deployed existing resource type."
                                                                                                                            }
                                                                                                                        },
                                                                                                                        "additionalProperties": false
                                                                                                                    }
                                                                                                                },
                                                                                                                "additionalProperties": false
                                                                                                            }
                                                                                                        },
                                                                                                        "additionalProperties": false
                                                                                                    }
                                                                                                ]
                                                                                            }
                                                                                        }
                                                                                    },
                                                                                    "additionalProperties": false
                                                                                },
                                                                                {
                                                                                    "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/slots/items/oneOf/string",
                                                                                    "type": "string"
                                                                                }
                                                                            ]
                                                                        }
                                                                    },
                                                                    "contentDeliveryNetwork": {
                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOfcontentDeliveryNetwork",
                                                                        "type": ["object", "null"],
                                                                        "title": "ContentDeliveryNetwork",
                                                                        "description": "Contains details required to deploy a Azure cdn service",
                                                                        "default": {
                                                                            "name": "none",
                                                                            "sku": "standard_microsoft",
                                                                            "location": "global",
                                                                            "service": {
                                                                                "publish": {
                                                                                    "cdn": null,
                                                                                    "endpoint": null
                                                                                }
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "name",
                                                                            "sku",
                                                                            "location"
                                                                        ],
                                                                        "properties": {
                                                                            "name": {
                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/contentDeliveryNetwork/name",
                                                                                "type": "string",
                                                                                "title": "Name",
                                                                                "description": "Becomes part of the generated cdn's name."
                                                                            },
                                                                            "sku": {
                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/contentDeliveryNetwork/sku",
                                                                                "type": "string",
                                                                                "title": "Sku",
                                                                                "description": "Defines SKU which is loosely mapped to the cdn vendor."
                                                                            },
                                                                            "location": {
                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/contentDeliveryNetwork/location",
                                                                                "type": "string",
                                                                                "title": "location",
                                                                                "description": "Location to deploy the Azure cdn. Cdns use a different location schema than other resources E.g. Instead of EU West its westeurope."
                                                                            },
                                                                            "service": {
                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/contentDeliveryNetwork/service",
                                                                                "type": ["object", "null"],
                                                                                "title": "Service",
                                                                                "description": "Contains dependency and publish details for service location.",
                                                                                "properties": {
                                                                                    "publish": {
                                                                                        "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/contentDeliveryNetwork/service/publish",
                                                                                        "type": ["object", "null"],
                                                                                        "title": "Publish",
                                                                                        "description": "Contains publish details for service location.",
                                                                                        "properties": {
                                                                                            "cdn": {
                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/contentDeliveryNetwork/service/publish/cdn",
                                                                                                "type": ["string", "null"],
                                                                                                "title": "CDN",
                                                                                                "description": "Local overriding value to publish on deployed existing resource type."
                                                                                            },
                                                                                            "endpoint": {
                                                                                                "$id": "#/webSolutions/items/allOf/appserviceplans/items/allOf/webapps/items/allOf/contentDeliveryNetwork/service/publish/endpoint",
                                                                                                "type": ["string", "null"],
                                                                                                "title": "Endpoint",
                                                                                                "description": "Local overriding value to publish on deployed existing resource type."
                                                                                            }
                                                                                        },
                                                                                        "additionalProperties": false
                                                                                    }
                                                                                },
                                                                                "additionalProperties": false
                                                                            }
                                                                        },
                                                                        "additionalProperties": false
                                                                    }
                                                                },
                                                                "additionalProperties": false
                                                            }
                                                        ]
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                }
                            },
                            "apiManagementServices": {
                                "$id": "#/webSolutions/items/allOf/apiManagementServices",
                                "type": ["array", "null"],
                                "title": "ApiManagementServices",
                                "description": "Deployes Api Gateway on Azure in provided resource group",
                                "default": [{ "name": "none", "service": { "publish": { "slot": null } } }],
                                "items": {
                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items",
                                    "allOf": [
                                        {
                                            "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/",
                                            "type": "object",
                                            "title": "APIManagementServices",
                                            "description": "Contains details required to deploy Api Gateway in Azure.",
                                            "required": [
                                                "name",
                                                "publisherName",
                                                "publisherEmail",
                                                "sku",
                                                "location"
                                            ],
                                            "properties": {
                                                "name": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/name",
                                                    "type": "string",
                                                    "title": "Name",
                                                    "description": "Becomes part of the generated api management service's name."
                                                },
                                                "location": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/location",
                                                    "type": "string",
                                                    "title": "location",
                                                    "description": "Deployment location"
                                                },
                                                "publisherName": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/publisherName",
                                                    "type": "string",
                                                    "title": "PublisherName",
                                                    "description": "Organization name."
                                                },
                                                "publisherEmail": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/publisherEmail",
                                                    "type": "string",
                                                    "title": "PublisherEmail",
                                                    "description": "Admin email Id.",
                                                    "format": "email"
                                                },
                                                "sku": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/sku",
                                                    "type": "string",
                                                    "title": "Sku",
                                                    "description": "Defines capacity and pricing tier of resource."
                                                },
                                                "skuCount": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/skuCount",
                                                    "type": ["integer", "null"],
                                                    "title": "SkuCount",
                                                    "description": "The instance size of this API Management instance.",
                                                    "default": 1
                                                },
                                                "backendpool": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/backendpool",
                                                    "type": ["string", "null"],
                                                    "title": "Backendpool",
                                                    "description": "Name of front door backendpool which will route requests to this webapp."
                                                },
                                                "backendHostHeader": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/backendHostHeader",
                                                    "type": ["boolean", "null"],
                                                    "title": "BackendHostHeader",
                                                    "description": "Enable or disable backend host header on backend pool for the webapp.",
                                                    "default": false
                                                },
                                                "weight": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/weight",
                                                    "type": ["integer", "null"],
                                                    "title": "Weight",
                                                    "description": "Weight is an integer from 1 to 1000. Allows you to distribute traffic evenly or use pre-defined settings.",
                                                    "default": 100,
                                                    "minimum": 1,
                                                    "maximum": 1000
                                                },
                                                "priority": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/priority",
                                                    "type": ["integer", "null"],
                                                    "title": "Priority",
                                                    "description": "Allows implementation of failover patterns.",
                                                    "default": 1
                                                },
                                                "service": {
                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/service",
                                                    "type": ["object", "null"],
                                                    "title": "Service",
                                                    "description": "Contains dependency and publish details for service location.",
                                                    "properties": {
                                                        "publish": {
                                                            "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/service/publish",
                                                            "type": ["object", "null"],
                                                            "title": "Publish",
                                                            "description": "Contains publish details for service location.",
                                                            "properties": {
                                                                "apiManagement": {
                                                                    "$id": "#/webSolutions/items/allOf/apiManagementServices/items/allOf/service/publish/apiManagement",
                                                                    "type": ["string", "null"],
                                                                    "title": "APIManagement",
                                                                    "description": "Local overriding value to publish on deployed existing resource type."
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            "additionalProperties": false
                                        }
                                    ]
                                }
                            }
                        },
                        "additionalProperties": false
                    }
                ]
            }
        },
        "frontdoor": {
            "$id": "#/frontdoor",
            "type": ["object", "null"],
            "title": "Frontdoor",
            "description": "Contains details required to deploy Azure front door.",
            "required": [
                "name",
                "sessionAffinity",
                "location",
                "rules",
                "backEndPools"
            ],
            "properties": {
                "name": {
                    "$id": "#/frontdoor/name",
                    "type": "string",
                    "title": "Name",
                    "description": "Becomes part of the generated Azure front door's name."
                },
                "sessionAffinity": {
                    "$id": "#/frontdoor/sessionAffinity",
                    "type": "string",
                    "title": "SessionAffinity",
                    "description": "Enable to send subsequent traffic from the same user session to the same backend."
                },
                "location": {
                    "$id": "#/frontdoor/location",
                    "type": "string",
                    "title": "location",
                    "description": "Deployment location of front door."
                },
                "customDomains": {
                    "$id": "#/frontdoor/customDomains",
                    "type": ["array", "null"],
                    "title": "CustomDomains",
                    "description": "List of details required to configure custom domains on front door.",
                    "items": {
                        "$id": "#/frontdoor/customDomains/items",
                        "allOf": [
                            {
                                "$id": "#/frontdoor/customDomains/items/allOf",
                                "type": "object",
                                "required": [
                                    "domainName",
                                    "sessionAffinity"
                                ],
                                "properties": {
                                    "domainName": {
                                        "$id": "#/frontdoor/customDomains/items/allOf/domainName",
                                        "type": "string",
                                        "title": "DomainName",
                                        "description": "Name of the custom domain."
                                    },
                                    "enableHttps": {
                                        "$id": "#/frontdoor/customDomains/items/allOf/enableHttps",
                                        "type": ["boolean", "null"],
                                        "title": "EnableHttps",
                                        "description": "Enable Https protocol. Creates and assigns Azure managed certificate on custom domain of front door."
                                    },
                                    "sessionAffinity": {
                                        "$id": "#/frontdoor/customDomains/items/allOf/sessionAffinity",
                                        "type": "string",
                                        "title": "SessionAffinity",
                                        "description": "An explanation about the purpose of this instance."
                                    },
                                    "customCertificateSecretName": {
                                        "$id": "#/frontdoor/customDomains/items/allOf/customCertificateSecretName",
                                        "type": ["string", "null"],
                                        "title": "CustomCertificateSecretName",
                                        "description": "Custom domain is assigned the provided certificate from an existing key vault."
                                    },
                                    "service": {
                                        "$id": "#/frontdoor/customDomains/items/allOf/service",
                                        "type": ["object", "null"],
                                        "title": "Service",
                                        "description": "Contains dependency and publish details for service location.",
                                        "properties": {
                                            "dependencies": {
                                                "$id": "#/frontdoor/customDomains/items/allOf/service/dependencies",
                                                "type": ["object", "null"],
                                                "title": "Dependencies",
                                                "description": "Contains dependency details for service location.",
                                                "properties": {
                                                    "keyvault": {
                                                        "$id": "#/frontdoor/customDomains/items/allOf/service/dependencies/keyvault",
                                                        "type": ["string", "null"],
                                                        "title": "Keyvault",
                                                        "description": "Local overriding dependency value to fetch existing resource type."
                                                    },
                                                    "webApplicationFirewallPolicy": {
                                                        "$id": "#/frontdoor/customDomains/items/allOf/service/dependencies/webApplicationFirewallPolicy",
                                                        "type": ["string", "null"],
                                                        "title": "WebApplicationFirewallPolicy",
                                                        "description": "Local overriding dependency value to fetch existing resource type."
                                                    }
                                                },
                                                "additionalProperties": false
                                            }
                                        },
                                        "additionalProperties": false
                                    }
                                },
                                "additionalProperties": false
                            }
                        ]
                    }
                },
                "backEndPools": {
                    "$id": "#/frontdoor/backEndPools",
                    "type": ["array"],
                    "title": "backEndPools",
                    "description": "Contains list of front door backend pools with web apps and api gateways mappings.",
                    "items": {
                        "$id": "#/frontdoor/backEndPools/items",
                        "allOf": [
                            {
                                "$id": "#/frontdoor/backEndPools/items/allOf",
                                "type": "object",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "$id": "#/frontdoor/backEndPools/items/allOf/name",
                                        "type": "string",
                                        "title": "Name",
                                        "description": "Becomes part of the generated Azure front door backendPool's name."
                                    },
                                    "healthCheckPath": {
                                        "$id": "#/frontdoor/items/allOfbackEndPools/items/allOf/healthCheckPath",
                                        "type": ["string", "null"],
                                        "title": "HealthCheckPath",
                                        "description": "Path of application url for health checks.",
                                        "default": "/index.html"
                                    },
                                    "protocol": {
                                        "$id": "#/frontdoor/items/allOfbackEndPools/items/allOf/protocol",
                                        "type": ["string", "null"],
                                        "title": "Protocol",
                                        "description": "Web access protocol.",
                                        "enum": ["Http", "Https", "http", "https", null]
                                    }
                                },
                                "additionalProperties": false
                            }
                        ]
                    }
                },
                "rules": {
                    "$id": "#/frontdoor/rules",
                    "type": ["array"],
                    "title": "Rules",
                    "description": "Contains rule details to route traffic to appropriate backend pools.",
                    "items": {
                        "$id": "#/frontdoor/rules/items",
                        "allOf": [
                            {
                                "$id": "#/frontdoor/rules/items/allOf",
                                "type": "object",
                                "required": [
                                    "name",
                                    "pattern",
                                    "backEndPoolname"
                                ],
                                "properties": {
                                    "name": {
                                        "$id": "#/frontdoor/rules/items/allOf/name",
                                        "type": "string",
                                        "title": "Name",
                                        "description": "Becomes part of the generated Azure front door rule's name."
                                    },
                                    "pattern": {
                                        "$id": "#/frontdoor/rules/items/allOf/pattern",
                                        "type": "array",
                                        "title": "Pattern",
                                        "description": "Url pattern",
                                        "items": {
                                            "$id": "#/frontdoor/rules/items/allOf/pattern/items",
                                            "minItems": 1,
                                            "allOf": [
                                                {
                                                    "$id": "#/frontdoor/rules/items/allOf/pattern/items/allOf",
                                                    "type": "string"
                                                }
                                            ]
                                        }
                                    },
                                    "backEndPoolname": {
                                        "$id": "#/frontdoor/rules/items/allOf/backEndPoolname",
                                        "type": "string",
                                        "title": "BackEndPoolname",
                                        "description": "Name of backend pool to route traffic to for the pattern."
                                    },
                                    "acceptedProtocols": {
                                        "$id": "#/frontdoor/rules/items/allOf/acceptedProtocols",
                                        "type": ["array", "null"],
                                        "title": "AcceptedProtocols",
                                        "description": "Allowed web access protocols.",
                                        "default": ["Http", "Https"],
                                        "items": {
                                            "$id": "#/frontdoor/rules/items/allOf/acceptedProtocols/items",
                                            "allOf": [
                                                {
                                                    "$id": "#/frontdoor/rules/items/allof/acceptedProtocols/items/allOf",
                                                    "type": "string"
                                                }
                                            ]
                                        }
                                    },
                                    "endpoints": {
                                        "$id": "#/frontdoor/rules/items/allOf/endpoints",
                                        "type": ["array", "null"],
                                        "title": "Endpoints",
                                        "description": "Linked custom domains.",
                                        "items": {
                                            "$id": "#/frontdoor/rules/items/allof/endpoints/items",
                                            "allOf": [
                                                {
                                                    "$id": "#/frontdoor/rules/items/allof/endpoints/items/allOf",
                                                    "type": "string"
                                                }
                                            ]
                                        }
                                    },
                                    "enableCaching": {
                                        "$id": "#/frontdoor/rules/items/allOf/enableCaching",
                                        "type": ["boolean", "null"],
                                        "title": "EnableCaching",
                                        "description": "Enable static item caching to increase speed of content delivery.",
                                        "default": true
                                    }
                                },
                                "additionalProperties": false
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false
        }
    },
    "additionalProperties": false
}