Resources/Schema/New-CmAzIaasVpnGw.Schema.json

{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "http://example.com/example.json",
    "type": "object",
    "title": "New-CmAzIaasVpnGw",
    "description": "Settings Root.",
    "required": [
        "location",
        "service",
        "vpnGws"
    ],
    "properties": {
        "component": {
            "$id": "#/component",
            "type": ["string", "null"],
            "title": "Component",
            "description": "Value to determine what cmdlet should be dynamically loaded for these settings."
        },
        "location": {
            "$id": "#/location",
            "type": "string",
            "title": "Location",
            "description": "Vpn gateway deployment location"
        },
        "service": {
            "$id": "#/service",
            "type": "object",
            "title": "Service",
            "description": "Contains dependency and publish details for service location.",
            "required": [
                "dependencies"
            ],
            "properties": {
                "dependencies": {
                    "$id": "#/service/dependencies",
                    "type": "object",
                    "title": "Dependencies",
                    "description": "Contains dependency details for service location.",
                    "required": [
                        "resourceGroup"
                    ],
                    "properties": {
                        "resourceGroup": {
                            "$id": "#/service/dependencies/resourceGroup",
                            "type": "string",
                            "title": "ResourceGroup",
                            "description": "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."
                        },
                        "vnet": {
                            "$id": "#/service/dependencies/vnet",
                            "type": ["string", "null"],
                            "title": "Vnet",
                            "description": "Global default dependency value to fetch existing resource type."
                        }
                    },
                    "additionalProperties": false
                },
                "publish": {
                    "$id": "#/service/publish",
                    "type": ["object", "null"],
                    "title": "Publish",
                    "description": "Contains publish details for service location.",
                    "properties": {
                        "publicIp": {
                            "$id": "#/service/publish/publicIp",
                            "type": ["string", "null"],
                            "title": "PublicIp",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "virtualNetworkGateway": {
                            "$id": "#/service/publish/virtualNetworkGateway",
                            "type": ["string", "null"],
                            "title": "VirtualNetworkGateway",
                            "description": "Global default value to publish on deployed resource type."
                        },
                        "localNetworkGateway": {
                            "$id": "#/service/publish/localNetworkGateway",
                            "type": ["string", "null"],
                            "title": "LocalNetworkGateway",
                            "description": "Global default value to publish on deployed resource type."
                        }
                    },
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "vpnGws": {
            "$id": "#/vpnGws",
            "type": "array",
            "title": "Configuration of vpn gateways",
            "description": "Contains list of details required to deploy vpn gateways and its dependent resources.",
            "items": {
                "$id": "#/vpnGws/items",
                "minItems": 1,
                "allOf": [
                    {
                        "$id": "#/vpnGws/items/allOf",
                        "type": "object",
                        "required": [
                            "gatewayName",
                            "sku"
                        ],
                        "properties": {
                            "gatewayName": {
                                "$id": "#/vpnGws/items/allOf/gatewayName",
                                "type": "string",
                                "title": "GatewayName",
                                "description": "Becomes part of the generated local network gateway, public ip address and virtual network gateway names."
                            },
                            "service": {
                                "$id": "#/vpnGws/items/allOf/service",
                                "type": ["object", "null"],
                                "title": "Service",
                                "description": "Contains dependency and publish details for service location.",
                                "properties": {
                                    "dependencies": {
                                        "$id": "#/vpnGws/items/allOf/service/dependencies",
                                        "type": ["object", "null"],
                                        "title": "Dependencies",
                                        "description": "Contains dependency details for service location.",
                                        "properties": {
                                            "keyVault": {
                                                "$id": "#/vpnGws/items/allOf/service/dependencies/keyVault",
                                                "type": ["string", "null"],
                                                "title": "KeyVault",
                                                "description": "Local overriding dependency value to fetch existing resource type."
                                            },
                                            "vnet": {
                                                "$id": "#/vpnGws/items/allOf/service/dependencies/vnet",
                                                "type": ["string", "null"],
                                                "title": "Vnet",
                                                "description": "Local overriding dependency value to fetch existing resource type."
                                            }
                                        },
                                        "additionalProperties": false
                                    },
                                    "publish": {
                                        "$id": "#/vpnGws/items/allOf/service/publish",
                                        "type": ["object", "null"],
                                        "title": "Publish",
                                        "description": "Contains publish details for service location.",
                                        "properties": {
                                            "publicIp": {
                                                "$id": "#/vpnGws/items/allOf/service/publish/publicIp",
                                                "type": ["string", "null"],
                                                "title": "PublicIp",
                                                "description": "Local overriding value to publish on deployed existing resource type."
                                            },
                                            "virtualNetworkGateway": {
                                                "$id": "#/vpnGws/items/allOf/service/publish/virtualNetworkGateway",
                                                "type": ["string", "null"],
                                                "title": "VirtualNetworkGateway",
                                                "description": "Local overriding value to publish on deployed existing resource type."
                                            },
                                            "localNetworkGateway": {
                                                "$id": "#/vpnGws/items/allOf/service/publish/localNetworkGateway",
                                                "type": ["string", "null"],
                                                "title": "LocalNetworkGateway",
                                                "description": "Local overriding value to publish on deployed existing resource type."
                                            }
                                        },
                                        "additionalProperties": false
                                    }
                                },
                                "additionalProperties": false
                            },
                            "sku": {
                                "$id": "#/vpnGws/items/allOf/sku",
                                "type": "string",
                                "title": "Sku",
                                "description": "Sku name and tier."
                            },
                            "gatewaySubnetPrefix": {
                                "$id": "#/vpnGws/items/allOf/gatewaySubnetPrefix",
                                "type": ["string", "null"],
                                "title": "GatewaySubnetPrefix",
                                "description": "Gateway subnet address prefix."
                            },
                            "p2s": {
                                "$id": "#/vpnGws/items/allOf/p2s",
                                "type": ["object", "null"],
                                "title": "P2s",
                                "description": "Contains P2s Configuration.",
                                "default": {
                                    "vpnAddressPool": "",
                                    "rootCertificateName": ""
                                },
                                "properties": {
                                    "vpnAddressPool": {
                                        "$id": "#/vpnGws/items/allOf/p2s/vpnAddressPool",
                                        "type": ["string", "null"],
                                        "title": "VpnAddressPool",
                                        "description": "The vpn ip address pool.",
                                        "default": ""
                                    },
                                    "rootCertificateName": {
                                        "$id": "#/vpnGws/items/allOf/p2s/rootCertificateName",
                                        "type": ["string", "null"],
                                        "title": "RootCertificateName",
                                        "description": "Secret name of root certificate in an existing key vault.",
                                        "default": ""
                                    }
                                },
                                "additionalProperties": false
                            },
                            "s2s": {
                                "$id": "#/vpnGws/items/allOf/s2s",
                                "type": ["object", "null"],
                                "title": "S2s",
                                "description": "Contains S2s Configuration.",
                                "default": {
                                    "localGatewayName":"none",
                                    "cidrBlocks": []
                                },
                                "properties": {
                                    "keyVaultSecret": {
                                        "$id": "#/vpnGws/items/allOf/s2s/keyvaultSecret",
                                        "type": ["string", "null"],
                                        "title": "KeyvaultSecret",
                                        "description": "Name of secret to fetch from an existing key vault."
                                    },
                                    "clientSitePublicIP": {
                                        "$id": "#/vpnGws/items/allOf/s2s/clientSitePublicIP",
                                        "type": ["string", "null"],
                                        "title": "ClientSitePublicIP",
                                        "description": "Client site Public ip address.",
                                        "format": "ipv4",
                                        "default": ""
                                    },
                                    "sharedKey": {
                                        "$id": "#/vpnGws/items/allOf/s2s/sharedKey",
                                        "type": "string",
                                        "title": "SharedKey",
                                        "description": "key vault secret containing the shared key."
 
                                    },
                                    "cidrBlocks": {
                                        "$id": "#/vpnGws/items/allOf/s2s/cidrBlocks",
                                        "type": ["array", "null"],
                                        "title": "CidrBlocks",
                                        "description": "Cidr blocks allowed over vpn.",
                                        "items": {
                                            "$id": "#/vpnGws/items/allOf/s2s/cidrBlocks/items",
                                            "allOf": [
                                                {
                                                    "$id": "#/vpnGws/items/allOf/s2s/cidrBlocks/items/allOf",
                                                    "type": "string",
                                                    "description": "List of allowed cidr ranges."
                                                }
                                            ]
                                        }
                                    }
                                },
                                "additionalProperties": false
                            }
                        },
                        "additionalProperties": false
                    }
                ]
            }
        }
    },
    "additionalProperties": false
}