{
    "id": "http://hindenes.com/files/armschema/schemas/2015-08-01/Microsoft.Network.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Microsoft.Network",
    "description": "Microsoft Network Resource Types",
    "definitions": {
        "dnsSettings": {
            "properties": {
                "domainNameLabel": {
                    "type": "string"
                },
                "dnsServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "domainNameLabel"
            ]
        },
        "publicIPAddresses": {
            "type": "object",
            "properties": {
                "type": {
                    "enum": [
                        "Microsoft.Network/publicIPAddresses"
                    ]
                },
                "apiVersion": {
                    "enum": [
                        "2015-05-01-preview",
                        "2015-06-15"
                    ]
                },
                "properties": {
                    "properties": {
                        "publicIPAllocationMethod": {
                            "type": "string"
                        },
                        "idleTimeoutInMinutes": {
                            "type": "number"
                        },
                        "dnsSettings": {
                            "$ref": "#/definitions/dnsSettings"
                        }
                    },
                    "type": "object",
                    "required": [
                        "publicIPAllocationMethod"
                    ]
                }
            },
            "required": [
                "properties"
            ]
        },
        "id": {
            "properties": {
                "id": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "ipConfiguration": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/ipConfigurationProperties"
                }
            },
            "type": "object",
            "required": [
                "name",
                "properties"
            ]
        },
        "ipConfigurationProperties": {
            "properties": {
                "subnet": {
                    "$ref": "#/definitions/id"
                },
                "privateIPAddress": {
                    "type": "string"
                },
                "privateIPAllocationMethod": {
                    "type": "string"
                },
                "publicIPAddress": {
                    "$ref": "#/definitions/id"
                }
            },
            "type": "object",
            "required": [
                "subnet",
                "privateIPAllocationMethod"
            ]
        },
        "networkInterfaces": {
            "type": "object",
            "properties": {
                "type": {
                    "enum": [
                        "Microsoft.Network/networkInterfaces"
                    ]
                },
                "apiVersion": {
                    "enum": [
                        "2015-05-01-preview",
                        "2015-06-15"
                    ]
                },
                "properties": {
                    "properties": {
                        "networkSecurityGroup": {
                            "$ref": "#/definitions/id"
                        },
                        "ipConfigurations": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/ipConfiguration"
                            }
                        },
                        "dnsSettings": {
                            "$ref": "#/definitions/dnsSettings"
                        }
                    },
                    "type": "object",
                    "required": [
                        "ipConfigurations"
                    ]
                }
            },
            "required": [
                "properties"
            ]
        },
        "addressSpace": {
            "properties": {
                "addressPrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "addressPrefixes"
            ]
        },
        "dhcpOptions": {
            "properties": {
                "dnsServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "dnsServers"
            ]
        },
        "subnetProperties": {
            "properties": {
                "addressPrefix": {
                    "type": "string"
                },
                "networkSecurityGroup": {
                    "$ref": "#/definitions/id"
                },
                "ipConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/id"
                    }
                }
            },
            "type": "object",
            "required": [
                "addressPrefix"
            ]
        },
        "subnet": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/subnetProperties"
                }
            },
            "type": "object",
            "required": [
                "name",
                "properties"
            ]
        },
        "virtualNetworks": {
            "type": "object",
            "properties": {
                "type": {
                    "enum": [
                        "Microsoft.Network/virtualNetworks"
                    ]
                },
                "apiVersion": {
                    "enum": [
                        "2015-05-01-preview",
                        "2015-06-15"
                    ]
                },
                "properties": {
                    "properties": {
                        "addressSpace": {
                            "$ref": "#/definitions/addressSpace"
                        },
                        "dhcpOptions": {
                            "$ref": "#/definitions/dhcpOptions"
                        },
                        "subnets": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/subnet"
                            }
                        }
                    },
                    "type": "object",
                    "required": [
                        "addressSpace",
                        "subnets"
                    ]
                }
            },
            "required": [
                "properties"
            ]
        },
        "frontendIPConfigurationsExternalProperties": {
            "properties": {
                "publicIPAddress": {
                    "$ref": "#/definitions/id"
                }
            },
            "type": "object",
            "required": [
                "publicIPAddress"
            ]
        },
        "frontendIPConfigurationsInternalProperties": {
            "properties": {
                "subnet": {
                    "$ref": "#/definitions/id"
                },
                "privateIPAddress": {
                    "type": "string"
                },
                "privateIPAllocationMethod": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "subnet",
                "privateIPAllocationMethod"
            ]
        },
        "frontendIPConfigurations": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "properties": {
                        "subnet": {
                            "$ref": "#/definitions/id"
                        },
                        "privateIPAddress": {
                            "type": "string"
                        },
                        "privateIPAllocationMethod": {
                            "type": "string"
                        },
                        "publicIPAddress": {
                            "$ref": "#/definitions/id"
                        }
                    },
                    "additionalProperties": false,
                    "type": "object"
                }
            },
            "type": "object"
        },
        "backendIPConfigurationProperties": {
            "properties": {
                "backendIPConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/id"
                    }
                }
            },
            "type": "object",
            "required": [
                "backendIPConfigurations"
            ]
        },
        "backendAddressPools": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/backendIPConfigurationProperties"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "loadBalancingRulesProperties": {
            "properties": {
                "frontendIPConfiguration": {
                    "$ref": "#/definitions/id"
                },
                "backendAddressPool": {
                    "$ref": "#/definitions/id"
                },
                "protocol": {
                    "type": "string"
                },
                "frontendPort": {
                    "type": "number"
                },
                "backendPort": {
                    "type": "number"
                },
                "probe": {
                    "$ref": "#/definitions/id"
                },
                "enableFloatingIP": {
                    "type": "boolean"
                },
                "idleTimeoutInMinutes": {
                    "type": "number"
                },
                "loadDistribution": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "frontendIPConfiguration",
                "backendAddressPool",
                "protocol",
                "frontendPort",
                "backendPort"
            ]
        },
        "loadBalancingRules": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/loadBalancingRulesProperties"
                }
            },
            "type": "object",
            "required": [
                "name",
                "properties"
            ]
        },
        "probeProperties": {
            "properties": {
                "protocol": {
                    "type": "string"
                },
                "port": {
                    "type": "number"
                },
                "requestPath": {
                    "type": "string"
                },
                "intervalInSeconds": {
                    "type": "number"
                },
                "numberOfProbes": {
                    "type": "number"
                }
            },
            "type": "object",
            "required": [
                "protocol",
                "port"
            ]
        },
        "probes": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/probeProperties"
                }
            },
            "type": "object",
            "required": [
                "name",
                "properties"
            ]
        },
        "inboundNatRulesProperties": {
            "properties": {
                "frontendIPConfiguration": {
                    "$ref": "#/definitions/id"
                },
                "backendIPConfiguration": {
                    "$ref": "#/definitions/id"
                },
                "protocol": {
                    "type": "string"
                },
                "frontendPort": {
                    "type": "number"
                },
                "backendPort": {
                    "type": "number"
                }
            },
            "type": "object",
            "required": [
                "frontendIPConfiguration",
                "backendIPConfiguration",
                "protocol",
                "frontendPort",
                "backendPort"
            ]
        },
        "inboundNatRules": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/inboundNatRulesProperties"
                }
            },
            "type": "object",
            "required": [
                "name",
                "properties"
            ]
        },
        "outboundNatRulesProperties": {
            "properties": {
                "frontendIPConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/id"
                    }
                },
                "backendAddressPool": {
                    "$ref": "#/definitions/id"
                }
            },
            "type": "object",
            "required": [
                "frontendIPConfigurations",
                "backendAddressPool"
            ]
        },
        "outboundNatRules": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/outboundNatRulesProperties"
                }
            },
            "type": "object",
            "required": [
                "name",
                "properties"
            ]
        },
        "loadBalancers": {
            "type": "object",
            "properties": {
                "type": {
                    "enum": [
                        "Microsoft.Network/loadBalancers"
                    ]
                },
                "apiVersion": {
                    "enum": [
                        "2015-05-01-preview",
                        "2015-06-15"
                    ]
                },
                "properties": {
                    "properties": {
                        "frontendIPConfigurations": {
                            "$ref": "#/definitions/frontendIPConfigurations"
                        },
                        "backendAddressPools": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/backendAddressPools"
                            }
                        },
                        "loadBalancingRules": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/loadBalancingRules"
                            }
                        },
                        "probes": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/probes"
                            }
                        },
                        "inboundNatRules": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/inboundNatRules"
                            }
                        },
                        "outboundNatRules": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/outboundNatRules"
                            }
                        }
                    },
                    "type": "object"
                }
            },
            "required": [
                "properties"
            ]
        },
        "securityruleProperties": {
            "properties": {
                "description": {
                    "type": "string"
                },
                "protocol": {
                    "type": "string"
                },
                "sourcePortRange": {
                    "type": "string"
                },
                "destinationPortRange": {
                    "type": "string"
                },
                "sourceAddressPrefix": {
                    "type": "string"
                },
                "destinationAddressPrefix": {
                    "type": "string"
                },
                "access": {
                    "type": "string"
                },
                "priority": {
                    "type": "number"
                },
                "direction": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "protocol",
                "sourcePortRange",
                "destinationPortRange",
                "sourceAddressPrefix",
                "destinationAddressPrefix",
                "access",
                "priority",
                "direction"
            ]
        },
        "securityRules": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/securityruleProperties"
                }
            },
            "type": "object",
            "required": [
                "name",
                "properties"
            ]
        },
        "networkSecurityGroups": {
            "type": "object",
            "properties": {
                "type": {
                    "enum": [
                        "Microsoft.Network/networkSecurityGroups"
                    ]
                },
                "apiVersion": {
                    "enum": [
                        "2015-05-01-preview",
                        "2015-06-15"
                    ]
                },
                "properties": {
                    "properties": {
                        "securityRules": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/securityRules"
                            }
                        }
                    },
                    "type": "object",
                    "required": [
                        "securityRules"
                    ]
                }
            },
            "required": [
                "properties"
            ]
        }
    },
    "properties": {
        "dnsSettings": {
            "$ref": "#/definitions/dnsSettings"
        },
        "publicIPAddresses": {
            "$ref": "#/definitions/publicIPAddresses"
        },
        "id": {
            "$ref": "#/definitions/id"
        },
        "ipConfiguration": {
            "$ref": "#/definitions/ipConfiguration"
        },
        "ipConfigurationProperties": {
            "$ref": "#/definitions/ipConfigurationProperties"
        },
        "networkInterfaces": {
            "$ref": "#/definitions/networkInterfaces"
        },
        "addressSpace": {
            "$ref": "#/definitions/addressSpace"
        },
        "dhcpOptions": {
            "$ref": "#/definitions/dhcpOptions"
        },
        "subnetProperties": {
            "$ref": "#/definitions/subnetProperties"
        },
        "subnet": {
            "$ref": "#/definitions/subnet"
        },
        "virtualNetworks": {
            "$ref": "#/definitions/virtualNetworks"
        },
        "frontendIPConfigurationsExternalProperties": {
            "$ref": "#/definitions/frontendIPConfigurationsExternalProperties"
        },
        "frontendIPConfigurationsInternalProperties": {
            "$ref": "#/definitions/frontendIPConfigurationsInternalProperties"
        },
        "frontendIPConfigurations": {
            "$ref": "#/definitions/frontendIPConfigurations"
        },
        "backendIPConfigurationProperties": {
            "$ref": "#/definitions/backendIPConfigurationProperties"
        },
        "backendAddressPools": {
            "$ref": "#/definitions/backendAddressPools"
        },
        "loadBalancingRulesProperties": {
            "$ref": "#/definitions/loadBalancingRulesProperties"
        },
        "loadBalancingRules": {
            "$ref": "#/definitions/loadBalancingRules"
        },
        "probeProperties": {
            "$ref": "#/definitions/probeProperties"
        },
        "probes": {
            "$ref": "#/definitions/probes"
        },
        "inboundNatRulesProperties": {
            "$ref": "#/definitions/inboundNatRulesProperties"
        },
        "inboundNatRules": {
            "$ref": "#/definitions/inboundNatRules"
        },
        "outboundNatRulesProperties": {
            "$ref": "#/definitions/outboundNatRulesProperties"
        },
        "outboundNatRules": {
            "$ref": "#/definitions/outboundNatRules"
        },
        "loadBalancers": {
            "$ref": "#/definitions/loadBalancers"
        },
        "securityruleProperties": {
            "$ref": "#/definitions/securityruleProperties"
        },
        "securityRules": {
            "$ref": "#/definitions/securityRules"
        },
        "networkSecurityGroups": {
            "$ref": "#/definitions/networkSecurityGroups"
        }
    },
    "required": [
        "dnsSettings",
        "publicIPAddresses",
        "id",
        "ipConfiguration",
        "ipConfigurationProperties",
        "networkInterfaces",
        "addressSpace",
        "dhcpOptions",
        "subnetProperties",
        "subnet",
        "virtualNetworks",
        "frontendIPConfigurationsExternalProperties",
        "frontendIPConfigurationsInternalProperties",
        "frontendIPConfigurations",
        "backendIPConfigurationProperties",
        "backendAddressPools",
        "loadBalancingRulesProperties",
        "loadBalancingRules",
        "probeProperties",
        "probes",
        "inboundNatRulesProperties",
        "inboundNatRules",
        "outboundNatRulesProperties",
        "outboundNatRules",
        "loadBalancers",
        "securityruleProperties",
        "securityRules",
        "networkSecurityGroups"
    ]
}