{
  "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/loadBalancer.json",
        "version": "2.0"
      }
    ],
    "x-preferred": false,
    "x-providerName": "azure.com",
    "x-serviceName": "network-loadBalancer",
    "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/loadBalancers": {
      "get": {
        "description": "Gets all the load balancers in a subscription.",
        "operationId": "LoadBalancers_ListAll",
        "parameters": [
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Request successful. The operation returns a list of LoadBalancer resources.",
            "schema": {
              "$ref": "#/definitions/LoadBalancerListResult"
            }
          }
        },
        "tags": [
          "LoadBalancers"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers": {
      "get": {
        "description": "Gets all the load balancers in a resource group.",
        "operationId": "LoadBalancers_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": "Request successful. The operation returns a list of LoadBalancer resources.",
            "schema": {
              "$ref": "#/definitions/LoadBalancerListResult"
            }
          }
        },
        "tags": [
          "LoadBalancers"
        ],
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}": {
      "delete": {
        "description": "Deletes the specified load balancer.",
        "operationId": "LoadBalancers_Delete",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the load balancer.",
            "in": "path",
            "name": "loadBalancerName",
            "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 does not exist."
          }
        },
        "tags": [
          "LoadBalancers"
        ],
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Gets the specified load balancer.",
        "operationId": "LoadBalancers_Get",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the load balancer.",
            "in": "path",
            "name": "loadBalancerName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "description": "Expands referenced resources.",
            "in": "query",
            "name": "$expand",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request successful. The operation returns the resulting LoadBalancer resource.",
            "schema": {
              "$ref": "#/definitions/LoadBalancer"
            }
          }
        },
        "tags": [
          "LoadBalancers"
        ]
      },
      "put": {
        "description": "Creates or updates a load balancer.",
        "operationId": "LoadBalancers_CreateOrUpdate",
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The name of the load balancer.",
            "in": "path",
            "name": "loadBalancerName",
            "required": true,
            "type": "string"
          },
          {
            "description": "Parameters supplied to the create or update load balancer operation.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LoadBalancer"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Update successful. The operation returns the resulting LoadBalancer resource.",
            "schema": {
              "$ref": "#/definitions/LoadBalancer"
            }
          },
          "201": {
            "description": "Create successful. The operation returns the resulting LoadBalancer resource.",
            "schema": {
              "$ref": "#/definitions/LoadBalancer"
            }
          }
        },
        "tags": [
          "LoadBalancers"
        ],
        "x-ms-long-running-operation": true
      }
    }
  },
  "definitions": {
    "BackendAddressPool": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "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": {
          "$ref": "#/definitions/BackendAddressPoolPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "BackendAddressPoolPropertiesFormat": {
      "description": "Properties of the backend address pool.",
      "properties": {
        "backendIPConfigurations": {
          "description": "Gets collection of references to IP addresses defined in network interfaces.",
          "items": {
            "$ref": "./networkInterface.json#/definitions/NetworkInterfaceIPConfiguration"
          },
          "type": "array"
        },
        "loadBalancingRules": {
          "description": "Gets load balancing rules that use this backend address pool.",
          "items": {
            "description": "Azure resource manager sub resource properties.",
            "properties": {
              "id": {
                "description": "Resource Identifier.",
                "type": "string"
              }
            },
            "x-ms-azure-resource": true
          },
          "readOnly": true,
          "type": "array"
        },
        "outboundNatRule": {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        },
        "provisioningState": {
          "description": "Get provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      }
    },
    "FrontendIPConfiguration": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "description": "Frontend IP address of the load balancer.",
      "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": {
          "$ref": "#/definitions/FrontendIPConfigurationPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "FrontendIPConfigurationPropertiesFormat": {
      "description": "Properties of Frontend IP Configuration of the load balancer.",
      "properties": {
        "inboundNatPools": {
          "description": "Read only. Inbound pools URIs that use this frontend IP.",
          "items": {
            "description": "Azure resource manager sub resource properties.",
            "properties": {
              "id": {
                "description": "Resource Identifier.",
                "type": "string"
              }
            },
            "x-ms-azure-resource": true
          },
          "type": "array"
        },
        "inboundNatRules": {
          "description": "Read only. Inbound rules URIs that use this frontend IP.",
          "items": {
            "description": "Azure resource manager sub resource properties.",
            "properties": {
              "id": {
                "description": "Resource Identifier.",
                "type": "string"
              }
            },
            "x-ms-azure-resource": true
          },
          "type": "array"
        },
        "loadBalancingRules": {
          "description": "Gets load balancing rules URIs that use this frontend IP.",
          "items": {
            "description": "Azure resource manager sub resource properties.",
            "properties": {
              "id": {
                "description": "Resource Identifier.",
                "type": "string"
              }
            },
            "x-ms-azure-resource": true
          },
          "type": "array"
        },
        "outboundNatRules": {
          "description": "Read only. Outbound rules URIs that use this frontend IP.",
          "items": {
            "description": "Azure resource manager sub resource properties.",
            "properties": {
              "id": {
                "description": "Resource Identifier.",
                "type": "string"
              }
            },
            "x-ms-azure-resource": true
          },
          "type": "array"
        },
        "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": {
          "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": {
              "$ref": "#/definitions/PublicIPAddressPropertiesFormat",
              "x-ms-client-flatten": true
            }
          }
        },
        "subnet": {
          "allOf": [
            {
              "description": "Azure resource manager sub resource properties.",
              "properties": {
                "id": {
                  "description": "Resource Identifier.",
                  "type": "string"
                }
              },
              "x-ms-azure-resource": true
            }
          ],
          "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": {
              "$ref": "#/definitions/SubnetPropertiesFormat",
              "x-ms-client-flatten": true
            }
          }
        }
      }
    },
    "InboundNatPool": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "description": "Inbound NAT pool of the load balancer.",
      "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": {
          "$ref": "#/definitions/InboundNatPoolPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "InboundNatPoolPropertiesFormat": {
      "description": "Properties of Inbound NAT pool.",
      "properties": {
        "backendPort": {
          "description": "The port used for internal connections on the endpoint. Acceptable values are between 1 and 65535.",
          "format": "int32",
          "type": "integer"
        },
        "frontendIPConfiguration": {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        },
        "frontendPortRangeEnd": {
          "description": "The last port number in the range of external ports that will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range between 1 and 65535.",
          "format": "int32",
          "type": "integer"
        },
        "frontendPortRangeStart": {
          "description": "The first port number in the range of external ports that will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range between 1 and 65534.",
          "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 PublicIP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      },
      "required": [
        "protocol",
        "frontendPortRangeStart",
        "frontendPortRangeEnd",
        "backendPort"
      ]
    },
    "InboundNatRule": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "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": {
          "$ref": "#/definitions/InboundNatRulePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "InboundNatRulePropertiesFormat": {
      "description": "Properties of the inbound NAT rule.",
      "properties": {
        "backendIPConfiguration": {
          "$ref": "./networkInterface.json#/definitions/NetworkInterfaceIPConfiguration",
          "description": "A reference to a private IP address defined on a network interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations is forwarded to the backed IP."
        },
        "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": {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        },
        "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"
        }
      }
    },
    "LoadBalancer": {
      "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": "LoadBalancer resource",
      "properties": {
        "etag": {
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/LoadBalancerPropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "LoadBalancerListResult": {
      "description": "Response for ListLoadBalancers API service call.",
      "properties": {
        "nextLink": {
          "description": "The URL to get the next set of results.",
          "type": "string"
        },
        "value": {
          "description": "A list of load balancers in a resource group.",
          "items": {
            "$ref": "#/definitions/LoadBalancer"
          },
          "type": "array"
        }
      }
    },
    "LoadBalancerPropertiesFormat": {
      "description": "Properties of the load balancer.",
      "properties": {
        "backendAddressPools": {
          "description": "Collection of backend address pools used by a load balancer",
          "items": {
            "$ref": "#/definitions/BackendAddressPool"
          },
          "type": "array"
        },
        "frontendIPConfigurations": {
          "description": "Object representing the frontend IPs to be used for the load balancer",
          "items": {
            "$ref": "#/definitions/FrontendIPConfiguration"
          },
          "type": "array"
        },
        "inboundNatPools": {
          "description": "Defines an external port range for inbound NAT to a single backend port on NICs associated with a load balancer. Inbound NAT rules are created automatically for each NIC associated with the Load Balancer using an external port from this range. Defining an Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an inbound NAT pool. They have to reference individual inbound NAT rules.",
          "items": {
            "$ref": "#/definitions/InboundNatPool"
          },
          "type": "array"
        },
        "inboundNatRules": {
          "description": "Collection of inbound NAT Rules used by a load balancer. Defining inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an Inbound NAT pool. They have to reference individual inbound NAT rules.",
          "items": {
            "$ref": "#/definitions/InboundNatRule"
          },
          "type": "array"
        },
        "loadBalancingRules": {
          "description": "Object collection representing the load balancing rules Gets the provisioning ",
          "items": {
            "$ref": "#/definitions/LoadBalancingRule"
          },
          "type": "array"
        },
        "outboundNatRules": {
          "description": "The outbound NAT rules.",
          "items": {
            "$ref": "#/definitions/OutboundNatRule"
          },
          "type": "array"
        },
        "probes": {
          "description": "Collection of probe objects used in the load balancer",
          "items": {
            "$ref": "#/definitions/Probe"
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "Gets the provisioning state of the PublicIP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "resourceGuid": {
          "description": "The resource GUID property of the load balancer resource.",
          "type": "string"
        }
      }
    },
    "LoadBalancingRule": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "description": "A load balancing rule for a load balancer.",
      "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": {
          "$ref": "#/definitions/LoadBalancingRulePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "LoadBalancingRulePropertiesFormat": {
      "description": "Properties of the load balancer.",
      "properties": {
        "backendAddressPool": {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        },
        "backendPort": {
          "description": "The port used for internal connections on the endpoint. Acceptable values are between 1 and 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": {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        },
        "frontendPort": {
          "description": "The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values are between 1 and 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"
        },
        "loadDistribution": {
          "description": "The load distribution policy for this rule. Possible values are 'Default', 'SourceIP', and 'SourceIPProtocol'.",
          "enum": [
            "Default",
            "SourceIP",
            "SourceIPProtocol"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "LoadDistribution"
          }
        },
        "probe": {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        },
        "protocol": {
          "description": "The transport protocol for the external 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 PublicIP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      },
      "required": [
        "protocol",
        "frontendPort"
      ]
    },
    "OutboundNatRule": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "description": "Outbound NAT pool of the load balancer.",
      "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": {
          "$ref": "#/definitions/OutboundNatRulePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "OutboundNatRulePropertiesFormat": {
      "description": "Outbound NAT pool of the load balancer.",
      "properties": {
        "allocatedOutboundPorts": {
          "description": "The number of outbound ports to be used for NAT.",
          "format": "int32",
          "type": "integer"
        },
        "backendAddressPool": {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        },
        "frontendIPConfigurations": {
          "description": "The Frontend IP addresses of the load balancer.",
          "items": {
            "description": "Azure resource manager sub resource properties.",
            "properties": {
              "id": {
                "description": "Resource Identifier.",
                "type": "string"
              }
            },
            "x-ms-azure-resource": true
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "Gets the provisioning state of the PublicIP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        }
      },
      "required": [
        "backendAddressPool"
      ]
    },
    "Probe": {
      "allOf": [
        {
          "description": "Azure resource manager sub resource properties.",
          "properties": {
            "id": {
              "description": "Resource Identifier.",
              "type": "string"
            }
          },
          "x-ms-azure-resource": true
        }
      ],
      "description": "A load balancer probe.",
      "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": {
          "$ref": "#/definitions/ProbePropertiesFormat",
          "x-ms-client-flatten": true
        }
      }
    },
    "ProbePropertiesFormat": {
      "properties": {
        "intervalInSeconds": {
          "description": "The interval, in seconds, for how frequently to probe the endpoint for health status. Typically, the interval is slightly less than half the allocated timeout period (in seconds) which allows two full probes before taking the instance out of rotation. The default value is 15, the minimum value is 5.",
          "format": "int32",
          "type": "integer"
        },
        "loadBalancingRules": {
          "description": "The load balancer rules that use this probe.",
          "items": {
            "description": "Azure resource manager sub resource properties.",
            "properties": {
              "id": {
                "description": "Resource Identifier.",
                "type": "string"
              }
            },
            "x-ms-azure-resource": true
          },
          "type": "array"
        },
        "numberOfProbes": {
          "description": "The number of probes where if no response, will result in stopping further traffic from being delivered to the endpoint. This values allows endpoints to be taken out of rotation faster or slower than the typical times used in Azure.",
          "format": "int32",
          "type": "integer"
        },
        "port": {
          "description": "The port for communicating the probe. Possible values range from 1 to 65535, inclusive.",
          "format": "int32",
          "type": "integer"
        },
        "protocol": {
          "description": "The protocol of the end point. Possible values are: 'Http' or 'Tcp'. If 'Tcp' is specified, a received ACK is required for the probe to be successful. If 'Http' is specified, a 200 OK response from the specifies URI is required for the probe to be successful.",
          "enum": [
            "Http",
            "Tcp"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ProbeProtocol"
          }
        },
        "provisioningState": {
          "description": "Gets the provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.",
          "type": "string"
        },
        "requestPath": {
          "description": "The URI used for requesting health status from the VM. Path is required if a protocol is set to http. Otherwise, it is not allowed. There is no default value.",
          "type": "string"
        }
      },
      "required": [
        "protocol",
        "port"
      ]
    },
    "PublicIPAddressPropertiesFormat": {},
    "SubnetPropertiesFormat": {}
  }
}