Resources/Schema/New-CmAzPaasFunction.Schema.json

{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "New-CmAzPaasFunction",
    "type": "object",
    "title": "New-CmAzPaasFunction",
    "description": "Settings Root.",
    "required": [
        "functionAppSolutions"
    ],
    "properties": {
        "component": {
            "$id": "#/component",
            "type": "string",
            "title": "Component",
            "description": "Value to determine what cmdlet should be dynamically loaded for these settings."
        },
        "service": {
            "$id": "#/service",
            "type": ["object", "null"],
            "title": "Service",
            "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."
                        },
                        "function": {
                            "$id": "#/service/publish/function",
                            "type": ["string", "null"],
                            "title": "Function",
                            "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."
                        },
                        "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/privateZones",
                            "type": ["array", "null"],
                            "title": "PrivateZones",
                            "description": "Dependency value to fetch existing resource type. Enables private zone integration."
                        }
                    },
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "functionAppSolutions": {
            "$id": "#/functionAppSolutions",
            "type": "array",
            "title": "FunctionAppSolutions",
            "description": "List of details required to deploy all resource groups, app service plans and functions.",
            "items": {
                "$id": "#/functionAppSolutions/items",
                "minItems": 1,
                "oneOf": [
                    {
                        "$id": "#/functionAppSolutions/items/oneOf/con",
                        "type": "object",
                        "required": [
                            "name",
                            "consumptionPlans"
                        ],
                        "properties": {
                            "name": {
                                "$id": "#/functionAppSolutions/items/oneOf/con/name",
                                "type": "string",
                                "title": "Name",
                                "description": "Becomes part of the generated resource group's name."
                            },
                            "service": {
                                "$id": "#/functionAppSolutions/items/allOf/service",
                                "type": ["object", "null"],
                                "title": "Service",
                                "description": "Contains dependency and publish details for service location.",
                                "properties": {
                                    "publish": {
                                        "$id": "#/functionAppSolutions/items/allOf/service/publish",
                                        "type": ["object", "null"],
                                        "title": "Publish",
                                        "description": "Contains publish details for service location.",
                                        "properties": {
                                            "resourceGroup": {
                                                "$id": "#/functionAppSolutions/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
                            },
                            "consumptionPlans": {
                                "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans",
                                "type": ["array", "null"],
                                "title": "consumptionPlans",
                                "description": "List of details required to deploy all app service plans and functions.",
                                "items": {
                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items",
                                    "minItems": 1,
                                    "allOf": [
                                        {
                                            "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf",
                                            "type": "object",
                                            "required": [
                                                "location",
                                                "name",
                                                "kind",
                                                "runtime"
                                            ],
                                            "properties": {
                                                "location": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/location",
                                                    "type": "string",
                                                    "title": "location",
                                                    "description": "Location for app service plan, default location for functions that share the plan."
                                                },
                                                "enableAppInsight": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/enableAppInsight",
                                                    "type": ["boolean", "null"],
                                                    "title": "EnableAppInsight",
                                                    "description": "Enables application insights for the function app.",
                                                    "default": false
                                                },
                                                "name": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/name",
                                                    "type": "string",
                                                    "title": "Name",
                                                    "description": "Becomes part of the generated app service plan's name."
                                                },
                                                "service": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/service",
                                                    "type": ["object", "null"],
                                                    "title": "Service",
                                                    "properties": {
                                                        "publish": {
                                                            "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/service/publish",
                                                            "type": ["object", "null"],
                                                            "title": "Publish",
                                                            "description": "Contains publish details for service location.",
                                                            "properties": {
                                                                "function": {
                                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/service/publish/function",
                                                                    "type": ["string", "null"],
                                                                    "title": "AppServicePlan",
                                                                    "description": "Local overriding value to publish on deployed existing resource type."
                                                                },
                                                                "appServicePlan": {
                                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/service/publish/appServicePlan",
                                                                    "type": ["string", "null"],
                                                                    "title": "function",
                                                                    "description": "Local overriding value to publish on deployed existing resource type."
                                                                }
                                                            },
                                                            "additionalProperties": false
                                                        },
                                                        "dependencies": {
                                                            "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/service/dependencies",
                                                            "type": ["object", "null"],
                                                            "title": "Dependencies",
                                                            "description": "Contains dependency details for service location.",
                                                            "properties": {
                                                                "storage": {
                                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/service/dependencies/storage",
                                                                    "type": ["string", "null"],
                                                                    "title": "storage",
                                                                    "description": "Global default dependency value to fetch existing resource type."
                                                                }
                                                            },
                                                            "additionalProperties": false
                                                        }
                                                    },
                                                    "additionalProperties": false
                                                },
                                                "kind": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/kind",
                                                    "type": "string",
                                                    "title": "Kind",
                                                    "description": "Type of OS.",
                                                    "enum": ["Linux", "Windows", "linux", "windows"]
                                                },
                                                "runtime": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/con/consumptionPlans/items/allOf/runtime",
                                                    "type": "string",
                                                    "title": "Runtime",
                                                    "description": "Defines the technology stack used to run the app in runtime|runtimeVersion format."
                                                }
                                            },
                                            "additionalProperties": false
                                        }
                                    ]
                                }
                            }
                        },
                        "additionalProperties": false
                    },
                    {
                        "$id": "#/functionAppSolutions/items/oneOf/asp",
                        "type": "object",
                        "required": [
                            "name",
                            "appServicePlans"
                        ],
                        "properties": {
                            "name": {
                                "$id": "#/functionAppSolutions/items/oneOf/asp/name",
                                "type": "string",
                                "title": "Name",
                                "description": "Becomes part of the generated resource group's name."
                            },
                            "transFrmWeb": {
                                "$id": "#/functionAppSolutions/items/oneOf/asp/transFrmWeb",
                                "type": ["boolean", "null"],
                                "title": "transfered from web",
                                "default": false,
                                "description": "Used for callback from New-CmAzPaasWeb."
                            },
                            "service": {
                                "$id": "#/functionAppSolutions/items/oneOf/asp/service",
                                "type": ["object", "null"],
                                "title": "Service",
                                "description": "Contains dependency and publish details for service location.",
                                "properties": {
                                    "publish": {
                                        "$id": "#/functionAppSolutions/items/oneOf/asp/service/publish",
                                        "type": ["object", "null"],
                                        "title": "Publish",
                                        "description": "Contains publish details for service location.",
                                        "properties": {
                                            "resourceGroup": {
                                                "$id": "#/functionAppSolutions/items/oneOf/asp/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": "#/functionAppSolutions/items/oneOf/asp/appServicePlans",
                                "type": "array",
                                "title": "AppServicePlans",
                                "items": {
                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items",
                                    "minItems": 1,
                                    "allOf": [
                                        {
                                            "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf",
                                            "type": "object",
                                            "required": [
                                                "location",
                                                "sku",
                                                "name",
                                                "kind",
                                                "functions"
                                            ],
                                            "properties": {
                                                "location": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/location",
                                                    "type": "string",
                                                    "title": "location",
                                                    "description": "Location for app service plan, default location for functions that share the plan."
                                                },
                                                "sku": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/sku",
                                                    "type": "string",
                                                    "title": "Sku",
                                                    "description": "Sku of the app service plan. This defines the capacity of the resources."
                                                },
                                                "name": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/name",
                                                    "type": "string",
                                                    "title": "Name",
                                                    "description": "Becomes part of the generated app service plan's name."
                                                },
                                                "resourceGroupName": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/resourceGroupName",
                                                    "type": ["string", "null"],
                                                    "title": "Resource Group name",
                                                    "description": "Pre-generated resource group name. Used for callback from New-CmAzPaasWeb."
                                                },
                                                "service": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/service",
                                                    "type": ["object", "null"],
                                                    "title": "Service",
                                                    "description": "Contains dependency and publish details for service location.",
                                                    "properties": {
                                                        "publish": {
                                                            "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/service/publish",
                                                            "type": ["object", "null"],
                                                            "title": "Publish",
                                                            "description": "Contains publish details for service location.",
                                                            "properties": {
                                                                "appServicePlan": {
                                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/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
                                                },
                                                "kind": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/kind",
                                                    "type": "string",
                                                    "title": "Kind",
                                                    "description": "Type of OS being used.",
                                                    "enum": ["Linux", "Windows", "linux", "windows"]
                                                },
                                                "functions": {
                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/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": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items",
                                                        "allOf": [
                                                            {
                                                                "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf",
                                                                "type": "object",
                                                                "required": [
                                                                    "name",
                                                                    "runtime"
                                                                ],
                                                                "properties": {
                                                                    "name": {
                                                                        "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/name",
                                                                        "type": "string",
                                                                        "title": "Name",
                                                                        "description": "Becomes part of the generated function app's name."
                                                                    },
                                                                    "privateEndpoints": {
                                                                        "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints",
                                                                        "type": ["array", "null"],
                                                                        "title": "PrivateEndpoints",
                                                                        "description": "Container for private endpoint details.",
                                                                        "items": {
                                                                            "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items",
                                                                            "allOf": [
                                                                                {
                                                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf",
                                                                                    "type": "object",
                                                                                    "required": [
                                                                                        "subnetName"
                                                                                    ],
                                                                                    "properties": {
                                                                                        "subnetName": {
                                                                                            "$id": "#/functionAppSolutions/items/oneOf/asp/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": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/name",
                                                                                            "type": ["string", "null"],
                                                                                            "title": "Name",
                                                                                            "description": "Becomes part of private endpoint name."
                                                                                        },
                                                                                        "service": {
                                                                                            "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service",
                                                                                            "type": ["object", "null"],
                                                                                            "title": "Service",
                                                                                            "description": "Contains dependency and publish details for service location.",
                                                                                            "properties": {
                                                                                                "dependencies": {
                                                                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/dependencies",
                                                                                                    "type": ["object", "null"],
                                                                                                    "title": "Dependencies",
                                                                                                    "description": "Contains dependency details for service location.",
                                                                                                    "properties": {
                                                                                                        "vnet": {
                                                                                                            "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/dependencies/vnet",
                                                                                                            "type": ["string", "null"],
                                                                                                            "title": "Vnet",
                                                                                                            "description": "Local overriding dependency value to fetch existing resource type."
                                                                                                        },
                                                                                                        "privateZones": {
                                                                                                            "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/dependencies/privateZones",
                                                                                                            "type": ["array", "null"],
                                                                                                            "title": "PrivateZones",
                                                                                                            "description": "Dependency value to fetch existing resource type. Enables private zone integration."
                                                                                                        }
                                                                                                    },
                                                                                                    "additionalProperties": false
                                                                                                },
                                                                                                "publish": {
                                                                                                    "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/publish",
                                                                                                    "type": ["object", "null"],
                                                                                                    "title": "Publish",
                                                                                                    "description": "Contains publish details for service location.",
                                                                                                    "properties": {
                                                                                                        "privateEndpoint": {
                                                                                                            "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/privateEndpoints/items/allOf/service/publish/privateEndpoint",
                                                                                                            "type": ["string", "null"],
                                                                                                            "title": "privateEndpoint",
                                                                                                            "description": "Local overriding value to publish on deployed existing resource type."
                                                                                                        }
                                                                                                    },
                                                                                                    "additionalProperties": false
                                                                                                }
                                                                                            },
                                                                                            "additionalProperties": false
                                                                                        }
                                                                                    },
                                                                                    "additionalProperties": false
                                                                                }
                                                                            ]
                                                                        }
                                                                    },
                                                                    "enableAppInsight": {
                                                                        "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/enableAppInsight",
                                                                        "type": ["boolean", "null"],
                                                                        "title": "EnableAppInsight",
                                                                        "description": "Enables application insights for the web app.",
                                                                        "default": false
                                                                    },
                                                                    "runtime": {
                                                                        "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/runtime",
                                                                        "type": "string",
                                                                        "title": "RunTime",
                                                                        "description": "Defines the technology stack used to run the app in runtime|runtimeVersion format"
                                                                    },
                                                                    "service": {
                                                                        "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/service",
                                                                        "type": ["object", "null"],
                                                                        "title": "Service",
                                                                        "description": "Contains dependency and publish details for service location.",
                                                                        "properties": {
                                                                            "publish": {
                                                                                "$id": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/service/publish",
                                                                                "type": ["object", "null"],
                                                                                "title": "Publish",
                                                                                "description": "Contains publish details for service location.",
                                                                                "properties": {
                                                                                    "function": {
                                                                                        "$id": "#/functionAppSolutions/items/oneOf/asp/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": "#/functionAppSolutions/items/oneOf/asp/appServicePlans/items/allOf/functions/items/allOf/service/dependencies",
                                                                                "type": ["object", "null"],
                                                                                "title": "Dependencies",
                                                                                "description": "Contains dependency details for service location.",
                                                                                "properties": {
                                                                                    "storage": {
                                                                                        "$id": "#/functionAppSolutions/items/oneOf/asp/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
                                                            }
                                                        ]
                                                    }
                                                }
                                            },
                                            "additionalProperties": false
                                        }
                                    ]
                                }
                            }
                        },
                        "additionalProperties": false
                    }
                ]
            }
        }
    },
    "additionalProperties": false
}