{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "management.azure.com",
  "info": {
    "description": "The Microsoft Azure Network management API provides a RESTful set of web services that interact with Microsoft Azure Networks service to manage your network resources. The API has entities that capture the relationship between an end user and the Microsoft Azure Networks service.",
    "title": "NetworkManagementClient",
    "version": "2015-06-15",
    "x-apisguru-categories": [
      "cloud"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/network/resource-manager/Microsoft.Network/stable/2015-06-15/applicationGateway.json",
        "version": "2.0"
      },
      {
        "format": "swagger",
        "url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/network/resource-manager/Microsoft.Network/stable/2015-06-15/applicationGateway.json",
        "version": "2.0"
      }
    ],
    "x-preferred": false,
    "x-providerName": "azure.com",
    "x-serviceName": "network-applicationGateway",
    "x-tags": [
      "Azure",
      "Microsoft"
    ]
  },
  "consumes": [
    "application/json",
    "text/json"
  ],
  "produces": [
    "application/json",
    "text/json"
  ],
  "securityDefinitions": {
    "azure_auth": {
      "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
      "description": "Azure Active Directory OAuth2 Flow",
      "flow": "implicit",
      "scopes": {
        "user_impersonation": "impersonate your user account"
      },
      "type": "oauth2"
    }
  },
  "security": [
    {
      "azure_auth": [
        "user_impersonation"
      ]
    }
  ],
  "parameters": {
    "ApiVersionParameter": {
      "description": "Client API version.",
      "in": "query",
      "name": "api-version",
      "required": true,
      "type": "string"
    },
    "SubscriptionIdParameter": {
      "description": "The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.",
      "in": "path",
      "name": "subscriptionId",
      "required": true,
      "type": "string"
    }
  },
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways": {
      "get": {
        "description": "Gets all the application gateways in a subscription.",
        "operationId": "ApplicationGateways_ListAll",
        "parameters": [
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The operation returns a list of ApplicationGateway resources.",
            "schema": {
              "$ref": "#/definitions/ApplicationGatewayListResult"
            }
          }
        },
        "tags": [
          "ApplicationGateways"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways": {
      "get": {
        "description": "Lists all application gateways in a resource group.",
        "operationId": "ApplicationGateways_List",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The operation returns a list of ApplicationGateway resources.",
            "schema": {
              "$ref": "#/definitions/ApplicationGatewayListResult"
            }
          }
        },
        "tags": [
          "ApplicationGateways"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}": {
      "delete": {
        "description": "Deletes the specified application gateway.",
        "operationId": "ApplicationGateways_Delete",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the application gateway.",
            "in": "path",
            "name": "applicationGatewayName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Delete successful."
          },
          "202": {
            "description": "Accepted and the operation will complete asynchronously."
          },
          "204": {
            "description": "Request successful. Resource with the specified name does not exist"
          }
        },
        "tags": [
          "ApplicationGateways"
        ],
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Gets the specified application gateway.",
        "operationId": "ApplicationGateways_Get",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the application gateway.",
            "in": "path",
            "name": "applicationGatewayName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Request successful. The operation returns an ApplicationGateway resource.",
            "schema": {
              "$ref": "#/definitions/ApplicationGateway"
            }
          }
        },
        "tags": [
          "ApplicationGateways"
        ]
      },
      "put": {
        "description": "Creates or updates the specified application gateway.",
        "operationId": "ApplicationGateways_CreateOrUpdate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the application gateway.",
            "in": "path",
            "name": "applicationGatewayName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Parameters supplied to the create or update application gateway operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApplicationGateway"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Update successful. The operation returns the resulting ApplicationGateway resource.",
            "schema": {
              "$ref": "#/definitions/ApplicationGateway"
            }
          },
          "201": {
            "description": "Create successful. The operation returns the resulting ApplicationGateway resource.",
            "schema": {
              "$ref": "#/definitions/ApplicationGateway"
            }
          }
        },
        "tags": [
          "ApplicationGateways"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start": {
      "post": {
        "description": "Starts the specified application gateway.",
        "operationId": "ApplicationGateways_Start",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the application gateway.",
            "in": "path",
            "name": "applicationGatewayName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Request successful. The operation starts the ApplicationGateway resource."
          },
          "202": {
            "description": "Accepted and the operation will complete asynchronously."
          }
        },
        "tags": [
          "ApplicationGateways"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop": {
      "post": {
        "description": "Stops the specified application gateway in a resource group.",
        "operationId": "ApplicationGateways_Stop",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the application gateway.",
            "in": "path",
            "name": "applicationGatewayName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Request successful. The operation stops the ApplicationGateway resource."
          },
          "202": {
            "description": "Accepted and the operation will complete asynchronously."
          }
        },
        "tags": [
          "ApplicationGateways"
        ],
        "x-ms-long-running-operation": true
      }
    }
  },
  "definitions": {
    "ApplicationGateway": {
      "allOf": [
        {
          "description": "Azure resource manager resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            },
            "location": {
              "description": "Resource location.",
              "type": "string"
            },
            "name": {
              "description": "Resource name.",
              "readOnly": true,
              "type": "string"
            },
            "tags": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Resource tags.",
              "type": "object"
            },
            "type": {
              "description": "Resource type.",
              "readOnly": true,
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "description": "Application gateway resource",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayBackendAddress": {
      "description": "Backend address of an application gateway.",
      "properties": {
        "fqdn": {
          "description": "Fully qualified domain name (FQDN).",
          "type": "string"
        },
        "ipAddress": {
          "description": "IP address",
          "type": "string"
        }
      }
    },
    "ApplicationGatewayBackendAddressPool": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "Backend Address Pool of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayBackendAddressPoolPropertiesFormat": {
      "description": "Properties of Backend Address Pool of an application gateway.",
      "properties": {
        "backendAddresses": {
          "description": "Backend addresses",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayBackendAddress"
          },
          "type": "array"
        },
        "backendIPConfigurations": {
          "description": "Collection of references to IPs defined in network interfaces.",
          "items": {
            "allOf": [
              {
                "description": "Azure resource manager sub resource properties.",
                "properties": {
                  "id": {
                    "description": "Resource Identifier.",
                    "type": "string"
                  }
                },
                "x-ms-azure-resource": true
              }
            ],
            "description": "IPConfiguration in a network interface.",
            "properties": {
              "etag": {
                "description": "A unique read-only string that changes whenever the resource is updated.",
                "type": "string"
              },
              "name": {
                "description": "The name of the resource that is unique within a resource group. This name can be used to access the resource.",
                "type": "string"
              },
              "properties": {
                "description": "Properties of IP configuration.",
                "properties": {
                  "loadBalancerBackendAddressPools": {
                    "description": "The reference of LoadBalancerBackendAddressPool resource.",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                        }
                      ],
                      "description": "Pool of backend IP addresses.",
                      "properties": {
                        "etag": {
                          "description": "A unique read-only string that changes whenever the resource is updated.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Gets name of the resource that is unique within a resource group. This name can be used to access the resource.",
                          "type": "string"
                        },
                        "properties": {
                          "description": "Properties of the backend address pool.",
                          "properties": {
                            "backendIPConfigurations": {
                              "description": "Gets collection of references to IP addresses defined in network interfaces.",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                                  }
                                ],
                                "description": "IPConfiguration in a network interface.",
                                "properties": {
                                  "etag": {
                                    "description": "A unique read-only string that changes whenever the resource is updated.",
                                    "type": "string"
                                  },
                                  "name": {
                                    "description": "The name of the resource that is unique within a resource group. This name can be used to access the resource.",
                                    "type": "string"
                                  },
                                  "properties": {
                                    "description": "Properties of IP configuration.",
                                    "properties": {
                                      "loadBalancerBackendAddressPools": {
                                        "description": "The reference of LoadBalancerBackendAddressPool resource.",
                                        "items": {
                                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/loadBalancerBackendAddressPools/items"
                                        },
                                        "type": "array"
                                      },
                                      "loadBalancerInboundNatRules": {
                                        "description": "A list of references of LoadBalancerInboundNatRules.",
                                        "items": {
                                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/loadBalancerInboundNatRules/items"
                                        },
                                        "type": "array"
                                      },
                                      "primary": {
                                        "description": "Gets whether this is a primary customer address on the network interface.",
                                        "type": "boolean"
                                      },
                                      "privateIPAddress": {
                                        "type": "string"
                                      },
                                      "privateIPAllocationMethod": {
                                        "description": "Defines how a private IP address is assigned. Possible values are: 'Static' and 'Dynamic'.",
                                        "enum": [
                                          "Static",
                                          "Dynamic"
                                        ],
                                        "type": "string",
                                        "x-ms-enum": {
                                          "modelAsString": true,
                                          "name": "IPAllocationMethod"
                                        }
                                      },
                                      "provisioningState": {
                                        "type": "string"
                                      },
                                      "publicIPAddress": {
                                        "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/publicIPAddress"
                                      },
                                      "subnet": {
                                        "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet"
                                      }
                                    }
                                  }
                                }
                              },
                              "type": "array"
                            },
                            "loadBalancingRules": {
                              "description": "Gets load balancing rules that use this backend address pool.",
                              "items": {
                                "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                              },
                              "readOnly": true,
                              "type": "array"
                            },
                            "outboundNatRule": {
                              "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0",
                              "description": "Gets outbound rules that use this backend address pool."
                            },
                            "provisioningState": {
                              "description": "Get provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "type": "array"
                  },
                  "loadBalancerInboundNatRules": {
                    "description": "A list of references of LoadBalancerInboundNatRules.",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                        }
                      ],
                      "description": "Inbound NAT rule of the load balancer.",
                      "properties": {
                        "etag": {
                          "description": "A unique read-only string that changes whenever the resource is updated.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Gets name of the resource that is unique within a resource group. This name can be used to access the resource.",
                          "type": "string"
                        },
                        "properties": {
                          "description": "Properties of the inbound NAT rule.",
                          "properties": {
                            "backendIPConfiguration": {
                              "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/loadBalancerBackendAddressPools/items/properties/properties/properties/backendIPConfigurations/items"
                            },
                            "backendPort": {
                              "description": "The port used for the internal endpoint. Acceptable values range from 1 to 65535.",
                              "format": "int32",
                              "type": "integer"
                            },
                            "enableFloatingIP": {
                              "description": "Configures a virtual machine's endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed after you create the endpoint.",
                              "type": "boolean"
                            },
                            "frontendIPConfiguration": {
                              "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0",
                              "description": "A reference to frontend IP addresses."
                            },
                            "frontendPort": {
                              "description": "The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values range from 1 to 65534.",
                              "format": "int32",
                              "type": "integer"
                            },
                            "idleTimeoutInMinutes": {
                              "description": "The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the protocol is set to TCP.",
                              "format": "int32",
                              "type": "integer"
                            },
                            "protocol": {
                              "description": "The transport protocol for the endpoint. Possible values are: 'Udp' or 'Tcp'",
                              "enum": [
                                "Udp",
                                "Tcp"
                              ],
                              "type": "string",
                              "x-ms-enum": {
                                "modelAsString": true,
                                "name": "TransportProtocol"
                              }
                            },
                            "provisioningState": {
                              "description": "Gets the provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "type": "array"
                  },
                  "primary": {
                    "description": "Gets whether this is a primary customer address on the network interface.",
                    "type": "boolean"
                  },
                  "privateIPAddress": {
                    "type": "string"
                  },
                  "privateIPAllocationMethod": {
                    "description": "Defines how a private IP address is assigned. Possible values are: 'Static' and 'Dynamic'.",
                    "enum": [
                      "Static",
                      "Dynamic"
                    ],
                    "type": "string",
                    "x-ms-enum": {
                      "modelAsString": true,
                      "name": "IPAllocationMethod"
                    }
                  },
                  "provisioningState": {
                    "type": "string"
                  },
                  "publicIPAddress": {
                    "allOf": [
                      {
                        "description": "Azure resource manager resource properties.",
                        "properties": {
                          "id": {
                            "description": "Resource Identifier.",
                            "type": "string"
                          },
                          "location": {
                            "description": "Resource location.",
                            "type": "string"
                          },
                          "name": {
                            "description": "Resource name.",
                            "readOnly": true,
                            "type": "string"
                          },
                          "tags": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Resource tags.",
                            "type": "object"
                          },
                          "type": {
                            "description": "Resource type.",
                            "readOnly": true,
                            "type": "string"
                          }
                        },
                        "x-ms-azure-resource": true
                      }
                    ],
                    "description": "Public IP address resource.",
                    "properties": {
                      "etag": {
                        "description": "A unique read-only string that changes whenever the resource is updated.",
                        "type": "string"
                      },
                      "properties": {
                        "description": "Public IP address properties.",
                        "properties": {
                          "dnsSettings": {
                            "description": "Contains FQDN of the DNS record associated with the public IP address",
                            "properties": {
                              "domainNameLabel": {
                                "description": "Gets or sets the Domain name label.The concatenation of the domain name label and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address. If a domain name label is specified, an A DNS record is created for the public IP in the Microsoft Azure DNS system.",
                                "type": "string"
                              },
                              "fqdn": {
                                "description": "Gets the FQDN, Fully qualified domain name of the A DNS record associated with the public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone.",
                                "type": "string"
                              },
                              "reverseFqdn": {
                                "description": "Gets or Sets the Reverse FQDN. A user-visible, fully qualified domain name that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN. ",
                                "type": "string"
                              }
                            }
                          },
                          "idleTimeoutInMinutes": {
                            "description": "The idle timeout of the public IP address.",
                            "format": "int32",
                            "type": "integer"
                          },
                          "ipAddress": {
                            "type": "string"
                          },
                          "ipConfiguration": {
                            "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet/properties/properties/properties/ipConfigurations/items"
                          },
                          "provisioningState": {
                            "description": "The provisioning state of the PublicIP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                            "type": "string"
                          },
                          "publicIPAllocationMethod": {
                            "description": "The public IP allocation method. Possible values are: 'Static' and 'Dynamic'.",
                            "enum": [
                              "Static",
                              "Dynamic"
                            ],
                            "type": "string",
                            "x-ms-enum": {
                              "modelAsString": true,
                              "name": "IPAllocationMethod"
                            }
                          },
                          "resourceGuid": {
                            "description": "The resource GUID property of the public IP resource.",
                            "type": "string"
                          }
                        }
                      }
                    }
                  },
                  "subnet": {
                    "allOf": [
                      {
                        "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                      }
                    ],
                    "description": "Subnet in a virtual network resource.",
                    "properties": {
                      "etag": {
                        "description": "A unique read-only string that changes whenever the resource is updated.",
                        "type": "string"
                      },
                      "name": {
                        "description": "The name of the resource that is unique within a resource group. This name can be used to access the resource.",
                        "type": "string"
                      },
                      "properties": {
                        "properties": {
                          "addressPrefix": {
                            "description": "The address prefix for the subnet.",
                            "type": "string"
                          },
                          "ipConfigurations": {
                            "description": "Gets an array of references to the network interface IP configurations using subnet.",
                            "items": {
                              "allOf": [
                                {
                                  "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                                }
                              ],
                              "description": "IPConfiguration",
                              "properties": {
                                "etag": {
                                  "description": "A unique read-only string that changes whenever the resource is updated.",
                                  "type": "string"
                                },
                                "name": {
                                  "description": "The name of the resource that is unique within a resource group. This name can be used to access the resource.",
                                  "type": "string"
                                },
                                "properties": {
                                  "description": "Properties of IP configuration.",
                                  "properties": {
                                    "privateIPAddress": {
                                      "description": "The private IP address of the IP configuration.",
                                      "type": "string"
                                    },
                                    "privateIPAllocationMethod": {
                                      "description": "The private IP allocation method. Possible values are 'Static' and 'Dynamic'.",
                                      "enum": [
                                        "Static",
                                        "Dynamic"
                                      ],
                                      "type": "string",
                                      "x-ms-enum": {
                                        "modelAsString": true,
                                        "name": "IPAllocationMethod"
                                      }
                                    },
                                    "provisioningState": {
                                      "description": "Gets the provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                                      "type": "string"
                                    },
                                    "publicIPAddress": {
                                      "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/publicIPAddress",
                                      "description": "The reference of the public IP resource."
                                    },
                                    "subnet": {
                                      "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet",
                                      "description": "The reference of the subnet resource."
                                    }
                                  }
                                }
                              }
                            },
                            "type": "array"
                          },
                          "networkSecurityGroup": {
                            "allOf": [
                              {
                                "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/publicIPAddress/allOf/0"
                              }
                            ],
                            "description": "NetworkSecurityGroup resource.",
                            "properties": {
                              "etag": {
                                "description": "A unique read-only string that changes whenever the resource is updated.",
                                "type": "string"
                              },
                              "properties": {
                                "description": "Network Security Group resource.",
                                "properties": {
                                  "defaultSecurityRules": {
                                    "description": "The default security rules of network security group.",
                                    "items": {
                                      "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet/properties/properties/properties/networkSecurityGroup/properties/properties/properties/securityRules/items"
                                    },
                                    "type": "array"
                                  },
                                  "networkInterfaces": {
                                    "description": "A collection of references to network interfaces.",
                                    "items": {
                                      "allOf": [
                                        {
                                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/publicIPAddress/allOf/0"
                                        }
                                      ],
                                      "description": "A network interface in a resource group.",
                                      "properties": {
                                        "etag": {
                                          "description": "A unique read-only string that changes whenever the resource is updated.",
                                          "type": "string"
                                        },
                                        "properties": {
                                          "description": "NetworkInterface properties. ",
                                          "properties": {
                                            "dnsSettings": {
                                              "description": "DNS settings of a network interface.",
                                              "properties": {
                                                "appliedDnsServers": {
                                                  "description": "If the VM that uses this NIC is part of an Availability Set, then this list will have the union of all DNS servers from all NICs that are part of the Availability Set. This property is what is configured on each of those VMs.",
                                                  "items": {
                                                    "type": "string"
                                                  },
                                                  "type": "array"
                                                },
                                                "dnsServers": {
                                                  "description": "List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be the only value in dnsServers collection.",
                                                  "items": {
                                                    "type": "string"
                                                  },
                                                  "type": "array"
                                                },
                                                "internalDnsNameLabel": {
                                                  "description": "Relative DNS name for this NIC used for internal communications between VMs in the same virtual network.",
                                                  "type": "string"
                                                },
                                                "internalFqdn": {
                                                  "description": "Fully qualified DNS name supporting internal communications between VMs in the same virtual network.",
                                                  "type": "string"
                                                }
                                              }
                                            },
                                            "enableIPForwarding": {
                                              "description": "Indicates whether IP forwarding is enabled on this network interface.",
                                              "type": "boolean"
                                            },
                                            "ipConfigurations": {
                                              "description": "A list of IPConfigurations of the network interface.",
                                              "items": {
                                                "allOf": [
                                                  {
                                                    "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                                                  }
                                                ],
                                                "description": "IPConfiguration in a network interface.",
                                                "properties": {
                                                  "etag": {
                                                    "description": "A unique read-only string that changes whenever the resource is updated.",
                                                    "type": "string"
                                                  },
                                                  "name": {
                                                    "description": "The name of the resource that is unique within a resource group. This name can be used to access the resource.",
                                                    "type": "string"
                                                  },
                                                  "properties": {
                                                    "description": "Properties of IP configuration.",
                                                    "properties": {
                                                      "loadBalancerBackendAddressPools": {
                                                        "description": "The reference of LoadBalancerBackendAddressPool resource.",
                                                        "items": {
                                                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/loadBalancerBackendAddressPools/items"
                                                        },
                                                        "type": "array"
                                                      },
                                                      "loadBalancerInboundNatRules": {
                                                        "description": "A list of references of LoadBalancerInboundNatRules.",
                                                        "items": {
                                                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/loadBalancerInboundNatRules/items"
                                                        },
                                                        "type": "array"
                                                      },
                                                      "primary": {
                                                        "description": "Gets whether this is a primary customer address on the network interface.",
                                                        "type": "boolean"
                                                      },
                                                      "privateIPAddress": {
                                                        "type": "string"
                                                      },
                                                      "privateIPAllocationMethod": {
                                                        "description": "Defines how a private IP address is assigned. Possible values are: 'Static' and 'Dynamic'.",
                                                        "enum": [
                                                          "Static",
                                                          "Dynamic"
                                                        ],
                                                        "type": "string",
                                                        "x-ms-enum": {
                                                          "modelAsString": true,
                                                          "name": "IPAllocationMethod"
                                                        }
                                                      },
                                                      "provisioningState": {
                                                        "type": "string"
                                                      },
                                                      "publicIPAddress": {
                                                        "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/publicIPAddress"
                                                      },
                                                      "subnet": {
                                                        "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet"
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "type": "array"
                                            },
                                            "macAddress": {
                                              "description": "The MAC address of the network interface.",
                                              "type": "string"
                                            },
                                            "networkSecurityGroup": {
                                              "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet/properties/properties/properties/networkSecurityGroup",
                                              "description": "The reference of the NetworkSecurityGroup resource."
                                            },
                                            "primary": {
                                              "description": "Gets whether this is a primary network interface on a virtual machine.",
                                              "type": "boolean"
                                            },
                                            "provisioningState": {
                                              "description": "The provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                                              "type": "string"
                                            },
                                            "resourceGuid": {
                                              "description": "The resource GUID property of the network interface resource.",
                                              "type": "string"
                                            },
                                            "virtualMachine": {
                                              "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0",
                                              "description": "The reference of a virtual machine."
                                            }
                                          }
                                        }
                                      }
                                    },
                                    "type": "array"
                                  },
                                  "provisioningState": {
                                    "description": "The provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                                    "type": "string"
                                  },
                                  "resourceGuid": {
                                    "description": "The resource GUID property of the network security group resource.",
                                    "type": "string"
                                  },
                                  "securityRules": {
                                    "description": "A collection of security rules of the network security group.",
                                    "items": {
                                      "allOf": [
                                        {
                                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                                        }
                                      ],
                                      "description": "Network security rule.",
                                      "properties": {
                                        "etag": {
                                          "description": "A unique read-only string that changes whenever the resource is updated.",
                                          "type": "string"
                                        },
                                        "name": {
                                          "description": "The name of the resource that is unique within a resource group. This name can be used to access the resource.",
                                          "type": "string"
                                        },
                                        "properties": {
                                          "properties": {
                                            "access": {
                                              "description": "The network traffic is allowed or denied. Possible values are: 'Allow' and 'Deny'.",
                                              "enum": [
                                                "Allow",
                                                "Deny"
                                              ],
                                              "type": "string",
                                              "x-ms-enum": {
                                                "modelAsString": true,
                                                "name": "SecurityRuleAccess"
                                              }
                                            },
                                            "description": {
                                              "description": "A description for this rule. Restricted to 140 chars.",
                                              "type": "string"
                                            },
                                            "destinationAddressPrefix": {
                                              "description": "The destination address prefix. CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.",
                                              "type": "string"
                                            },
                                            "destinationPortRange": {
                                              "description": "The destination port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.",
                                              "type": "string"
                                            },
                                            "direction": {
                                              "description": "The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'.",
                                              "enum": [
                                                "Inbound",
                                                "Outbound"
                                              ],
                                              "type": "string",
                                              "x-ms-enum": {
                                                "modelAsString": true,
                                                "name": "SecurityRuleDirection"
                                              }
                                            },
                                            "priority": {
                                              "description": "The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule.",
                                              "format": "int32",
                                              "type": "integer"
                                            },
                                            "protocol": {
                                              "description": "Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and '*'.",
                                              "enum": [
                                                "Tcp",
                                                "Udp",
                                                "*"
                                              ],
                                              "type": "string",
                                              "x-ms-enum": {
                                                "modelAsString": true,
                                                "name": "SecurityRuleProtocol"
                                              }
                                            },
                                            "provisioningState": {
                                              "description": "The provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                                              "type": "string"
                                            },
                                            "sourceAddressPrefix": {
                                              "description": "The CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used. If this is an ingress rule, specifies where network traffic originates from. ",
                                              "type": "string"
                                            },
                                            "sourcePortRange": {
                                              "description": "The source port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.",
                                              "type": "string"
                                            }
                                          },
                                          "required": [
                                            "protocol",
                                            "sourceAddressPrefix",
                                            "destinationAddressPrefix",
                                            "access",
                                            "direction"
                                          ]
                                        }
                                      }
                                    },
                                    "type": "array"
                                  },
                                  "subnets": {
                                    "description": "A collection of references to subnets.",
                                    "items": {
                                      "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet"
                                    },
                                    "type": "array"
                                  }
                                }
                              }
                            }
                          },
                          "provisioningState": {
                            "description": "The provisioning state of the resource.",
                            "type": "string"
                          },
                          "routeTable": {
                            "allOf": [
                              {
                                "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/publicIPAddress/allOf/0"
                              }
                            ],
                            "description": "Route table resource.",
                            "properties": {
                              "etag": {
                                "description": "Gets a unique read-only string that changes whenever the resource is updated.",
                                "type": "string"
                              },
                              "properties": {
                                "description": "Route Table resource",
                                "properties": {
                                  "provisioningState": {
                                    "description": "The provisioning state of the resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                                    "type": "string"
                                  },
                                  "routes": {
                                    "description": "Collection of routes contained within a route table.",
                                    "items": {
                                      "allOf": [
                                        {
                                          "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/allOf/0"
                                        }
                                      ],
                                      "description": "Route resource",
                                      "properties": {
                                        "etag": {
                                          "description": "A unique read-only string that changes whenever the resource is updated.",
                                          "type": "string"
                                        },
                                        "name": {
                                          "description": "The name of the resource that is unique within a resource group. This name can be used to access the resource.",
                                          "type": "string"
                                        },
                                        "properties": {
                                          "description": "Route resource",
                                          "properties": {
                                            "addressPrefix": {
                                              "description": "The destination CIDR to which the route applies.",
                                              "type": "string"
                                            },
                                            "nextHopIpAddress": {
                                              "description": "The IP address packets should be forwarded to. Next hop values are only allowed in routes where the next hop type is VirtualAppliance.",
                                              "type": "string"
                                            },
                                            "nextHopType": {
                                              "description": "The type of Azure hop the packet should be sent to. Possible values are: 'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'",
                                              "enum": [
                                                "VirtualNetworkGateway",
                                                "VnetLocal",
                                                "Internet",
                                                "VirtualAppliance",
                                                "None"
                                              ],
                                              "type": "string",
                                              "x-ms-enum": {
                                                "modelAsString": true,
                                                "name": "RouteNextHopType"
                                              }
                                            },
                                            "provisioningState": {
                                              "description": "The provisioning state of the resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
                                              "type": "string"
                                            }
                                          },
                                          "required": [
                                            "nextHopType"
                                          ]
                                        }
                                      }
                                    },
                                    "type": "array"
                                  },
                                  "subnets": {
                                    "description": "A collection of references to subnets.",
                                    "items": {
                                      "$ref": "#/definitions/ApplicationGatewayBackendAddressPoolPropertiesFormat/properties/backendIPConfigurations/items/properties/properties/properties/subnet"
                                    },
                                    "type": "array"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "Provisioning state of the backend address pool resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      }
    },
    "ApplicationGatewayBackendHttpSettings": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "Backend address pool settings of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayBackendHttpSettingsPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayBackendHttpSettingsPropertiesFormat": {
      "description": "Properties of Backend address pool settings of an application gateway.",
      "properties": {
        "cookieBasedAffinity": {
          "description": "Cookie based affinity. Possible values are: 'Enabled' and 'Disabled'.",
          "enum": [
            "Enabled",
            "Disabled"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewayCookieBasedAffinity"
          }
        },
        "port": {
          "description": "Port",
          "format": "int32",
          "type": "integer"
        },
        "probe": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "protocol": {
          "description": "Protocol. Possible values are: 'Http' and 'Https'.",
          "enum": [
            "Http",
            "Https"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewayProtocol"
          }
        },
        "provisioningState": {
          "description": "Gets or sets Provisioning state of the backend http settings resource Updating/Deleting/Failed",
          "type": "string"
        },
        "requestTimeout": {
          "description": "Request timeout in seconds. Application Gateway will fail the request if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400 seconds.",
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ApplicationGatewayFrontendIPConfiguration": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "Frontend IP configuration of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayFrontendIPConfigurationPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayFrontendIPConfigurationPropertiesFormat": {
      "description": "Properties of Frontend IP configuration of an application gateway.",
      "properties": {
        "privateIPAddress": {
          "description": "PrivateIPAddress of the network interface IP Configuration.",
          "type": "string"
        },
        "privateIPAllocationMethod": {
          "description": "PrivateIP allocation method. Possible values are: 'Static' and 'Dynamic'.",
          "enum": [
            "Static",
            "Dynamic"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "IPAllocationMethod"
          }
        },
        "provisioningState": {
          "description": "Provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "publicIPAddress": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "subnet": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      }
    },
    "ApplicationGatewayFrontendPort": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "Frontend port of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayFrontendPortPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayFrontendPortPropertiesFormat": {
      "description": "Properties of Frontend port of an application gateway.",
      "properties": {
        "port": {
          "description": "Frontend port",
          "format": "int32",
          "type": "integer"
        },
        "provisioningState": {
          "description": "Provisioning state of the frontend port resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      }
    },
    "ApplicationGatewayHttpListener": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "description": "Http listener of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayHttpListenerPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayHttpListenerPropertiesFormat": {
      "description": "Properties of HTTP listener of an application gateway.",
      "properties": {
        "frontendIPConfiguration": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "frontendPort": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "hostName": {
          "description": "Host name of HTTP listener.",
          "type": "string"
        },
        "protocol": {
          "description": "Protocol. Possible values are: 'Http' and 'Https'.",
          "enum": [
            "Http",
            "Https"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewayProtocol"
          }
        },
        "provisioningState": {
          "description": "Provisioning state of the HTTP listener resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "requireServerNameIndication": {
          "description": "Applicable only if protocol is https. Enables SNI for multi-hosting.",
          "type": "boolean"
        },
        "sslCertificate": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      }
    },
    "ApplicationGatewayIPConfiguration": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayIPConfigurationPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayIPConfigurationPropertiesFormat": {
      "description": "Properties of IP configuration of an application gateway.",
      "properties": {
        "provisioningState": {
          "description": "Provisioning state of the application gateway subnet resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "subnet": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      }
    },
    "ApplicationGatewayListResult": {
      "description": "Response for ListApplicationGateways API service call.",
      "properties": {
        "nextLink": {
          "description": "URL to get the next set of results.",
          "type": "string"
        },
        "value": {
          "description": "List of an application gateways in a resource group.",
          "items": {
            "$ref": "#/definitions/ApplicationGateway"
          },
          "type": "array"
        }
      }
    },
    "ApplicationGatewayPathRule": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "Path rule of URL path map of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayPathRulePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayPathRulePropertiesFormat": {
      "description": "Properties of probe of an application gateway.",
      "properties": {
        "backendAddressPool": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "backendHttpSettings": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "paths": {
          "description": "Path rules of URL path map.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "Path rule of URL path map resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      }
    },
    "ApplicationGatewayProbe": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "Probe of the application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayProbePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayProbePropertiesFormat": {
      "description": "Properties of probe of an application gateway.",
      "properties": {
        "host": {
          "description": "Host name to send the probe to.",
          "type": "string"
        },
        "interval": {
          "description": "The probing interval in seconds. This is the time interval between two consecutive probes. Acceptable values are from 1 second to 86400 seconds.",
          "format": "int32",
          "type": "integer"
        },
        "path": {
          "description": "Relative path of probe. Valid path starts from '/'. Probe is sent to <Protocol>://<host>:<port><path>",
          "type": "string"
        },
        "protocol": {
          "description": "Protocol. Possible values are: 'Http' and 'Https'.",
          "enum": [
            "Http",
            "Https"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewayProtocol"
          }
        },
        "provisioningState": {
          "description": "Provisioning state of the backend http settings resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "timeout": {
          "description": "the probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds.",
          "format": "int32",
          "type": "integer"
        },
        "unhealthyThreshold": {
          "description": "The probe retry count. Backend server is marked down after consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second to 20.",
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ApplicationGatewayPropertiesFormat": {
      "description": "Properties of the application gateway.",
      "properties": {
        "backendAddressPools": {
          "description": "Backend address pool of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayBackendAddressPool"
          },
          "type": "array"
        },
        "backendHttpSettingsCollection": {
          "description": "Backend http settings of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayBackendHttpSettings"
          },
          "type": "array"
        },
        "frontendIPConfigurations": {
          "description": "Frontend IP addresses of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayFrontendIPConfiguration"
          },
          "type": "array"
        },
        "frontendPorts": {
          "description": "Frontend ports of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayFrontendPort"
          },
          "type": "array"
        },
        "gatewayIPConfigurations": {
          "description": "Gets or sets subnets of application gateway resource",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayIPConfiguration"
          },
          "type": "array"
        },
        "httpListeners": {
          "description": "Http listeners of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayHttpListener"
          },
          "type": "array"
        },
        "operationalState": {
          "description": "Operational state of the application gateway resource. Possible values are: 'Stopped', 'Started', 'Running', and 'Stopping'.",
          "enum": [
            "Stopped",
            "Starting",
            "Running",
            "Stopping"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewayOperationalState"
          }
        },
        "probes": {
          "description": "Probes of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayProbe"
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "Provisioning state of the application gateway resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "requestRoutingRules": {
          "description": "Request routing rules of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayRequestRoutingRule"
          },
          "type": "array"
        },
        "resourceGuid": {
          "description": "Resource GUID property of the application gateway resource.",
          "type": "string"
        },
        "sku": {
          "$ref": "#/definitions/ApplicationGatewaySku",
          "description": "SKU of the application gateway resource."
        },
        "sslCertificates": {
          "description": "SSL certificates of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewaySslCertificate"
          },
          "type": "array"
        },
        "urlPathMaps": {
          "description": "URL path map of the application gateway resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayUrlPathMap"
          },
          "type": "array"
        }
      }
    },
    "ApplicationGatewayRequestRoutingRule": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "Request routing rule of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayRequestRoutingRulePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayRequestRoutingRulePropertiesFormat": {
      "description": "Properties of request routing rule of the application gateway.",
      "properties": {
        "backendAddressPool": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "backendHttpSettings": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "httpListener": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "provisioningState": {
          "description": "Provisioning state of the request routing rule resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "ruleType": {
          "description": "Rule type. Possible values are: 'Basic' and 'PathBasedRouting'.",
          "enum": [
            "Basic",
            "PathBasedRouting"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewayRequestRoutingRuleType"
          }
        },
        "urlPathMap": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      }
    },
    "ApplicationGatewaySku": {
      "description": "SKU of application gateway",
      "properties": {
        "capacity": {
          "description": "Capacity (instance count) of an application gateway.",
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "description": "Name of an application gateway SKU. Possible values are: 'Standard_Small', 'Standard_Medium', 'Standard_Large', 'WAF_Medium', and 'WAF_Large'.",
          "enum": [
            "Standard_Small",
            "Standard_Medium",
            "Standard_Large"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewaySkuName"
          }
        },
        "tier": {
          "description": "Tier of an application gateway.",
          "enum": [
            "Standard"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ApplicationGatewayTier"
          }
        }
      }
    },
    "ApplicationGatewaySslCertificate": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "SSL certificates of an application gateway.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewaySslCertificatePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewaySslCertificatePropertiesFormat": {
      "description": "Properties of SSL certificates of an application gateway.",
      "properties": {
        "data": {
          "description": "Base-64 encoded pfx certificate. Only applicable in PUT Request.",
          "type": "string"
        },
        "password": {
          "description": "Password for the pfx file specified in data. Only applicable in PUT request.",
          "type": "string"
        },
        "provisioningState": {
          "description": "Provisioning state of the SSL certificate resource Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "publicCertData": {
          "description": "Base-64 encoded Public cert data corresponding to pfx specified in data. Only applicable in GET request.",
          "type": "string"
        }
      }
    },
    "ApplicationGatewayUrlPathMap": {
      "allOf": [
        {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        }
      ],
      "description": "UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource that is unique within a resource group. This name can be used to access the resource.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/ApplicationGatewayUrlPathMapPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ApplicationGatewayUrlPathMapPropertiesFormat": {
      "description": "Properties of UrlPathMap of the application gateway.",
      "properties": {
        "defaultBackendAddressPool": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "defaultBackendHttpSettings": {
          "$ref": "#/definitions/ApplicationGatewayHttpListener/allOf/0"
        },
        "pathRules": {
          "description": "Path rule of URL path map resource.",
          "items": {
            "$ref": "#/definitions/ApplicationGatewayPathRule"
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "Provisioning state of the backend http settings resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      }
    }
  }
}