{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-application-gateway/json-schema/microsoft-azure-application-gateway-application-gateway-schema.json",
  "title": "ApplicationGateway",
  "description": "Application gateway resource.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-azure-application-gateway-application-gateways-api-openapi.yml#/components/schemas/ApplicationGateway",
  "type": "object",
  "properties": {
    "properties": {
      "$ref": "#/$defs/ApplicationGatewayPropertiesFormat",
      "description": "Properties of the application gateway.",
      "x-ms-client-flatten": true
    },
    "etag": {
      "type": "string",
      "description": "A unique read-only string that changes whenever the resource is updated.",
      "readOnly": true
    },
    "zones": {
      "type": "array",
      "description": "A list of availability zones denoting where the resource needs to come from.",
      "items": {
        "type": "string"
      }
    },
    "identity": {
      "$ref": "#/$defs/ManagedServiceIdentity",
      "description": "The identity of the application gateway, if configured."
    }
  },
  "allOf": [
    {
      "$ref": "#/$defs/Resource"
    }
  ],
  "$defs": {
    "ApplicationGatewayAdvancedRoutingCondition": {
      "type": "object",
      "description": "A condition evaluated as part of an advanced routing condition set.",
      "properties": {
        "conditionType": {
          "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingConditionType",
          "description": "The type of request property the condition is evaluated against."
        },
        "propertyName": {
          "type": "string",
          "description": "Name of the request property the condition is evaluated against. Required when conditionType is Header or QueryString, and not applicable when conditionType is Path, ClientIP or Method."
        },
        "propertyValues": {
          "type": "array",
          "description": "Values the request property is matched against. Exactly one of propertyValues or propertyValueMatcher must be specified.",
          "items": {
            "type": "string"
          }
        },
        "propertyValueMatcher": {
          "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingPropertyValueMatcher",
          "description": "Pattern the request property is matched against. Exactly one of propertyValues or propertyValueMatcher must be specified. Not applicable when conditionType is ClientIP or Method."
        }
      },
      "required": [
        "conditionType"
      ]
    },
    "ApplicationGatewayAdvancedRoutingConditionSet": {
      "type": "object",
      "description": "Advanced routing condition set of an application gateway. Referenced by advanced routing rules to determine whether a request matches.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingConditionSetPropertiesFormat",
          "description": "Properties of the application gateway advanced routing condition set."
        },
        "name": {
          "type": "string",
          "description": "Name of the advanced routing condition set that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayAdvancedRoutingConditionSetPropertiesFormat": {
      "type": "object",
      "description": "Properties of advanced routing condition set of the application gateway.",
      "properties": {
        "routingConditions": {
          "type": "array",
          "description": "Routing conditions of the condition set. All conditions must be satisfied for the referencing advanced routing rule to match.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingCondition"
          },
          "x-ms-identifiers": []
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the advanced routing condition set resource.",
          "readOnly": true
        }
      },
      "required": [
        "routingConditions"
      ]
    },
    "ApplicationGatewayAdvancedRoutingConditionType": {
      "type": "string",
      "description": "The type of request property that an advanced routing condition is evaluated against.",
      "enum": [
        "Header",
        "QueryString",
        "Path",
        "ClientIP",
        "Method"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayAdvancedRoutingConditionType",
        "modelAsString": true,
        "values": [
          {
            "name": "Header",
            "value": "Header",
            "description": "The condition is evaluated against an HTTP request header identified by propertyName."
          },
          {
            "name": "QueryString",
            "value": "QueryString",
            "description": "The condition is evaluated against a query string argument identified by propertyName."
          },
          {
            "name": "Path",
            "value": "Path",
            "description": "The condition is evaluated against the request path. propertyName is not applicable."
          },
          {
            "name": "ClientIP",
            "value": "ClientIP",
            "description": "The condition is evaluated against the client IP address. propertyName and propertyValueMatcher are not applicable."
          },
          {
            "name": "Method",
            "value": "Method",
            "description": "The condition is evaluated against the HTTP method. propertyName and propertyValueMatcher are not applicable."
          }
        ]
      }
    },
    "ApplicationGatewayAdvancedRoutingMap": {
      "type": "object",
      "description": "Advanced routing map of an application gateway. Holds the advanced routing rules evaluated for requests handled by an AdvancedRouting request routing rule, along with the configuration applied when no rule matches.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingMapPropertiesFormat",
          "description": "Properties of the application gateway advanced routing map."
        },
        "name": {
          "type": "string",
          "description": "Name of the advanced routing map that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayAdvancedRoutingMapPropertiesFormat": {
      "type": "object",
      "description": "Properties of advanced routing map of the application gateway.",
      "properties": {
        "defaultBackendAddressPool": {
          "$ref": "#/$defs/SubResource",
          "description": "Default backend address pool resource of the advanced routing map. Required unless defaultRedirectConfiguration is specified."
        },
        "defaultBackendHttpSettings": {
          "$ref": "#/$defs/SubResource",
          "description": "Default backend http settings resource of the advanced routing map. Required unless defaultRedirectConfiguration is specified."
        },
        "defaultRedirectConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Default redirect configuration resource of the advanced routing map. Cannot be combined with defaultBackendAddressPool or defaultBackendHttpSettings."
        },
        "defaultRewriteRuleSet": {
          "$ref": "#/$defs/SubResource",
          "description": "Default rewrite rule set resource of the advanced routing map."
        },
        "defaultAuthConfigs": {
          "type": "array",
          "description": "Default authentication configuration bindings of the advanced routing map. Only one authentication configuration is supported. Authentication configuration names must be unique across the Application Gateway, and an Application Gateway can reference at most 100 distinct authentication policies. Authentication policies can only be bound to Application Gateways using the Standard_v2 or WAF_v2 SKU.",
          "maxItems": 1,
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAuthConfig"
          },
          "x-ms-identifiers": [
            "name"
          ]
        },
        "advancedRoutingRules": {
          "type": "array",
          "description": "Advanced routing rules of the advanced routing map. Each rule must specify a priority that is unique within the map.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingRule"
          }
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the advanced routing map resource.",
          "readOnly": true
        }
      },
      "required": [
        "advancedRoutingRules"
      ]
    },
    "ApplicationGatewayAdvancedRoutingPropertyValueMatcher": {
      "type": "object",
      "description": "Matches the value of a request property against a fixed string or regular expression.",
      "properties": {
        "pattern": {
          "type": "string",
          "description": "The pattern, either fixed string or regular expression, that the request property value is evaluated against."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Setting this parameter to truth value with force the pattern to do a case in-sensitive comparison.",
          "default": true
        },
        "negate": {
          "type": "boolean",
          "description": "Setting this value as truth will force to check the negation of the condition given by the user in the pattern field."
        }
      },
      "required": [
        "pattern"
      ]
    },
    "ApplicationGatewayAdvancedRoutingRule": {
      "type": "object",
      "description": "Advanced routing rule of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingRulePropertiesFormat",
          "description": "Properties of the application gateway advanced routing rule."
        },
        "name": {
          "type": "string",
          "description": "Name of the advanced routing rule that is unique within an advanced routing map."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayAdvancedRoutingRulePropertiesFormat": {
      "type": "object",
      "description": "Properties of advanced routing rule of the application gateway.",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "description": "Priority of the advanced routing rule. Must be unique within the containing advanced routing map. Rules are evaluated in ascending priority order.",
          "minimum": 1,
          "maximum": 1000
        },
        "advancedRoutingConditionSet": {
          "$ref": "#/$defs/SubResource",
          "description": "Advanced routing condition set resource evaluated by this rule."
        },
        "backendAddressPool": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend address pool resource of the advanced routing rule. Required unless redirectConfiguration is specified."
        },
        "backendHttpSettings": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend http settings resource of the advanced routing rule. Required unless redirectConfiguration is specified."
        },
        "redirectConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Redirect configuration resource of the advanced routing rule. Cannot be combined with backendAddressPool or backendHttpSettings."
        },
        "rewriteRuleSet": {
          "$ref": "#/$defs/SubResource",
          "description": "Rewrite rule set resource of the advanced routing rule."
        },
        "authConfigs": {
          "type": "array",
          "description": "Authentication configuration bindings of the advanced routing rule. Only one authentication configuration is supported. Authentication configuration names must be unique across the Application Gateway, and an Application Gateway can reference at most 100 distinct authentication policies. Authentication policies can only be bound to Application Gateways using the Standard_v2 or WAF_v2 SKU.",
          "maxItems": 1,
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAuthConfig"
          },
          "x-ms-identifiers": [
            "name"
          ]
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the advanced routing rule resource.",
          "readOnly": true
        }
      },
      "required": [
        "priority"
      ]
    },
    "ApplicationGatewayAuthConfig": {
      "type": "object",
      "description": "An authentication configuration binding for an Application Gateway routing rule or routing map.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the auth configuration."
        },
        "authenticationPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the authentication policy (Microsoft.Network/authenticationPolicies) resource."
        }
      },
      "required": [
        "name",
        "authenticationPolicy"
      ]
    },
    "ApplicationGatewayAuthenticationCertificate": {
      "type": "object",
      "description": "Authentication certificates of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayAuthenticationCertificatePropertiesFormat",
          "description": "Properties of the application gateway authentication certificate.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the authentication certificate that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayAuthenticationCertificatePropertiesFormat": {
      "type": "object",
      "description": "Authentication certificates properties of an application gateway.",
      "properties": {
        "data": {
          "type": "string",
          "description": "Certificate public data."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the authentication certificate resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayAutoscaleConfiguration": {
      "type": "object",
      "description": "Application Gateway autoscale configuration.",
      "properties": {
        "minCapacity": {
          "type": "integer",
          "format": "int32",
          "description": "Lower bound on number of Application Gateway capacity.",
          "minimum": 0
        },
        "maxCapacity": {
          "type": "integer",
          "format": "int32",
          "description": "Upper bound on number of Application Gateway capacity.",
          "minimum": 2
        }
      },
      "required": [
        "minCapacity"
      ]
    },
    "ApplicationGatewayBackendAddress": {
      "type": "object",
      "description": "Backend address of an application gateway.",
      "properties": {
        "fqdn": {
          "type": "string",
          "description": "Fully qualified domain name (FQDN)."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address."
        }
      }
    },
    "ApplicationGatewayBackendAddressPool": {
      "type": "object",
      "description": "Backend Address Pool of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayBackendAddressPoolPropertiesFormat",
          "description": "Properties of the application gateway backend address pool.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the backend address pool that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayBackendAddressPoolPropertiesFormat": {
      "type": "object",
      "description": "Properties of Backend Address Pool of an application gateway.",
      "properties": {
        "backendIPConfigurations": {
          "type": "array",
          "description": "Collection of references to IPs defined in network interfaces.",
          "items": {
            "$ref": "#/$defs/NetworkInterfaceIPConfiguration"
          },
          "readOnly": true
        },
        "backendAddresses": {
          "type": "array",
          "description": "Backend addresses.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayBackendAddress"
          }
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the backend address pool resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayBackendHttpSettings": {
      "type": "object",
      "description": "Backend address pool settings of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayBackendHttpSettingsPropertiesFormat",
          "description": "Properties of the application gateway backend HTTP settings.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the backend http settings that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayBackendHttpSettingsPropertiesFormat": {
      "type": "object",
      "description": "Properties of Backend address pool settings of an application gateway.",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int32",
          "description": "The destination port on the backend."
        },
        "protocol": {
          "$ref": "#/$defs/ApplicationGatewayProtocol",
          "description": "The protocol used to communicate with the backend."
        },
        "cookieBasedAffinity": {
          "$ref": "#/$defs/ApplicationGatewayCookieBasedAffinity",
          "description": "Cookie based affinity."
        },
        "requestTimeout": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "probe": {
          "$ref": "#/$defs/SubResource",
          "description": "Probe resource of an application gateway."
        },
        "authenticationCertificates": {
          "type": "array",
          "description": "Array of references to application gateway authentication certificates.",
          "items": {
            "$ref": "#/$defs/SubResource"
          }
        },
        "trustedRootCertificates": {
          "type": "array",
          "description": "Array of references to application gateway trusted root certificates.",
          "items": {
            "$ref": "#/$defs/SubResource"
          }
        },
        "connectionDraining": {
          "$ref": "#/$defs/ApplicationGatewayConnectionDraining",
          "description": "Connection draining of the backend http settings resource."
        },
        "hostName": {
          "type": "string",
          "description": "Host header to be sent to the backend servers."
        },
        "pickHostNameFromBackendAddress": {
          "type": "boolean",
          "description": "Whether to pick host header should be picked from the host name of the backend server. Default value is false."
        },
        "affinityCookieName": {
          "type": "string",
          "description": "Cookie name to use for the affinity cookie."
        },
        "probeEnabled": {
          "type": "boolean",
          "description": "Whether the probe is enabled. Default value is false."
        },
        "path": {
          "type": "string",
          "description": "Path which should be used as a prefix for all HTTP requests. Null means no path will be prefixed. Default value is null."
        },
        "dedicatedBackendConnection": {
          "type": "boolean",
          "description": "Enable or disable dedicated connection per backend server. Default is set to false."
        },
        "validateCertChainAndExpiry": {
          "type": "boolean",
          "description": "Verify or skip both chain and expiry validations of the certificate on the backend server. Default is set to true.",
          "default": true
        },
        "validateSNI": {
          "type": "boolean",
          "description": "When enabled, verifies if the Common Name of the certificate provided by the backend server matches the Server Name Indication (SNI) value. Default value is true.",
          "default": true
        },
        "sniName": {
          "type": "string",
          "description": "Specify an SNI value to match the common name of the certificate on the backend. By default, the application gateway uses the incoming request’s host header as the SNI. Default value is null."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the backend HTTP settings resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayBackendSettings": {
      "type": "object",
      "description": "Backend address pool settings of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayBackendSettingsPropertiesFormat",
          "description": "Properties of the application gateway backend settings.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the backend settings that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayBackendSettingsPropertiesFormat": {
      "type": "object",
      "description": "Properties of Backend address pool settings of an application gateway.",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int32",
          "description": "The destination port on the backend."
        },
        "protocol": {
          "$ref": "#/$defs/ApplicationGatewayProtocol",
          "description": "The protocol used to communicate with the backend."
        },
        "timeout": {
          "type": "integer",
          "format": "int32",
          "description": "Connection timeout in seconds. Application Gateway will fail the request if response is not received within ConnectionTimeout. Acceptable values are from 1 second to 86400 seconds."
        },
        "probe": {
          "$ref": "#/$defs/SubResource",
          "description": "Probe resource of an application gateway."
        },
        "trustedRootCertificates": {
          "type": "array",
          "description": "Array of references to application gateway trusted root certificates.",
          "items": {
            "$ref": "#/$defs/SubResource"
          }
        },
        "hostName": {
          "type": "string",
          "description": "Server name indication to be sent to the backend servers for Tls protocol."
        },
        "pickHostNameFromBackendAddress": {
          "type": "boolean",
          "description": "Whether to pick server name indication from the host name of the backend server for Tls protocol. Default value is false."
        },
        "enableL4ClientIpPreservation": {
          "type": "boolean",
          "description": "Whether to send Proxy Protocol header to backend servers over TCP or TLS protocols. Default value is false."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the backend HTTP settings resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayClientAuthConfiguration": {
      "type": "object",
      "description": "Application gateway client authentication configuration.",
      "properties": {
        "verifyClientCertIssuerDN": {
          "type": "boolean",
          "description": "Verify client certificate issuer name on the application gateway."
        },
        "verifyClientRevocation": {
          "$ref": "#/$defs/ApplicationGatewayClientRevocationOptions",
          "description": "Verify client certificate revocation status."
        },
        "verifyClientAuthMode": {
          "$ref": "#/$defs/ApplicationGatewayClientAuthVerificationModes",
          "description": "Verify client Authentication mode."
        }
      }
    },
    "ApplicationGatewayClientAuthVerificationModes": {
      "type": "string",
      "description": "Verify client Authentication mode.",
      "enum": [
        "Strict",
        "Passthrough"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayClientAuthVerificationModes",
        "modelAsString": true,
        "values": [
          {
            "name": "Strict",
            "value": "Strict",
            "description": "Strict"
          },
          {
            "name": "Passthrough",
            "value": "Passthrough",
            "description": "Passthrough"
          }
        ]
      }
    },
    "ApplicationGatewayClientRevocationOptions": {
      "type": "string",
      "description": "Verify client certificate revocation status.",
      "enum": [
        "None",
        "OCSP"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayClientRevocationOptions",
        "modelAsString": true,
        "values": [
          {
            "name": "None",
            "value": "None",
            "description": "None"
          },
          {
            "name": "OCSP",
            "value": "OCSP",
            "description": "OCSP"
          }
        ]
      }
    },
    "ApplicationGatewayConnectionDraining": {
      "type": "object",
      "description": "Connection draining allows open connections to a backend server to be active for a specified time after the backend server got removed from the configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether connection draining is enabled or not."
        },
        "drainTimeoutInSec": {
          "type": "integer",
          "format": "int32",
          "description": "The number of seconds connection draining is active. Acceptable values are from 1 second to 3600 seconds.",
          "minimum": 1,
          "maximum": 3600
        }
      },
      "required": [
        "enabled",
        "drainTimeoutInSec"
      ]
    },
    "ApplicationGatewayCookieBasedAffinity": {
      "type": "string",
      "description": "Cookie based affinity.",
      "enum": [
        "Enabled",
        "Disabled"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayCookieBasedAffinity",
        "modelAsString": true,
        "values": [
          {
            "name": "Enabled",
            "value": "Enabled",
            "description": "Enabled"
          },
          {
            "name": "Disabled",
            "value": "Disabled",
            "description": "Disabled"
          }
        ]
      }
    },
    "ApplicationGatewayCustomError": {
      "type": "object",
      "description": "Custom error of an application gateway.",
      "properties": {
        "statusCode": {
          "$ref": "#/$defs/ApplicationGatewayCustomErrorStatusCode",
          "description": "Status code of the application gateway custom error."
        },
        "customErrorPageUrl": {
          "type": "string",
          "description": "Error page URL of the application gateway custom error."
        }
      }
    },
    "ApplicationGatewayCustomErrorStatusCode": {
      "type": "string",
      "description": "Status code of the application gateway custom error.",
      "enum": [
        "HttpStatus400",
        "HttpStatus403",
        "HttpStatus404",
        "HttpStatus405",
        "HttpStatus408",
        "HttpStatus500",
        "HttpStatus502",
        "HttpStatus503",
        "HttpStatus504"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayCustomErrorStatusCode",
        "modelAsString": true,
        "values": [
          {
            "name": "HttpStatus400",
            "value": "HttpStatus400",
            "description": "HttpStatus400"
          },
          {
            "name": "HttpStatus403",
            "value": "HttpStatus403",
            "description": "HttpStatus403"
          },
          {
            "name": "HttpStatus404",
            "value": "HttpStatus404",
            "description": "HttpStatus404"
          },
          {
            "name": "HttpStatus405",
            "value": "HttpStatus405",
            "description": "HttpStatus405"
          },
          {
            "name": "HttpStatus408",
            "value": "HttpStatus408",
            "description": "HttpStatus408"
          },
          {
            "name": "HttpStatus500",
            "value": "HttpStatus500",
            "description": "HttpStatus500"
          },
          {
            "name": "HttpStatus502",
            "value": "HttpStatus502",
            "description": "HttpStatus502"
          },
          {
            "name": "HttpStatus503",
            "value": "HttpStatus503",
            "description": "HttpStatus503"
          },
          {
            "name": "HttpStatus504",
            "value": "HttpStatus504",
            "description": "HttpStatus504"
          }
        ]
      }
    },
    "ApplicationGatewayEntraJWTValidationConfig": {
      "type": "object",
      "description": "Entra JWT Validation Configuration of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayEntraJWTValidationConfigPropertiesFormat",
          "description": "Properties of the application gateway entra jwt validation configuration.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the entra jwt validation configuration that is unique within an application gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayEntraJWTValidationConfigPropertiesFormat": {
      "type": "object",
      "description": "Properties of entra jwt validation configuration of the application gateway.",
      "properties": {
        "unAuthorizedRequestAction": {
          "$ref": "#/$defs/ApplicationGatewayUnAuthorizedRequestAction",
          "description": "Unauthorized request action."
        },
        "tenantId": {
          "type": "string",
          "description": "The Tenant ID of the Microsoft Entra ID application."
        },
        "clientId": {
          "type": "string",
          "description": "The Client ID of the Microsoft Entra ID application."
        },
        "audiences": {
          "type": "array",
          "description": "List of acceptable audience claims that can be present in the token (aud claim). A maximum of 5 audiences are permitted.",
          "items": {
            "type": "string"
          }
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the entra jwt validation configuration resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayFirewallDisabledRuleGroup": {
      "type": "object",
      "description": "Allows to disable rules within a rule group or an entire rule group.",
      "properties": {
        "ruleGroupName": {
          "type": "string",
          "description": "The name of the rule group that will be disabled."
        },
        "rules": {
          "type": "array",
          "description": "The list of rules that will be disabled. If null, all rules of the rule group will be disabled.",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "required": [
        "ruleGroupName"
      ]
    },
    "ApplicationGatewayFirewallExclusion": {
      "type": "object",
      "description": "Allow to exclude some variable satisfy the condition for the WAF check.",
      "properties": {
        "matchVariable": {
          "type": "string",
          "description": "The variable to be excluded."
        },
        "selectorMatchOperator": {
          "type": "string",
          "description": "When matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to."
        },
        "selector": {
          "type": "string",
          "description": "When matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to."
        }
      },
      "required": [
        "matchVariable",
        "selectorMatchOperator",
        "selector"
      ]
    },
    "ApplicationGatewayFirewallMode": {
      "type": "string",
      "description": "Web application firewall mode.",
      "enum": [
        "Detection",
        "Prevention"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayFirewallMode",
        "modelAsString": true,
        "values": [
          {
            "name": "Detection",
            "value": "Detection",
            "description": "Detection"
          },
          {
            "name": "Prevention",
            "value": "Prevention",
            "description": "Prevention"
          }
        ]
      }
    },
    "ApplicationGatewayFrontendIPConfiguration": {
      "type": "object",
      "description": "Frontend IP configuration of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayFrontendIPConfigurationPropertiesFormat",
          "description": "Properties of the application gateway frontend IP configuration.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the frontend IP configuration that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayFrontendIPConfigurationPropertiesFormat": {
      "type": "object",
      "description": "Properties of Frontend IP configuration of an application gateway.",
      "properties": {
        "privateIPAddress": {
          "type": "string",
          "description": "PrivateIPAddress of the network interface IP Configuration."
        },
        "privateIPAllocationMethod": {
          "$ref": "#/$defs/IPAllocationMethod",
          "description": "The private IP address allocation method."
        },
        "subnet": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the subnet resource."
        },
        "publicIPAddress": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the PublicIP resource."
        },
        "privateLinkConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the application gateway private link configuration."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the frontend IP configuration resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayFrontendPort": {
      "type": "object",
      "description": "Frontend port of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayFrontendPortPropertiesFormat",
          "description": "Properties of the application gateway frontend port.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the frontend port that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayFrontendPortPropertiesFormat": {
      "type": "object",
      "description": "Properties of Frontend port of an application gateway.",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int32",
          "description": "Frontend port."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the frontend port resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayGlobalConfiguration": {
      "type": "object",
      "description": "Application Gateway global configuration.",
      "properties": {
        "enableRequestBuffering": {
          "type": "boolean",
          "description": "Enable request buffering."
        },
        "enableResponseBuffering": {
          "type": "boolean",
          "description": "Enable response buffering."
        },
        "disableDefaultServerHeaderInResponse": {
          "type": "boolean",
          "description": "Disable default server header in response."
        }
      }
    },
    "ApplicationGatewayHeaderConfiguration": {
      "type": "object",
      "description": "Header configuration of the Actions set in Application Gateway.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "Header name of the header configuration."
        },
        "headerValueMatcher": {
          "$ref": "#/$defs/HeaderValueMatcher",
          "description": "An optional field under \"Rewrite Action\". It lets you capture and modify the value(s) of a specific header when multiple headers with the same name exist. Currently supported for Set-Cookie Response header only. For more details, visit https://aka.ms/appgwheadercrud"
        },
        "headerValue": {
          "type": "string",
          "description": "Header value of the header configuration."
        }
      }
    },
    "ApplicationGatewayHttpListener": {
      "type": "object",
      "description": "Http listener of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayHttpListenerPropertiesFormat",
          "description": "Properties of the application gateway HTTP listener.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the HTTP listener that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayHttpListenerPropertiesFormat": {
      "type": "object",
      "description": "Properties of HTTP listener of an application gateway.",
      "properties": {
        "frontendIPConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Frontend IP configuration resource of an application gateway."
        },
        "frontendPort": {
          "$ref": "#/$defs/SubResource",
          "description": "Frontend port resource of an application gateway."
        },
        "protocol": {
          "$ref": "#/$defs/ApplicationGatewayProtocol",
          "description": "Protocol of the HTTP listener."
        },
        "hostName": {
          "type": "string",
          "description": "Host name of HTTP listener."
        },
        "sslCertificate": {
          "$ref": "#/$defs/SubResource",
          "description": "SSL certificate resource of an application gateway."
        },
        "sslProfile": {
          "$ref": "#/$defs/SubResource",
          "description": "SSL profile resource of the application gateway."
        },
        "requireServerNameIndication": {
          "type": "boolean",
          "description": "Applicable only if protocol is https. Enables SNI for multi-hosting."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the HTTP listener resource.",
          "readOnly": true
        },
        "customErrorConfigurations": {
          "type": "array",
          "description": "Custom error configurations of the HTTP listener.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayCustomError"
          }
        },
        "firewallPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the FirewallPolicy resource."
        },
        "hostNames": {
          "type": "array",
          "description": "List of Host names for HTTP Listener that allows special wildcard characters as well.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ApplicationGatewayIPConfiguration": {
      "type": "object",
      "description": "IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayIPConfigurationPropertiesFormat",
          "description": "Properties of the application gateway IP configuration.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the IP configuration that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayIPConfigurationPropertiesFormat": {
      "type": "object",
      "description": "Properties of IP configuration of an application gateway.",
      "properties": {
        "subnet": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the subnet resource. A subnet from where application gateway gets its private address."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the application gateway IP configuration resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayListener": {
      "type": "object",
      "description": "Listener of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayListenerPropertiesFormat",
          "description": "Properties of the application gateway listener.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the listener that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayListenerPropertiesFormat": {
      "type": "object",
      "description": "Properties of listener of an application gateway.",
      "properties": {
        "frontendIPConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Frontend IP configuration resource of an application gateway."
        },
        "frontendPort": {
          "$ref": "#/$defs/SubResource",
          "description": "Frontend port resource of an application gateway."
        },
        "protocol": {
          "$ref": "#/$defs/ApplicationGatewayProtocol",
          "description": "Protocol of the listener."
        },
        "sslCertificate": {
          "$ref": "#/$defs/SubResource",
          "description": "SSL certificate resource of an application gateway."
        },
        "sslProfile": {
          "$ref": "#/$defs/SubResource",
          "description": "SSL profile resource of the application gateway."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the listener resource.",
          "readOnly": true
        },
        "hostNames": {
          "type": "array",
          "description": "List of Server Name Indications(SNI) for TLS Multi-site Listener that allows special wildcard characters as well.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ApplicationGatewayLoadDistributionAlgorithm": {
      "type": "string",
      "description": "Load Distribution Algorithm enums.",
      "enum": [
        "RoundRobin",
        "LeastConnections",
        "IpHash"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayLoadDistributionAlgorithm",
        "modelAsString": true,
        "values": [
          {
            "name": "RoundRobin",
            "value": "RoundRobin",
            "description": "RoundRobin"
          },
          {
            "name": "LeastConnections",
            "value": "LeastConnections",
            "description": "LeastConnections"
          },
          {
            "name": "IpHash",
            "value": "IpHash",
            "description": "IpHash"
          }
        ]
      }
    },
    "ApplicationGatewayLoadDistributionPolicy": {
      "type": "object",
      "description": "Load Distribution Policy of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayLoadDistributionPolicyPropertiesFormat",
          "description": "Properties of the application gateway load distribution policy.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the load distribution policy that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayLoadDistributionPolicyPropertiesFormat": {
      "type": "object",
      "description": "Properties of Load Distribution Policy of an application gateway.",
      "properties": {
        "loadDistributionTargets": {
          "type": "array",
          "description": "Load Distribution Targets resource of an application gateway.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayLoadDistributionTarget"
          }
        },
        "loadDistributionAlgorithm": {
          "$ref": "#/$defs/ApplicationGatewayLoadDistributionAlgorithm",
          "description": "Load Distribution Targets resource of an application gateway."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the Load Distribution Policy resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayLoadDistributionTarget": {
      "type": "object",
      "description": "Load Distribution Target of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayLoadDistributionTargetPropertiesFormat",
          "description": "Properties of the application gateway load distribution target.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the load distribution policy that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayLoadDistributionTargetPropertiesFormat": {
      "type": "object",
      "properties": {
        "weightPerServer": {
          "type": "integer",
          "format": "int32",
          "description": "Weight per server. Range between 1 and 100.",
          "minimum": 1,
          "maximum": 100
        },
        "backendAddressPool": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend address pool resource of the application gateway."
        }
      }
    },
    "ApplicationGatewayManagedHsm": {
      "type": "object",
      "description": "Managed HSM properties of an application gateway.",
      "properties": {
        "keyId": {
          "type": "string",
          "format": "uri",
          "description": "Key identifier of a key stored in Managed HSM."
        },
        "publicCertData": {
          "type": "string",
          "description": "Base-64 encoded value of a base-64 public certificate."
        }
      }
    },
    "ApplicationGatewayOperationalState": {
      "type": "string",
      "description": "Operational state of the application gateway resource.",
      "enum": [
        "Stopped",
        "Starting",
        "Running",
        "Stopping"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayOperationalState",
        "modelAsString": true,
        "values": [
          {
            "name": "Stopped",
            "value": "Stopped",
            "description": "Stopped"
          },
          {
            "name": "Starting",
            "value": "Starting",
            "description": "Starting"
          },
          {
            "name": "Running",
            "value": "Running",
            "description": "Running"
          },
          {
            "name": "Stopping",
            "value": "Stopping",
            "description": "Stopping"
          }
        ]
      }
    },
    "ApplicationGatewayPathRule": {
      "type": "object",
      "description": "Path rule of URL path map of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayPathRulePropertiesFormat",
          "description": "Properties of the application gateway path rule.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the path rule that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayPathRulePropertiesFormat": {
      "type": "object",
      "description": "Properties of path rule of an application gateway.",
      "properties": {
        "paths": {
          "type": "array",
          "description": "Path rules of URL path map.",
          "items": {
            "type": "string"
          }
        },
        "backendAddressPool": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend address pool resource of URL path map path rule."
        },
        "backendHttpSettings": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend http settings resource of URL path map path rule."
        },
        "redirectConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Redirect configuration resource of URL path map path rule."
        },
        "rewriteRuleSet": {
          "$ref": "#/$defs/SubResource",
          "description": "Rewrite rule set resource of URL path map path rule."
        },
        "loadDistributionPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "Load Distribution Policy resource of URL path map path rule."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the path rule resource.",
          "readOnly": true
        },
        "firewallPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the FirewallPolicy resource."
        }
      }
    },
    "ApplicationGatewayPrivateEndpointConnection": {
      "type": "object",
      "description": "Private Endpoint connection on an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayPrivateEndpointConnectionProperties",
          "description": "Properties of the application gateway private endpoint connection.",
          "x-ms-client-flatten": true
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResourceModel"
        }
      ]
    },
    "ApplicationGatewayPrivateEndpointConnectionProperties": {
      "type": "object",
      "description": "Properties of Private Link Resource of an application gateway.",
      "properties": {
        "privateEndpoint": {
          "$ref": "#/$defs/PrivateEndpoint",
          "description": "The resource of private end point.",
          "readOnly": true
        },
        "privateLinkServiceConnectionState": {
          "$ref": "#/$defs/PrivateLinkServiceConnectionState",
          "description": "A collection of information about the state of the connection between service consumer and provider."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the application gateway private endpoint connection resource.",
          "readOnly": true
        },
        "linkIdentifier": {
          "type": "string",
          "description": "The consumer link id.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayPrivateLinkConfiguration": {
      "type": "object",
      "description": "Private Link Configuration on an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayPrivateLinkConfigurationProperties",
          "description": "Properties of the application gateway private link configuration.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the private link configuration that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayPrivateLinkConfigurationProperties": {
      "type": "object",
      "description": "Properties of private link configuration on an application gateway.",
      "properties": {
        "ipConfigurations": {
          "type": "array",
          "description": "An array of application gateway private link ip configurations.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayPrivateLinkIpConfiguration"
          }
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the application gateway private link configuration.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayPrivateLinkIpConfiguration": {
      "type": "object",
      "description": "The application gateway private link ip configuration.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayPrivateLinkIpConfigurationProperties",
          "description": "Properties of an application gateway private link ip configuration.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "The name of application gateway private link ip configuration."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "The resource type.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayPrivateLinkIpConfigurationProperties": {
      "type": "object",
      "description": "Properties of an application gateway private link IP configuration.",
      "properties": {
        "privateIPAddress": {
          "type": "string",
          "description": "The private IP address of the IP configuration."
        },
        "privateIPAllocationMethod": {
          "$ref": "#/$defs/IPAllocationMethod",
          "description": "The private IP address allocation method."
        },
        "subnet": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the subnet resource."
        },
        "primary": {
          "type": "boolean",
          "description": "Whether the ip configuration is primary or not."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the application gateway private link IP configuration.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayProbe": {
      "type": "object",
      "description": "Probe of the application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayProbePropertiesFormat",
          "description": "Properties of the application gateway probe.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the probe that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayProbeHealthResponseMatch": {
      "type": "object",
      "description": "Application gateway probe health response match.",
      "properties": {
        "body": {
          "type": "string",
          "description": "Body that must be contained in the health response. Default value is empty."
        },
        "statusCodes": {
          "type": "array",
          "description": "Allowed ranges of healthy status codes. Default range of healthy status codes is 200-399.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ApplicationGatewayProbePropertiesFormat": {
      "type": "object",
      "description": "Properties of probe of an application gateway.",
      "properties": {
        "protocol": {
          "$ref": "#/$defs/ApplicationGatewayProtocol",
          "description": "The protocol used for the probe."
        },
        "host": {
          "type": "string",
          "description": "Host name to send the probe to."
        },
        "path": {
          "type": "string",
          "description": "Relative path of probe. Valid path starts from '/'. Probe is sent to <Protocol>://<host>:<port><path>."
        },
        "interval": {
          "type": "integer",
          "format": "int32",
          "description": "The probing interval in seconds. This is the time interval between two consecutive probes. Acceptable values are from 1 second to 86400 seconds."
        },
        "timeout": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "pickHostNameFromBackendHttpSettings": {
          "type": "boolean",
          "description": "Whether the host header should be picked from the backend http settings. Default value is false."
        },
        "pickHostNameFromBackendSettings": {
          "type": "boolean",
          "description": "Whether the server name indication should be picked from the backend settings for Tls protocol. Default value is false."
        },
        "minServers": {
          "type": "integer",
          "format": "int32",
          "description": "Minimum number of servers that are always marked healthy. Default value is 0."
        },
        "match": {
          "$ref": "#/$defs/ApplicationGatewayProbeHealthResponseMatch",
          "description": "Criterion for classifying a healthy probe response."
        },
        "enableProbeProxyProtocolHeader": {
          "type": "boolean",
          "description": "Whether to send Proxy Protocol header along with the Health Probe over TCP or TLS protocol. Default value is false."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the probe resource.",
          "readOnly": true
        },
        "port": {
          "type": "integer",
          "format": "int32",
          "description": "Custom port which will be used for probing the backend servers. The valid value ranges from 1 to 65535. In case not set, port from http settings will be used. This property is valid for Basic, Standard_v2 and WAF_v2 only.",
          "minimum": 1,
          "maximum": 65535
        }
      }
    },
    "ApplicationGatewayPropertiesFormat": {
      "type": "object",
      "description": "Properties of the application gateway.",
      "properties": {
        "sku": {
          "$ref": "#/$defs/ApplicationGatewaySku",
          "description": "SKU of the application gateway resource."
        },
        "sslPolicy": {
          "$ref": "#/$defs/ApplicationGatewaySslPolicy",
          "description": "SSL policy of the application gateway resource."
        },
        "operationalState": {
          "$ref": "#/$defs/ApplicationGatewayOperationalState",
          "description": "Operational state of the application gateway resource.",
          "readOnly": true
        },
        "gatewayIPConfigurations": {
          "type": "array",
          "description": "Subnets of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayIPConfiguration"
          }
        },
        "authenticationCertificates": {
          "type": "array",
          "description": "Authentication certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAuthenticationCertificate"
          }
        },
        "trustedRootCertificates": {
          "type": "array",
          "description": "Trusted Root certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayTrustedRootCertificate"
          }
        },
        "trustedClientCertificates": {
          "type": "array",
          "description": "Trusted client certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayTrustedClientCertificate"
          }
        },
        "sslCertificates": {
          "type": "array",
          "description": "SSL certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewaySslCertificate"
          }
        },
        "frontendIPConfigurations": {
          "type": "array",
          "description": "Frontend IP addresses of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayFrontendIPConfiguration"
          }
        },
        "frontendPorts": {
          "type": "array",
          "description": "Frontend ports of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayFrontendPort"
          }
        },
        "probes": {
          "type": "array",
          "description": "Probes of the application gateway resource.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayProbe"
          }
        },
        "backendAddressPools": {
          "type": "array",
          "description": "Backend address pool of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayBackendAddressPool"
          }
        },
        "backendHttpSettingsCollection": {
          "type": "array",
          "description": "Backend http settings of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayBackendHttpSettings"
          }
        },
        "backendSettingsCollection": {
          "type": "array",
          "description": "Backend settings of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayBackendSettings"
          }
        },
        "httpListeners": {
          "type": "array",
          "description": "Http listeners of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayHttpListener"
          }
        },
        "listeners": {
          "type": "array",
          "description": "Listeners of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayListener"
          }
        },
        "sslProfiles": {
          "type": "array",
          "description": "SSL profiles of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewaySslProfile"
          }
        },
        "urlPathMaps": {
          "type": "array",
          "description": "URL path map of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayUrlPathMap"
          }
        },
        "advancedRoutingMaps": {
          "type": "array",
          "description": "Advanced routing maps of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingMap"
          }
        },
        "requestRoutingRules": {
          "type": "array",
          "description": "Request routing rules of the application gateway resource.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayRequestRoutingRule"
          }
        },
        "routingRules": {
          "type": "array",
          "description": "Routing rules of the application gateway resource.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayRoutingRule"
          }
        },
        "rewriteRuleSets": {
          "type": "array",
          "description": "Rewrite rules for the application gateway resource.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayRewriteRuleSet"
          }
        },
        "advancedRoutingConditionSets": {
          "type": "array",
          "description": "Advanced routing condition sets of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAdvancedRoutingConditionSet"
          }
        },
        "redirectConfigurations": {
          "type": "array",
          "description": "Redirect configurations of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayRedirectConfiguration"
          }
        },
        "webApplicationFirewallConfiguration": {
          "$ref": "#/$defs/ApplicationGatewayWebApplicationFirewallConfiguration",
          "description": "Web application firewall configuration."
        },
        "firewallPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to the FirewallPolicy resource."
        },
        "enableHttp2": {
          "type": "boolean",
          "description": "Whether HTTP2 is enabled on the application gateway resource."
        },
        "enableFips": {
          "type": "boolean",
          "description": "Whether FIPS is enabled on the application gateway resource."
        },
        "autoscaleConfiguration": {
          "$ref": "#/$defs/ApplicationGatewayAutoscaleConfiguration",
          "description": "Autoscale Configuration."
        },
        "reservedCapacity": {
          "type": "integer",
          "format": "int32",
          "description": "The reserved capacity of the application gateway resource. Applicable to the Basic_v2 and Basic_WAF_v2 SKU tiers."
        },
        "privateLinkConfigurations": {
          "type": "array",
          "description": "PrivateLink configurations on application gateway.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayPrivateLinkConfiguration"
          }
        },
        "privateEndpointConnections": {
          "type": "array",
          "description": "Private Endpoint connections on application gateway.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayPrivateEndpointConnection"
          },
          "readOnly": true
        },
        "resourceGuid": {
          "type": "string",
          "description": "The resource GUID property of the application gateway resource.",
          "readOnly": true
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the application gateway resource.",
          "readOnly": true
        },
        "customErrorConfigurations": {
          "type": "array",
          "description": "Custom error configurations of the application gateway resource.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayCustomError"
          }
        },
        "forceFirewallPolicyAssociation": {
          "type": "boolean",
          "description": "If true, associates a firewall policy with an application gateway regardless whether the policy differs from the WAF Config."
        },
        "loadDistributionPolicies": {
          "type": "array",
          "description": "Load distribution policies of the application gateway resource.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayLoadDistributionPolicy"
          }
        },
        "entraJWTValidationConfigs": {
          "type": "array",
          "description": "Entra JWT validation configurations for the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayEntraJWTValidationConfig"
          }
        },
        "globalConfiguration": {
          "$ref": "#/$defs/ApplicationGatewayGlobalConfiguration",
          "description": "Global Configuration."
        },
        "defaultPredefinedSslPolicy": {
          "$ref": "#/$defs/ApplicationGatewaySslPolicyName",
          "description": "The default predefined SSL Policy applied on the application gateway resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayProtocol": {
      "type": "string",
      "description": "Application Gateway protocol.",
      "enum": [
        "Http",
        "Https",
        "Tcp",
        "Tls"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayProtocol",
        "modelAsString": true,
        "values": [
          {
            "name": "Http",
            "value": "Http",
            "description": "Supported for httpListeners and  backendHttpSettingsCollection properties."
          },
          {
            "name": "Https",
            "value": "Https",
            "description": "Supported for httpListeners and  backendHttpSettingsCollection properties."
          },
          {
            "name": "Tcp",
            "value": "Tcp",
            "description": "Supported for listeners and backendSettingsCollection properties."
          },
          {
            "name": "Tls",
            "value": "Tls",
            "description": "Supported for listeners and backendSettingsCollection properties."
          }
        ]
      }
    },
    "ApplicationGatewayRedirectConfiguration": {
      "type": "object",
      "description": "Redirect configuration of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayRedirectConfigurationPropertiesFormat",
          "description": "Properties of the application gateway redirect configuration.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the redirect configuration that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayRedirectConfigurationPropertiesFormat": {
      "type": "object",
      "description": "Properties of redirect configuration of the application gateway.",
      "properties": {
        "redirectType": {
          "$ref": "#/$defs/ApplicationGatewayRedirectType",
          "description": "HTTP redirection type."
        },
        "targetListener": {
          "$ref": "#/$defs/SubResource",
          "description": "Reference to a listener to redirect the request to."
        },
        "targetUrl": {
          "type": "string",
          "description": "Url to redirect the request to."
        },
        "includePath": {
          "type": "boolean",
          "description": "Include path in the redirected url."
        },
        "includeQueryString": {
          "type": "boolean",
          "description": "Include query string in the redirected url."
        },
        "requestRoutingRules": {
          "type": "array",
          "description": "Request routing specifying redirect configuration.",
          "items": {
            "$ref": "#/$defs/SubResource"
          }
        },
        "urlPathMaps": {
          "type": "array",
          "description": "Url path maps specifying default redirect configuration.",
          "items": {
            "$ref": "#/$defs/SubResource"
          }
        },
        "pathRules": {
          "type": "array",
          "description": "Path rules specifying redirect configuration.",
          "items": {
            "$ref": "#/$defs/SubResource"
          }
        }
      }
    },
    "ApplicationGatewayRedirectType": {
      "type": "string",
      "description": "Redirect type enum.",
      "enum": [
        "Permanent",
        "Found",
        "SeeOther",
        "Temporary"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayRedirectType",
        "modelAsString": true,
        "values": [
          {
            "name": "Permanent",
            "value": "Permanent",
            "description": "Permanent"
          },
          {
            "name": "Found",
            "value": "Found",
            "description": "Found"
          },
          {
            "name": "SeeOther",
            "value": "SeeOther",
            "description": "SeeOther"
          },
          {
            "name": "Temporary",
            "value": "Temporary",
            "description": "Temporary"
          }
        ]
      }
    },
    "ApplicationGatewayRequestRoutingRule": {
      "type": "object",
      "description": "Request routing rule of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayRequestRoutingRulePropertiesFormat",
          "description": "Properties of the application gateway request routing rule.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the request routing rule that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayRequestRoutingRulePropertiesFormat": {
      "type": "object",
      "description": "Properties of request routing rule of the application gateway.",
      "properties": {
        "ruleType": {
          "$ref": "#/$defs/ApplicationGatewayRequestRoutingRuleType",
          "description": "Rule type."
        },
        "priority": {
          "type": "integer",
          "format": "int32",
          "description": "Priority of the request routing rule.",
          "minimum": 1,
          "maximum": 20000
        },
        "backendAddressPool": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend address pool resource of the application gateway."
        },
        "backendHttpSettings": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend http settings resource of the application gateway."
        },
        "httpListener": {
          "$ref": "#/$defs/SubResource",
          "description": "Http listener resource of the application gateway."
        },
        "urlPathMap": {
          "$ref": "#/$defs/SubResource",
          "description": "URL path map resource of the application gateway."
        },
        "advancedRoutingMap": {
          "$ref": "#/$defs/SubResource",
          "description": "Advanced routing map resource of the application gateway."
        },
        "rewriteRuleSet": {
          "$ref": "#/$defs/SubResource",
          "description": "Rewrite Rule Set resource in Basic rule of the application gateway."
        },
        "redirectConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Redirect configuration resource of the application gateway."
        },
        "loadDistributionPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "Load Distribution Policy resource of the application gateway."
        },
        "entraJWTValidationConfig": {
          "$ref": "#/$defs/SubResource",
          "description": "Entra JWT validation configuration resource of the application gateway."
        },
        "authConfigs": {
          "type": "array",
          "description": "Authentication configuration bindings of the request routing rule. Only one authentication configuration is supported. Authentication configuration names must be unique across the Application Gateway, and an Application Gateway can reference at most 100 distinct authentication policies. Authentication policies can only be bound to Application Gateways using the Standard_v2 or WAF_v2 SKU.",
          "maxItems": 1,
          "items": {
            "$ref": "#/$defs/ApplicationGatewayAuthConfig"
          },
          "x-ms-identifiers": [
            "name"
          ]
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the request routing rule resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayRequestRoutingRuleType": {
      "type": "string",
      "description": "Rule type.",
      "enum": [
        "Basic",
        "PathBasedRouting",
        "AdvancedRouting"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayRequestRoutingRuleType",
        "modelAsString": true,
        "values": [
          {
            "name": "Basic",
            "value": "Basic",
            "description": "Basic"
          },
          {
            "name": "PathBasedRouting",
            "value": "PathBasedRouting",
            "description": "PathBasedRouting"
          },
          {
            "name": "AdvancedRouting",
            "value": "AdvancedRouting",
            "description": "AdvancedRouting"
          }
        ]
      }
    },
    "ApplicationGatewayRewriteRule": {
      "type": "object",
      "description": "Rewrite rule of an application gateway.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the rewrite rule that is unique within an Application Gateway."
        },
        "ruleSequence": {
          "type": "integer",
          "format": "int32",
          "description": "Rule Sequence of the rewrite rule that determines the order of execution of a particular rule in a RewriteRuleSet."
        },
        "conditions": {
          "type": "array",
          "description": "Conditions based on which the action set execution will be evaluated.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayRewriteRuleCondition"
          }
        },
        "actionSet": {
          "$ref": "#/$defs/ApplicationGatewayRewriteRuleActionSet",
          "description": "Set of actions to be done as part of the rewrite Rule."
        }
      }
    },
    "ApplicationGatewayRewriteRuleActionSet": {
      "type": "object",
      "description": "Set of actions in the Rewrite Rule in Application Gateway.",
      "properties": {
        "requestHeaderConfigurations": {
          "type": "array",
          "description": "Request Header Actions in the Action Set.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayHeaderConfiguration"
          }
        },
        "responseHeaderConfigurations": {
          "type": "array",
          "description": "Response Header Actions in the Action Set.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayHeaderConfiguration"
          }
        },
        "urlConfiguration": {
          "$ref": "#/$defs/ApplicationGatewayUrlConfiguration",
          "description": "Url Configuration Action in the Action Set."
        }
      }
    },
    "ApplicationGatewayRewriteRuleCondition": {
      "type": "object",
      "description": "Set of conditions in the Rewrite Rule in Application Gateway.",
      "properties": {
        "variable": {
          "type": "string",
          "description": "The condition parameter of the RewriteRuleCondition."
        },
        "pattern": {
          "type": "string",
          "description": "The pattern, either fixed string or regular expression, that evaluates the truthfulness of the condition."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Setting this parameter to truth value with force the pattern to do a case in-sensitive comparison."
        },
        "negate": {
          "type": "boolean",
          "description": "Setting this value as truth will force to check the negation of the condition given by the user."
        }
      }
    },
    "ApplicationGatewayRewriteRuleSet": {
      "type": "object",
      "description": "Rewrite rule set of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayRewriteRuleSetPropertiesFormat",
          "description": "Properties of the application gateway rewrite rule set.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the rewrite rule set that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayRewriteRuleSetPropertiesFormat": {
      "type": "object",
      "description": "Properties of rewrite rule set of the application gateway.",
      "properties": {
        "rewriteRules": {
          "type": "array",
          "description": "Rewrite rules in the rewrite rule set.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayRewriteRule"
          }
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the rewrite rule set resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayRoutingRule": {
      "type": "object",
      "description": "Routing rule of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayRoutingRulePropertiesFormat",
          "description": "Properties of the application gateway routing rule.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the routing rule that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayRoutingRulePropertiesFormat": {
      "type": "object",
      "description": "Properties of routing rule of the application gateway.",
      "properties": {
        "ruleType": {
          "$ref": "#/$defs/ApplicationGatewayRequestRoutingRuleType",
          "description": "Rule type."
        },
        "priority": {
          "type": "integer",
          "format": "int32",
          "description": "Priority of the routing rule.",
          "minimum": 1,
          "maximum": 20000
        },
        "backendAddressPool": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend address pool resource of the application gateway."
        },
        "backendSettings": {
          "$ref": "#/$defs/SubResource",
          "description": "Backend settings resource of the application gateway."
        },
        "listener": {
          "$ref": "#/$defs/SubResource",
          "description": "Listener resource of the application gateway."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the request routing rule resource.",
          "readOnly": true
        }
      },
      "required": [
        "priority"
      ]
    },
    "ApplicationGatewaySku": {
      "type": "object",
      "description": "SKU of an application gateway.",
      "properties": {
        "name": {
          "$ref": "#/$defs/ApplicationGatewaySkuName",
          "description": "Name of an application gateway SKU."
        },
        "tier": {
          "$ref": "#/$defs/ApplicationGatewayTier",
          "description": "Tier of an application gateway."
        },
        "capacity": {
          "type": "integer",
          "format": "int32",
          "description": "Capacity (instance count) of an application gateway."
        },
        "family": {
          "$ref": "#/$defs/ApplicationGatewaySkuFamily",
          "description": "Family of an application gateway SKU."
        }
      }
    },
    "ApplicationGatewaySkuFamily": {
      "type": "string",
      "description": "Family of an application gateway SKU.",
      "enum": [
        "Generation_1",
        "Generation_2"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewaySkuFamily",
        "modelAsString": true,
        "values": [
          {
            "name": "Generation_1",
            "value": "Generation_1",
            "description": "Generation_1"
          },
          {
            "name": "Generation_2",
            "value": "Generation_2",
            "description": "Generation_2"
          }
        ]
      }
    },
    "ApplicationGatewaySkuName": {
      "type": "string",
      "description": "Name of an application gateway SKU.",
      "enum": [
        "Standard_Small",
        "Standard_Medium",
        "Standard_Large",
        "WAF_Medium",
        "WAF_Large",
        "Standard_v2",
        "WAF_v2",
        "Basic",
        "Basic_v2",
        "Basic_WAF_v2"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewaySkuName",
        "modelAsString": true,
        "values": [
          {
            "name": "Standard_Small",
            "value": "Standard_Small",
            "description": "Standard_Small"
          },
          {
            "name": "Standard_Medium",
            "value": "Standard_Medium",
            "description": "Standard_Medium"
          },
          {
            "name": "Standard_Large",
            "value": "Standard_Large",
            "description": "Standard_Large"
          },
          {
            "name": "WAF_Medium",
            "value": "WAF_Medium",
            "description": "WAF_Medium"
          },
          {
            "name": "WAF_Large",
            "value": "WAF_Large",
            "description": "WAF_Large"
          },
          {
            "name": "Standard_v2",
            "value": "Standard_v2",
            "description": "Standard_v2"
          },
          {
            "name": "WAF_v2",
            "value": "WAF_v2",
            "description": "WAF_v2"
          },
          {
            "name": "Basic",
            "value": "Basic",
            "description": "Basic"
          },
          {
            "name": "Basic_v2",
            "value": "Basic_v2",
            "description": "Basic tier Application Gateway."
          },
          {
            "name": "Basic_WAF_v2",
            "value": "Basic_WAF_v2",
            "description": "Basic tier Application Gateway with WAF enabled."
          }
        ]
      }
    },
    "ApplicationGatewaySslCertificate": {
      "type": "object",
      "description": "SSL certificates of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewaySslCertificatePropertiesFormat",
          "description": "Properties of the application gateway SSL certificate.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the SSL certificate that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewaySslCertificatePropertiesFormat": {
      "type": "object",
      "description": "Properties of SSL certificates of an application gateway.",
      "properties": {
        "data": {
          "type": "string",
          "description": "Base-64 encoded pfx certificate. Only applicable in PUT Request."
        },
        "password": {
          "type": "string",
          "description": "Password for the pfx file specified in data. Only applicable in PUT request."
        },
        "publicCertData": {
          "type": "string",
          "description": "Base-64 encoded Public cert data corresponding to pfx specified in data. Only applicable in GET request.",
          "readOnly": true
        },
        "keyVaultSecretId": {
          "type": "string",
          "description": "Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault."
        },
        "hsm": {
          "$ref": "#/$defs/ApplicationGatewayManagedHsm",
          "description": "Managed HSM properties of the Application Gateway resource."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the SSL certificate resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewaySslCipherSuite": {
      "type": "string",
      "description": "Ssl cipher suites enums.",
      "enum": [
        "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
        "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
        "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
        "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
        "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
        "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
        "TLS_RSA_WITH_AES_256_GCM_SHA384",
        "TLS_RSA_WITH_AES_128_GCM_SHA256",
        "TLS_RSA_WITH_AES_256_CBC_SHA256",
        "TLS_RSA_WITH_AES_128_CBC_SHA256",
        "TLS_RSA_WITH_AES_256_CBC_SHA",
        "TLS_RSA_WITH_AES_128_CBC_SHA",
        "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
        "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
        "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
        "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
        "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",
        "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",
        "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
        "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
        "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
        "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
        "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
        "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewaySslCipherSuite",
        "modelAsString": true,
        "values": [
          {
            "name": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
            "value": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
            "description": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"
          },
          {
            "name": "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
            "value": "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
            "description": "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
          },
          {
            "name": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
            "value": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
            "description": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"
          },
          {
            "name": "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
            "value": "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
            "description": "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
          },
          {
            "name": "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
            "value": "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
            "description": "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"
          },
          {
            "name": "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
            "value": "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
            "description": "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"
          },
          {
            "name": "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
            "value": "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
            "description": "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
          },
          {
            "name": "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
            "value": "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
            "description": "TLS_DHE_RSA_WITH_AES_128_CBC_SHA"
          },
          {
            "name": "TLS_RSA_WITH_AES_256_GCM_SHA384",
            "value": "TLS_RSA_WITH_AES_256_GCM_SHA384",
            "description": "TLS_RSA_WITH_AES_256_GCM_SHA384"
          },
          {
            "name": "TLS_RSA_WITH_AES_128_GCM_SHA256",
            "value": "TLS_RSA_WITH_AES_128_GCM_SHA256",
            "description": "TLS_RSA_WITH_AES_128_GCM_SHA256"
          },
          {
            "name": "TLS_RSA_WITH_AES_256_CBC_SHA256",
            "value": "TLS_RSA_WITH_AES_256_CBC_SHA256",
            "description": "TLS_RSA_WITH_AES_256_CBC_SHA256"
          },
          {
            "name": "TLS_RSA_WITH_AES_128_CBC_SHA256",
            "value": "TLS_RSA_WITH_AES_128_CBC_SHA256",
            "description": "TLS_RSA_WITH_AES_128_CBC_SHA256"
          },
          {
            "name": "TLS_RSA_WITH_AES_256_CBC_SHA",
            "value": "TLS_RSA_WITH_AES_256_CBC_SHA",
            "description": "TLS_RSA_WITH_AES_256_CBC_SHA"
          },
          {
            "name": "TLS_RSA_WITH_AES_128_CBC_SHA",
            "value": "TLS_RSA_WITH_AES_128_CBC_SHA",
            "description": "TLS_RSA_WITH_AES_128_CBC_SHA"
          },
          {
            "name": "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
            "value": "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
            "description": "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
          },
          {
            "name": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
            "value": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
            "description": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
          },
          {
            "name": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
            "value": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
            "description": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"
          },
          {
            "name": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
            "value": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
            "description": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"
          },
          {
            "name": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
            "value": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
            "description": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"
          },
          {
            "name": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
            "value": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
            "description": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA"
          },
          {
            "name": "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",
            "value": "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",
            "description": "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"
          },
          {
            "name": "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",
            "value": "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",
            "description": "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
          },
          {
            "name": "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
            "value": "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
            "description": "TLS_DHE_DSS_WITH_AES_256_CBC_SHA"
          },
          {
            "name": "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
            "value": "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
            "description": "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
          },
          {
            "name": "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
            "value": "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
            "description": "TLS_RSA_WITH_3DES_EDE_CBC_SHA"
          },
          {
            "name": "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
            "value": "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
            "description": "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
          },
          {
            "name": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
            "value": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
            "description": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
          },
          {
            "name": "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
            "value": "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
            "description": "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
          }
        ]
      }
    },
    "ApplicationGatewaySslPolicy": {
      "type": "object",
      "description": "Application Gateway Ssl policy.",
      "properties": {
        "disabledSslProtocols": {
          "type": "array",
          "description": "Ssl protocols to be disabled on application gateway.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewaySslProtocol"
          }
        },
        "policyType": {
          "$ref": "#/$defs/ApplicationGatewaySslPolicyType",
          "description": "Type of Ssl Policy."
        },
        "policyName": {
          "$ref": "#/$defs/ApplicationGatewaySslPolicyName",
          "description": "Name of Ssl predefined policy."
        },
        "cipherSuites": {
          "type": "array",
          "description": "Ssl cipher suites to be enabled in the specified order to application gateway.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewaySslCipherSuite"
          }
        },
        "minProtocolVersion": {
          "$ref": "#/$defs/ApplicationGatewaySslProtocol",
          "description": "Minimum version of Ssl protocol to be supported on application gateway."
        }
      }
    },
    "ApplicationGatewaySslPolicyName": {
      "type": "string",
      "description": "Ssl predefined policy name enums.",
      "enum": [
        "AppGwSslPolicy20150501",
        "AppGwSslPolicy20170401",
        "AppGwSslPolicy20170401S",
        "AppGwSslPolicy20220101",
        "AppGwSslPolicy20220101S"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewaySslPolicyName",
        "modelAsString": true,
        "values": [
          {
            "name": "AppGwSslPolicy20150501",
            "value": "AppGwSslPolicy20150501",
            "description": "AppGwSslPolicy20150501"
          },
          {
            "name": "AppGwSslPolicy20170401",
            "value": "AppGwSslPolicy20170401",
            "description": "AppGwSslPolicy20170401"
          },
          {
            "name": "AppGwSslPolicy20170401S",
            "value": "AppGwSslPolicy20170401S",
            "description": "AppGwSslPolicy20170401S"
          },
          {
            "name": "AppGwSslPolicy20220101",
            "value": "AppGwSslPolicy20220101",
            "description": "AppGwSslPolicy20220101"
          },
          {
            "name": "AppGwSslPolicy20220101S",
            "value": "AppGwSslPolicy20220101S",
            "description": "AppGwSslPolicy20220101S"
          }
        ]
      }
    },
    "ApplicationGatewaySslPolicyType": {
      "type": "string",
      "description": "Type of Ssl Policy.",
      "enum": [
        "Predefined",
        "Custom",
        "CustomV2"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewaySslPolicyType",
        "modelAsString": true,
        "values": [
          {
            "name": "Predefined",
            "value": "Predefined",
            "description": "Predefined"
          },
          {
            "name": "Custom",
            "value": "Custom",
            "description": "Custom"
          },
          {
            "name": "CustomV2",
            "value": "CustomV2",
            "description": "CustomV2"
          }
        ]
      }
    },
    "ApplicationGatewaySslProfile": {
      "type": "object",
      "description": "SSL profile of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewaySslProfilePropertiesFormat",
          "description": "Properties of the application gateway SSL profile.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the SSL profile that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewaySslProfilePropertiesFormat": {
      "type": "object",
      "description": "Properties of SSL profile of an application gateway.",
      "properties": {
        "trustedClientCertificates": {
          "type": "array",
          "description": "Array of references to application gateway trusted client certificates.",
          "items": {
            "$ref": "#/$defs/SubResource"
          }
        },
        "sslPolicy": {
          "$ref": "#/$defs/ApplicationGatewaySslPolicy",
          "description": "SSL policy of the application gateway resource."
        },
        "clientAuthConfiguration": {
          "$ref": "#/$defs/ApplicationGatewayClientAuthConfiguration",
          "description": "Client authentication configuration of the application gateway resource."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the HTTP listener resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewaySslProtocol": {
      "type": "string",
      "description": "Ssl protocol enums.",
      "enum": [
        "TLSv1_0",
        "TLSv1_1",
        "TLSv1_2",
        "TLSv1_3"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewaySslProtocol",
        "modelAsString": true,
        "values": [
          {
            "name": "TLSv1_0",
            "value": "TLSv1_0",
            "description": "TLSv1_0"
          },
          {
            "name": "TLSv1_1",
            "value": "TLSv1_1",
            "description": "TLSv1_1"
          },
          {
            "name": "TLSv1_2",
            "value": "TLSv1_2",
            "description": "TLSv1_2"
          },
          {
            "name": "TLSv1_3",
            "value": "TLSv1_3",
            "description": "TLSv1_3"
          }
        ]
      }
    },
    "ApplicationGatewayTier": {
      "type": "string",
      "description": "Tier of an application gateway.",
      "enum": [
        "Standard",
        "WAF",
        "Standard_v2",
        "WAF_v2",
        "Basic",
        "Basic_v2",
        "Basic_WAF_v2"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayTier",
        "modelAsString": true,
        "values": [
          {
            "name": "Standard",
            "value": "Standard",
            "description": "Standard"
          },
          {
            "name": "WAF",
            "value": "WAF",
            "description": "WAF"
          },
          {
            "name": "Standard_v2",
            "value": "Standard_v2",
            "description": "Standard_v2"
          },
          {
            "name": "WAF_v2",
            "value": "WAF_v2",
            "description": "WAF_v2"
          },
          {
            "name": "Basic",
            "value": "Basic",
            "description": "Basic"
          },
          {
            "name": "Basic_v2",
            "value": "Basic_v2",
            "description": "Basic tier Application Gateway."
          },
          {
            "name": "Basic_WAF_v2",
            "value": "Basic_WAF_v2",
            "description": "Basic tier Application Gateway with WAF enabled."
          }
        ]
      }
    },
    "ApplicationGatewayTrustedClientCertificate": {
      "type": "object",
      "description": "Trusted client certificates of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayTrustedClientCertificatePropertiesFormat",
          "description": "Properties of the application gateway trusted client certificate.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the trusted client certificate that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayTrustedClientCertificatePropertiesFormat": {
      "type": "object",
      "description": "Trusted client certificates properties of an application gateway.",
      "properties": {
        "data": {
          "type": "string",
          "description": "Certificate public data."
        },
        "validatedCertData": {
          "type": "string",
          "description": "Validated certificate data.",
          "readOnly": true
        },
        "clientCertIssuerDN": {
          "type": "string",
          "description": "Distinguished name of client certificate issuer.",
          "readOnly": true
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the trusted client certificate resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayTrustedRootCertificate": {
      "type": "object",
      "description": "Trusted Root certificates of an application gateway.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayTrustedRootCertificatePropertiesFormat",
          "description": "Properties of the application gateway trusted root certificate.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the trusted root certificate that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayTrustedRootCertificatePropertiesFormat": {
      "type": "object",
      "description": "Trusted Root certificates properties of an application gateway.",
      "properties": {
        "data": {
          "type": "string",
          "description": "Certificate public data."
        },
        "keyVaultSecretId": {
          "type": "string",
          "description": "Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the trusted root certificate resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayUnAuthorizedRequestAction": {
      "type": "string",
      "description": "Unauthorized request action.",
      "enum": [
        "Deny",
        "Allow"
      ],
      "x-ms-enum": {
        "name": "ApplicationGatewayUnAuthorizedRequestAction",
        "modelAsString": true,
        "values": [
          {
            "name": "Deny",
            "value": "Deny",
            "description": "Deny"
          },
          {
            "name": "Allow",
            "value": "Allow",
            "description": "Allow"
          }
        ]
      }
    },
    "ApplicationGatewayUrlConfiguration": {
      "type": "object",
      "description": "Url configuration of the Actions set in Application Gateway.",
      "properties": {
        "modifiedPath": {
          "type": "string",
          "description": "Url path which user has provided for url rewrite. Null means no path will be updated. Default value is null."
        },
        "modifiedQueryString": {
          "type": "string",
          "description": "Query string which user has provided for url rewrite. Null means no query string will be updated. Default value is null."
        },
        "reroute": {
          "type": "boolean",
          "description": "If set as true, it will re-evaluate the url path map provided in path based request routing rules using modified path. Default value is false."
        }
      }
    },
    "ApplicationGatewayUrlPathMap": {
      "type": "object",
      "description": "UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/ApplicationGatewayUrlPathMapPropertiesFormat",
          "description": "Properties of the application gateway URL path map.",
          "x-ms-client-flatten": true
        },
        "name": {
          "type": "string",
          "description": "Name of the URL path map that is unique within an Application Gateway."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Type of the resource.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ]
    },
    "ApplicationGatewayUrlPathMapPropertiesFormat": {
      "type": "object",
      "description": "Properties of UrlPathMap of the application gateway.",
      "properties": {
        "defaultBackendAddressPool": {
          "$ref": "#/$defs/SubResource",
          "description": "Default backend address pool resource of URL path map."
        },
        "defaultBackendHttpSettings": {
          "$ref": "#/$defs/SubResource",
          "description": "Default backend http settings resource of URL path map."
        },
        "defaultRewriteRuleSet": {
          "$ref": "#/$defs/SubResource",
          "description": "Default Rewrite rule set resource of URL path map."
        },
        "defaultRedirectConfiguration": {
          "$ref": "#/$defs/SubResource",
          "description": "Default redirect configuration resource of URL path map."
        },
        "defaultLoadDistributionPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "Default Load Distribution Policy resource of URL path map."
        },
        "pathRules": {
          "type": "array",
          "description": "Path rule of URL path map resource.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayPathRule"
          }
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the URL path map resource.",
          "readOnly": true
        }
      }
    },
    "ApplicationGatewayWebApplicationFirewallConfiguration": {
      "type": "object",
      "description": "Application gateway web application firewall configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the web application firewall is enabled or not."
        },
        "firewallMode": {
          "$ref": "#/$defs/ApplicationGatewayFirewallMode",
          "description": "Web application firewall mode."
        },
        "ruleSetType": {
          "type": "string",
          "description": "The type of the web application firewall rule set. Possible values are: 'OWASP'."
        },
        "ruleSetVersion": {
          "type": "string",
          "description": "The version of the rule set type."
        },
        "disabledRuleGroups": {
          "type": "array",
          "description": "The disabled rule groups.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayFirewallDisabledRuleGroup"
          }
        },
        "requestBodyCheck": {
          "type": "boolean",
          "description": "Whether allow WAF to check request Body."
        },
        "maxRequestBodySize": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum request body size for WAF.",
          "minimum": 8,
          "maximum": 128
        },
        "maxRequestBodySizeInKb": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum request body size in Kb for WAF.",
          "minimum": 8,
          "maximum": 128
        },
        "fileUploadLimitInMb": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum file upload size in Mb for WAF.",
          "minimum": 0
        },
        "exclusions": {
          "type": "array",
          "description": "The exclusion list.",
          "items": {
            "$ref": "#/$defs/ApplicationGatewayFirewallExclusion"
          }
        }
      },
      "required": [
        "enabled",
        "firewallMode",
        "ruleSetType",
        "ruleSetVersion"
      ]
    },
    "ExtendedLocation": {
      "type": "object",
      "description": "ExtendedLocation complex type.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the extended location."
        },
        "type": {
          "$ref": "#/$defs/ExtendedLocationTypes",
          "description": "The type of the extended location."
        }
      }
    },
    "HeaderValueMatcher": {
      "type": "object",
      "description": "An optional field under \"Rewrite Action\". It lets you capture and modify the value(s) of a specific header when multiple headers with the same name exist. Currently supported for Set-Cookie Response header only. For more details, visit https://aka.ms/appgwheadercrud",
      "properties": {
        "pattern": {
          "type": "string",
          "description": "The pattern, either fixed string or regular expression, that evaluates if a header value should be selected for rewrite."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Setting this parameter to truth value with force the pattern to do a case in-sensitive comparison."
        },
        "negate": {
          "type": "boolean",
          "description": "Setting this value as truth will force to check the negation of the condition given by the user in the pattern field."
        }
      }
    },
    "IPAllocationMethod": {
      "type": "string",
      "description": "IP address allocation method.",
      "enum": [
        "Static",
        "Dynamic"
      ],
      "x-ms-enum": {
        "name": "IPAllocationMethod",
        "modelAsString": true,
        "values": [
          {
            "name": "Static",
            "value": "Static",
            "description": "Static"
          },
          {
            "name": "Dynamic",
            "value": "Dynamic",
            "description": "Dynamic"
          }
        ]
      }
    },
    "ManagedServiceIdentity": {
      "type": "object",
      "description": "Identity for the resource.",
      "properties": {
        "principalId": {
          "type": "string",
          "description": "The principal id of the system assigned identity. This property will only be provided for a system assigned identity.",
          "readOnly": true
        },
        "tenantId": {
          "type": "string",
          "description": "The tenant id of the system assigned identity. This property will only be provided for a system assigned identity.",
          "readOnly": true
        },
        "type": {
          "$ref": "#/$defs/ResourceIdentityType",
          "description": "The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine."
        },
        "userAssignedIdentities": {
          "type": "object",
          "description": "The list of user identities associated with resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.",
          "additionalProperties": {
            "$ref": "#/$defs/ManagedServiceIdentityUserAssignedIdentities"
          }
        }
      }
    },
    "NetworkInterfaceIPConfiguration": {
      "type": "object",
      "description": "IPConfiguration in a network interface.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/NetworkInterfaceIPConfigurationPropertiesFormat",
          "description": "Network interface IP configuration properties.",
          "x-ms-client-flatten": true
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResourceModel"
        }
      ]
    },
    "PrivateEndpoint": {
      "type": "object",
      "description": "Private endpoint resource.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/PrivateEndpointProperties",
          "description": "Properties of the private endpoint.",
          "x-ms-client-flatten": true
        },
        "extendedLocation": {
          "$ref": "#/$defs/ExtendedLocation",
          "description": "The extended location of the load balancer."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        }
      ]
    },
    "PrivateLinkServiceConnectionState": {
      "type": "object",
      "description": "A collection of information about the state of the connection between service consumer and provider.",
      "properties": {
        "status": {
          "type": "string",
          "description": "Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service."
        },
        "description": {
          "type": "string",
          "description": "The reason for approval/rejection of the connection."
        },
        "actionsRequired": {
          "type": "string",
          "description": "A message indicating if changes on the service provider require any updates on the consumer."
        }
      }
    },
    "ProvisioningState": {
      "type": "string",
      "description": "Provisioning states of a resource.",
      "enum": [
        "Failed",
        "Succeeded",
        "Canceled",
        "Creating",
        "Updating",
        "Deleting"
      ],
      "x-ms-enum": {
        "name": "ProvisioningState",
        "modelAsString": true,
        "values": [
          {
            "name": "Failed",
            "value": "Failed",
            "description": "Failed"
          },
          {
            "name": "Succeeded",
            "value": "Succeeded",
            "description": "Succeeded"
          },
          {
            "name": "Canceled",
            "value": "Canceled",
            "description": "Canceled"
          },
          {
            "name": "Creating",
            "value": "Creating",
            "description": "Creating"
          },
          {
            "name": "Updating",
            "value": "Updating",
            "description": "Updating"
          },
          {
            "name": "Deleting",
            "value": "Deleting",
            "description": "Deleting"
          }
        ]
      }
    },
    "Resource": {
      "type": "object",
      "description": "Common resource representation.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Resource ID."
        },
        "name": {
          "type": "string",
          "description": "Resource name.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Resource type.",
          "readOnly": true
        },
        "location": {
          "type": "string",
          "description": "Resource location."
        },
        "tags": {
          "type": "object",
          "description": "Resource tags.",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "x-ms-azure-resource": true
    },
    "SubResource": {
      "type": "object",
      "description": "Reference to another subresource.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Resource ID."
        }
      }
    },
    "SubResourceModel": {
      "type": "object",
      "description": "Reference to another subresource.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the resource."
        },
        "type": {
          "type": "string",
          "description": "Resource type.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ],
      "x-ms-azure-resource": true
    }
  }
}