{
  "description": "Generator information:\n- Generated from: /network/resource-manager/Microsoft.Network/stable/2022-07-01/applicationGateway.json\n- ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "properties": {
        "authenticationCertificates": {
          "description": "AuthenticationCertificates: Authentication certificates of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Authentication certificates of an application gateway.",
            "properties": {
              "data": {
                "description": "Data: Certificate public data.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the Kubernetes secret being referenced",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Name: Name of the authentication certificate that is unique within an Application Gateway.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "autoscaleConfiguration": {
          "description": "AutoscaleConfiguration: Autoscale Configuration.",
          "properties": {
            "maxCapacity": {
              "description": "MaxCapacity: Upper bound on number of Application Gateway capacity.",
              "minimum": 2,
              "type": "integer"
            },
            "minCapacity": {
              "description": "MinCapacity: Lower bound on number of Application Gateway capacity.",
              "minimum": 0,
              "type": "integer"
            }
          },
          "required": [
            "minCapacity"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "azureName": {
          "description": "AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it\ndoesn't have to be.",
          "type": "string"
        },
        "backendAddressPools": {
          "description": "BackendAddressPools: Backend address pool of the application gateway resource. For default limits, see [Application\nGateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Backend Address Pool of an application gateway.",
            "properties": {
              "backendAddresses": {
                "description": "BackendAddresses: Backend addresses.",
                "items": {
                  "description": "Backend address of an application gateway.",
                  "properties": {
                    "fqdn": {
                      "description": "Fqdn: Fully qualified domain name (FQDN).",
                      "type": "string"
                    },
                    "ipAddress": {
                      "description": "IpAddress: IP address.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "name": {
                "description": "Name: Name of the backend address pool that is unique within an Application Gateway.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "backendHttpSettingsCollection": {
          "description": "BackendHttpSettingsCollection: Backend http settings of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Backend address pool settings of an application gateway.",
            "properties": {
              "affinityCookieName": {
                "description": "AffinityCookieName: Cookie name to use for the affinity cookie.",
                "type": "string"
              },
              "authenticationCertificates": {
                "description": "AuthenticationCertificates: Array of references to application gateway authentication certificates.",
                "items": {
                  "description": "Reference to another ARM resource.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "connectionDraining": {
                "description": "ConnectionDraining: Connection draining of the backend http settings resource.",
                "properties": {
                  "drainTimeoutInSec": {
                    "description": "DrainTimeoutInSec: The number of seconds connection draining is active. Acceptable values are from 1 second to 3600\nseconds.",
                    "maximum": 3600,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "enabled": {
                    "description": "Enabled: Whether connection draining is enabled or not.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "drainTimeoutInSec",
                  "enabled"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "cookieBasedAffinity": {
                "description": "CookieBasedAffinity: Cookie based affinity.",
                "enum": [
                  "Disabled",
                  "Enabled"
                ],
                "type": "string"
              },
              "hostName": {
                "description": "HostName: Host header to be sent to the backend servers.",
                "type": "string"
              },
              "name": {
                "description": "Name: Name of the backend http settings that is unique within an Application Gateway.",
                "type": "string"
              },
              "path": {
                "description": "Path: Path which should be used as a prefix for all HTTP requests. Null means no path will be prefixed. Default value is\nnull.",
                "type": "string"
              },
              "pickHostNameFromBackendAddress": {
                "description": "PickHostNameFromBackendAddress: Whether to pick host header should be picked from the host name of the backend server.\nDefault value is false.",
                "type": "boolean"
              },
              "port": {
                "description": "Port: The destination port on the backend.",
                "type": "integer"
              },
              "probe": {
                "description": "Probe: Probe resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "probeEnabled": {
                "description": "ProbeEnabled: Whether the probe is enabled. Default value is false.",
                "type": "boolean"
              },
              "protocol": {
                "description": "Protocol: The protocol used to communicate with the backend.",
                "enum": [
                  "Http",
                  "Https",
                  "Tcp",
                  "Tls"
                ],
                "type": "string"
              },
              "requestTimeout": {
                "description": "RequestTimeout: Request timeout in seconds. Application Gateway will fail the request if response is not received within\nRequestTimeout. Acceptable values are from 1 second to 86400 seconds.",
                "type": "integer"
              },
              "trustedRootCertificates": {
                "description": "TrustedRootCertificates: Array of references to application gateway trusted root certificates.",
                "items": {
                  "description": "Reference to another ARM resource.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "backendSettingsCollection": {
          "description": "BackendSettingsCollection: Backend settings of the application gateway resource. For default limits, see [Application\nGateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Backend address pool settings of an application gateway.",
            "properties": {
              "hostName": {
                "description": "HostName: Server name indication to be sent to the backend servers for Tls protocol.",
                "type": "string"
              },
              "name": {
                "description": "Name: Name of the backend settings that is unique within an Application Gateway.",
                "type": "string"
              },
              "pickHostNameFromBackendAddress": {
                "description": "PickHostNameFromBackendAddress: Whether to pick server name indication from the host name of the backend server for Tls\nprotocol. Default value is false.",
                "type": "boolean"
              },
              "port": {
                "description": "Port: The destination port on the backend.",
                "type": "integer"
              },
              "probe": {
                "description": "Probe: Probe resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "protocol": {
                "description": "Protocol: The protocol used to communicate with the backend.",
                "enum": [
                  "Http",
                  "Https",
                  "Tcp",
                  "Tls"
                ],
                "type": "string"
              },
              "timeout": {
                "description": "Timeout: Connection timeout in seconds. Application Gateway will fail the request if response is not received within\nConnectionTimeout. Acceptable values are from 1 second to 86400 seconds.",
                "type": "integer"
              },
              "trustedRootCertificates": {
                "description": "TrustedRootCertificates: Array of references to application gateway trusted root certificates.",
                "items": {
                  "description": "Reference to another ARM resource.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "customErrorConfigurations": {
          "description": "CustomErrorConfigurations: Custom error configurations of the application gateway resource.",
          "items": {
            "description": "Customer error of an application gateway.",
            "properties": {
              "customErrorPageUrl": {
                "description": "CustomErrorPageUrl: Error page URL of the application gateway customer error.",
                "type": "string"
              },
              "statusCode": {
                "description": "StatusCode: Status code of the application gateway customer error.",
                "enum": [
                  "HttpStatus403",
                  "HttpStatus502"
                ],
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "enableFips": {
          "description": "EnableFips: Whether FIPS is enabled on the application gateway resource.",
          "type": "boolean"
        },
        "enableHttp2": {
          "description": "EnableHttp2: Whether HTTP2 is enabled on the application gateway resource.",
          "type": "boolean"
        },
        "firewallPolicy": {
          "description": "FirewallPolicy: Reference to the FirewallPolicy resource.",
          "properties": {
            "reference": {
              "description": "Reference: Resource ID.",
              "properties": {
                "armId": {
                  "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                  "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                  "type": "string"
                },
                "group": {
                  "description": "Group is the Kubernetes group of the resource.",
                  "type": "string"
                },
                "kind": {
                  "description": "Kind is the Kubernetes kind of the resource.",
                  "type": "string"
                },
                "name": {
                  "description": "Name is the Kubernetes name of the resource.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "forceFirewallPolicyAssociation": {
          "description": "ForceFirewallPolicyAssociation: If true, associates a firewall policy with an application gateway regardless whether the\npolicy differs from the WAF Config.",
          "type": "boolean"
        },
        "frontendIPConfigurations": {
          "description": "FrontendIPConfigurations: Frontend IP addresses of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Frontend IP configuration of an application gateway.",
            "properties": {
              "name": {
                "description": "Name: Name of the frontend IP configuration that is unique within an Application Gateway.",
                "type": "string"
              },
              "privateIPAddress": {
                "description": "PrivateIPAddress: PrivateIPAddress of the network interface IP Configuration.",
                "type": "string"
              },
              "privateIPAllocationMethod": {
                "description": "PrivateIPAllocationMethod: The private IP address allocation method.",
                "enum": [
                  "Dynamic",
                  "Static"
                ],
                "type": "string"
              },
              "privateLinkConfiguration": {
                "description": "PrivateLinkConfiguration: Reference to the application gateway private link configuration.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "publicIPAddress": {
                "description": "PublicIPAddress: Reference to the PublicIP resource.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "subnet": {
                "description": "Subnet: Reference to the subnet resource.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "frontendPorts": {
          "description": "FrontendPorts: Frontend ports of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Frontend port of an application gateway.",
            "properties": {
              "name": {
                "description": "Name: Name of the frontend port that is unique within an Application Gateway.",
                "type": "string"
              },
              "port": {
                "description": "Port: Frontend port.",
                "type": "integer"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "gatewayIPConfigurations": {
          "description": "GatewayIPConfigurations: Subnets of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.",
            "properties": {
              "name": {
                "description": "Name: Name of the IP configuration that is unique within an Application Gateway.",
                "type": "string"
              },
              "subnet": {
                "description": "Subnet: Reference to the subnet resource. A subnet from where application gateway gets its private address.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "globalConfiguration": {
          "description": "GlobalConfiguration: Global Configuration.",
          "properties": {
            "enableRequestBuffering": {
              "description": "EnableRequestBuffering: Enable request buffering.",
              "type": "boolean"
            },
            "enableResponseBuffering": {
              "description": "EnableResponseBuffering: Enable response buffering.",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "httpListeners": {
          "description": "HttpListeners: Http listeners of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Http listener of an application gateway.",
            "properties": {
              "customErrorConfigurations": {
                "description": "CustomErrorConfigurations: Custom error configurations of the HTTP listener.",
                "items": {
                  "description": "Customer error of an application gateway.",
                  "properties": {
                    "customErrorPageUrl": {
                      "description": "CustomErrorPageUrl: Error page URL of the application gateway customer error.",
                      "type": "string"
                    },
                    "statusCode": {
                      "description": "StatusCode: Status code of the application gateway customer error.",
                      "enum": [
                        "HttpStatus403",
                        "HttpStatus502"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "firewallPolicy": {
                "description": "FirewallPolicy: Reference to the FirewallPolicy resource.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "frontendIPConfiguration": {
                "description": "FrontendIPConfiguration: Frontend IP configuration resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "frontendPort": {
                "description": "FrontendPort: Frontend port resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "hostName": {
                "description": "HostName: Host name of HTTP listener.",
                "type": "string"
              },
              "hostNames": {
                "description": "HostNames: List of Host names for HTTP Listener that allows special wildcard characters as well.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "name": {
                "description": "Name: Name of the HTTP listener that is unique within an Application Gateway.",
                "type": "string"
              },
              "protocol": {
                "description": "Protocol: Protocol of the HTTP listener.",
                "enum": [
                  "Http",
                  "Https",
                  "Tcp",
                  "Tls"
                ],
                "type": "string"
              },
              "requireServerNameIndication": {
                "description": "RequireServerNameIndication: Applicable only if protocol is https. Enables SNI for multi-hosting.",
                "type": "boolean"
              },
              "sslCertificate": {
                "description": "SslCertificate: SSL certificate resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "sslProfile": {
                "description": "SslProfile: SSL profile resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "identity": {
          "description": "Identity: The identity of the application gateway, if configured.",
          "properties": {
            "type": {
              "description": "Type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly\ncreated identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual\nmachine.",
              "enum": [
                "None",
                "SystemAssigned",
                "SystemAssigned, UserAssigned",
                "UserAssigned"
              ],
              "type": "string"
            },
            "userAssignedIdentities": {
              "description": "UserAssignedIdentities: The list of user identities associated with resource. The user identity dictionary key\nreferences will be ARM resource ids in the form:\n'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.",
              "items": {
                "description": "Information about the user assigned identity for the resource",
                "properties": {
                  "reference": {
                    "description": "ResourceReference represents a resource reference, either to a Kubernetes resource or directly to an Azure resource via ARMID",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "listeners": {
          "description": "Listeners: Listeners of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Listener of an application gateway.",
            "properties": {
              "frontendIPConfiguration": {
                "description": "FrontendIPConfiguration: Frontend IP configuration resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "frontendPort": {
                "description": "FrontendPort: Frontend port resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Name: Name of the listener that is unique within an Application Gateway.",
                "type": "string"
              },
              "protocol": {
                "description": "Protocol: Protocol of the listener.",
                "enum": [
                  "Http",
                  "Https",
                  "Tcp",
                  "Tls"
                ],
                "type": "string"
              },
              "sslCertificate": {
                "description": "SslCertificate: SSL certificate resource of an application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "sslProfile": {
                "description": "SslProfile: SSL profile resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "loadDistributionPolicies": {
          "description": "LoadDistributionPolicies: Load distribution policies of the application gateway resource.",
          "items": {
            "description": "Load Distribution Policy of an application gateway.",
            "properties": {
              "loadDistributionAlgorithm": {
                "description": "LoadDistributionAlgorithm: Load Distribution Targets resource of an application gateway.",
                "enum": [
                  "IpHash",
                  "LeastConnections",
                  "RoundRobin"
                ],
                "type": "string"
              },
              "loadDistributionTargets": {
                "description": "LoadDistributionTargets: Load Distribution Targets resource of an application gateway.",
                "items": {
                  "description": "Load Distribution Target of an application gateway.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "name": {
                "description": "Name: Name of the load distribution policy that is unique within an Application Gateway.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "location": {
          "description": "Location: Resource location.",
          "type": "string"
        },
        "operatorSpec": {
          "description": "OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not\npassed directly to Azure",
          "properties": {
            "configMapExpressions": {
              "description": "ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "secretExpressions": {
              "description": "SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "owner": {
          "description": "Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also\ncontrols the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a\nreference to a resources.azure.com/ResourceGroup resource",
          "properties": {
            "armId": {
              "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
              "type": "string"
            },
            "name": {
              "description": "This is the name of the Kubernetes resource to reference.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "privateLinkConfigurations": {
          "description": "PrivateLinkConfigurations: PrivateLink configurations on application gateway.",
          "items": {
            "description": "Private Link Configuration on an application gateway.",
            "properties": {
              "ipConfigurations": {
                "description": "IpConfigurations: An array of application gateway private link ip configurations.",
                "items": {
                  "description": "The application gateway private link ip configuration.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "name": {
                "description": "Name: Name of the private link configuration that is unique within an Application Gateway.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "probes": {
          "description": "Probes: Probes of the application gateway resource.",
          "items": {
            "description": "Probe of the application gateway.",
            "properties": {
              "host": {
                "description": "Host: Host name to send the probe to.",
                "type": "string"
              },
              "interval": {
                "description": "Interval: The probing interval in seconds. This is the time interval between two consecutive probes. Acceptable values\nare from 1 second to 86400 seconds.",
                "type": "integer"
              },
              "match": {
                "description": "Match: Criterion for classifying a healthy probe response.",
                "properties": {
                  "body": {
                    "description": "Body: Body that must be contained in the health response. Default value is empty.",
                    "type": "string"
                  },
                  "statusCodes": {
                    "description": "StatusCodes: Allowed ranges of healthy status codes. Default range of healthy status codes is 200-399.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "minServers": {
                "description": "MinServers: Minimum number of servers that are always marked healthy. Default value is 0.",
                "type": "integer"
              },
              "name": {
                "description": "Name: Name of the probe that is unique within an Application Gateway.",
                "type": "string"
              },
              "path": {
                "description": "Path: Relative path of probe. Valid path starts from '/'. Probe is sent to <Protocol>://<host>:<port><path>.",
                "type": "string"
              },
              "pickHostNameFromBackendHttpSettings": {
                "description": "PickHostNameFromBackendHttpSettings: Whether the host header should be picked from the backend http settings. Default\nvalue is false.",
                "type": "boolean"
              },
              "pickHostNameFromBackendSettings": {
                "description": "PickHostNameFromBackendSettings: Whether the server name indication should be picked from the backend settings for Tls\nprotocol. Default value is false.",
                "type": "boolean"
              },
              "port": {
                "description": "Port: Custom port which will be used for probing the backend servers. The valid value ranges from 1 to 65535. In case\nnot set, port from http settings will be used. This property is valid for Standard_v2 and WAF_v2 only.",
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              "protocol": {
                "description": "Protocol: The protocol used for the probe.",
                "enum": [
                  "Http",
                  "Https",
                  "Tcp",
                  "Tls"
                ],
                "type": "string"
              },
              "timeout": {
                "description": "Timeout: The probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout\nperiod. Acceptable values are from 1 second to 86400 seconds.",
                "type": "integer"
              },
              "unhealthyThreshold": {
                "description": "UnhealthyThreshold: The probe retry count. Backend server is marked down after consecutive probe failure count reaches\nUnhealthyThreshold. Acceptable values are from 1 second to 20.",
                "type": "integer"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "redirectConfigurations": {
          "description": "RedirectConfigurations: Redirect configurations of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Redirect configuration of an application gateway.",
            "properties": {
              "includePath": {
                "description": "IncludePath: Include path in the redirected url.",
                "type": "boolean"
              },
              "includeQueryString": {
                "description": "IncludeQueryString: Include query string in the redirected url.",
                "type": "boolean"
              },
              "name": {
                "description": "Name: Name of the redirect configuration that is unique within an Application Gateway.",
                "type": "string"
              },
              "pathRules": {
                "description": "PathRules: Path rules specifying redirect configuration.",
                "items": {
                  "description": "Reference to another ARM resource.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "redirectType": {
                "description": "RedirectType: HTTP redirection type.",
                "enum": [
                  "Found",
                  "Permanent",
                  "SeeOther",
                  "Temporary"
                ],
                "type": "string"
              },
              "requestRoutingRules": {
                "description": "RequestRoutingRules: Request routing specifying redirect configuration.",
                "items": {
                  "description": "Reference to another ARM resource.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "targetListener": {
                "description": "TargetListener: Reference to a listener to redirect the request to.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "targetUrl": {
                "description": "TargetUrl: Url to redirect the request to.",
                "type": "string"
              },
              "urlPathMaps": {
                "description": "UrlPathMaps: Url path maps specifying default redirect configuration.",
                "items": {
                  "description": "Reference to another ARM resource.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "requestRoutingRules": {
          "description": "RequestRoutingRules: Request routing rules of the application gateway resource.",
          "items": {
            "description": "Request routing rule of an application gateway.",
            "properties": {
              "backendAddressPool": {
                "description": "BackendAddressPool: Backend address pool resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "backendHttpSettings": {
                "description": "BackendHttpSettings: Backend http settings resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "httpListener": {
                "description": "HttpListener: Http listener resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "loadDistributionPolicy": {
                "description": "LoadDistributionPolicy: Load Distribution Policy resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Name: Name of the request routing rule that is unique within an Application Gateway.",
                "type": "string"
              },
              "priority": {
                "description": "Priority: Priority of the request routing rule.",
                "maximum": 20000,
                "minimum": 1,
                "type": "integer"
              },
              "redirectConfiguration": {
                "description": "RedirectConfiguration: Redirect configuration resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "rewriteRuleSet": {
                "description": "RewriteRuleSet: Rewrite Rule Set resource in Basic rule of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "ruleType": {
                "description": "RuleType: Rule type.",
                "enum": [
                  "Basic",
                  "PathBasedRouting"
                ],
                "type": "string"
              },
              "urlPathMap": {
                "description": "UrlPathMap: URL path map resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "rewriteRuleSets": {
          "description": "RewriteRuleSets: Rewrite rules for the application gateway resource.",
          "items": {
            "description": "Rewrite rule set of an application gateway.",
            "properties": {
              "name": {
                "description": "Name: Name of the rewrite rule set that is unique within an Application Gateway.",
                "type": "string"
              },
              "rewriteRules": {
                "description": "RewriteRules: Rewrite rules in the rewrite rule set.",
                "items": {
                  "description": "Rewrite rule of an application gateway.",
                  "properties": {
                    "actionSet": {
                      "description": "ActionSet: Set of actions to be done as part of the rewrite Rule.",
                      "properties": {
                        "requestHeaderConfigurations": {
                          "description": "RequestHeaderConfigurations: Request Header Actions in the Action Set.",
                          "items": {
                            "description": "Header configuration of the Actions set in Application Gateway.",
                            "properties": {
                              "headerName": {
                                "description": "HeaderName: Header name of the header configuration.",
                                "type": "string"
                              },
                              "headerValue": {
                                "description": "HeaderValue: Header value of the header configuration.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "responseHeaderConfigurations": {
                          "description": "ResponseHeaderConfigurations: Response Header Actions in the Action Set.",
                          "items": {
                            "description": "Header configuration of the Actions set in Application Gateway.",
                            "properties": {
                              "headerName": {
                                "description": "HeaderName: Header name of the header configuration.",
                                "type": "string"
                              },
                              "headerValue": {
                                "description": "HeaderValue: Header value of the header configuration.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "urlConfiguration": {
                          "description": "UrlConfiguration: Url Configuration Action in the Action Set.",
                          "properties": {
                            "modifiedPath": {
                              "description": "ModifiedPath: Url path which user has provided for url rewrite. Null means no path will be updated. Default value is\nnull.",
                              "type": "string"
                            },
                            "modifiedQueryString": {
                              "description": "ModifiedQueryString: Query string which user has provided for url rewrite. Null means no query string will be updated.\nDefault value is null.",
                              "type": "string"
                            },
                            "reroute": {
                              "description": "Reroute: If set as true, it will re-evaluate the url path map provided in path based request routing rules using\nmodified path. Default value is false.",
                              "type": "boolean"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "conditions": {
                      "description": "Conditions: Conditions based on which the action set execution will be evaluated.",
                      "items": {
                        "description": "Set of conditions in the Rewrite Rule in Application Gateway.",
                        "properties": {
                          "ignoreCase": {
                            "description": "IgnoreCase: Setting this parameter to truth value with force the pattern to do a case in-sensitive comparison.",
                            "type": "boolean"
                          },
                          "negate": {
                            "description": "Negate: Setting this value as truth will force to check the negation of the condition given by the user.",
                            "type": "boolean"
                          },
                          "pattern": {
                            "description": "Pattern: The pattern, either fixed string or regular expression, that evaluates the truthfulness of the condition.",
                            "type": "string"
                          },
                          "variable": {
                            "description": "Variable: The condition parameter of the RewriteRuleCondition.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "name": {
                      "description": "Name: Name of the rewrite rule that is unique within an Application Gateway.",
                      "type": "string"
                    },
                    "ruleSequence": {
                      "description": "RuleSequence: Rule Sequence of the rewrite rule that determines the order of execution of a particular rule in a\nRewriteRuleSet.",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "routingRules": {
          "description": "RoutingRules: Routing rules of the application gateway resource.",
          "items": {
            "description": "Routing rule of an application gateway.",
            "properties": {
              "backendAddressPool": {
                "description": "BackendAddressPool: Backend address pool resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "backendSettings": {
                "description": "BackendSettings: Backend settings resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "listener": {
                "description": "Listener: Listener resource of the application gateway.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Name: Name of the routing rule that is unique within an Application Gateway.",
                "type": "string"
              },
              "priority": {
                "description": "Priority: Priority of the routing rule.",
                "maximum": 20000,
                "minimum": 1,
                "type": "integer"
              },
              "ruleType": {
                "description": "RuleType: Rule type.",
                "enum": [
                  "Basic",
                  "PathBasedRouting"
                ],
                "type": "string"
              }
            },
            "required": [
              "priority"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "sku": {
          "description": "Sku: SKU of the application gateway resource.",
          "properties": {
            "capacity": {
              "description": "Capacity: Capacity (instance count) of an application gateway.",
              "type": "integer"
            },
            "name": {
              "description": "Name: Name of an application gateway SKU.",
              "enum": [
                "Standard_Large",
                "Standard_Medium",
                "Standard_Small",
                "Standard_v2",
                "WAF_Large",
                "WAF_Medium",
                "WAF_v2"
              ],
              "type": "string"
            },
            "tier": {
              "description": "Tier: Tier of an application gateway.",
              "enum": [
                "Standard",
                "Standard_v2",
                "WAF",
                "WAF_v2"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sslCertificates": {
          "description": "SslCertificates: SSL certificates of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "SSL certificates of an application gateway.",
            "properties": {
              "data": {
                "description": "Data: Base-64 encoded pfx certificate. Only applicable in PUT Request.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the Kubernetes secret being referenced",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "keyVaultSecretId": {
                "description": "KeyVaultSecretId: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.",
                "type": "string"
              },
              "name": {
                "description": "Name: Name of the SSL certificate that is unique within an Application Gateway.",
                "type": "string"
              },
              "password": {
                "description": "Password: Password for the pfx file specified in data. Only applicable in PUT request.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the Kubernetes secret being referenced",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "sslPolicy": {
          "description": "SslPolicy: SSL policy of the application gateway resource.",
          "properties": {
            "cipherSuites": {
              "description": "CipherSuites: Ssl cipher suites to be enabled in the specified order to application gateway.",
              "items": {
                "description": "Ssl cipher suites enums.",
                "enum": [
                  "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
                  "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
                  "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",
                  "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
                  "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",
                  "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
                  "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
                  "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
                  "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
                  "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
                  "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
                  "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
                  "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
                  "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
                  "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
                  "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
                  "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
                  "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
                  "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
                  "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
                  "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
                  "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
                  "TLS_RSA_WITH_AES_128_CBC_SHA",
                  "TLS_RSA_WITH_AES_128_CBC_SHA256",
                  "TLS_RSA_WITH_AES_128_GCM_SHA256",
                  "TLS_RSA_WITH_AES_256_CBC_SHA",
                  "TLS_RSA_WITH_AES_256_CBC_SHA256",
                  "TLS_RSA_WITH_AES_256_GCM_SHA384"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "disabledSslProtocols": {
              "description": "DisabledSslProtocols: Ssl protocols to be disabled on application gateway.",
              "items": {
                "description": "Ssl protocol enums.",
                "enum": [
                  "TLSv1_0",
                  "TLSv1_1",
                  "TLSv1_2",
                  "TLSv1_3"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "minProtocolVersion": {
              "description": "MinProtocolVersion: Minimum version of Ssl protocol to be supported on application gateway.",
              "enum": [
                "TLSv1_0",
                "TLSv1_1",
                "TLSv1_2",
                "TLSv1_3"
              ],
              "type": "string"
            },
            "policyName": {
              "description": "PolicyName: Name of Ssl predefined policy.",
              "enum": [
                "AppGwSslPolicy20150501",
                "AppGwSslPolicy20170401",
                "AppGwSslPolicy20170401S",
                "AppGwSslPolicy20220101",
                "AppGwSslPolicy20220101S"
              ],
              "type": "string"
            },
            "policyType": {
              "description": "PolicyType: Type of Ssl Policy.",
              "enum": [
                "Custom",
                "CustomV2",
                "Predefined"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sslProfiles": {
          "description": "SslProfiles: SSL profiles of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "SSL profile of an application gateway.",
            "properties": {
              "clientAuthConfiguration": {
                "description": "ClientAuthConfiguration: Client authentication configuration of the application gateway resource.",
                "properties": {
                  "verifyClientCertIssuerDN": {
                    "description": "VerifyClientCertIssuerDN: Verify client certificate issuer name on the application gateway.",
                    "type": "boolean"
                  },
                  "verifyClientRevocation": {
                    "description": "VerifyClientRevocation: Verify client certificate revocation status.",
                    "enum": [
                      "None",
                      "OCSP"
                    ],
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Name: Name of the SSL profile that is unique within an Application Gateway.",
                "type": "string"
              },
              "sslPolicy": {
                "description": "SslPolicy: SSL policy of the application gateway resource.",
                "properties": {
                  "cipherSuites": {
                    "description": "CipherSuites: Ssl cipher suites to be enabled in the specified order to application gateway.",
                    "items": {
                      "description": "Ssl cipher suites enums.",
                      "enum": [
                        "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
                        "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
                        "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",
                        "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
                        "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",
                        "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
                        "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
                        "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
                        "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
                        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
                        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
                        "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
                        "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
                        "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
                        "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
                        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
                        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
                        "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
                        "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
                        "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
                        "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
                        "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
                        "TLS_RSA_WITH_AES_128_CBC_SHA",
                        "TLS_RSA_WITH_AES_128_CBC_SHA256",
                        "TLS_RSA_WITH_AES_128_GCM_SHA256",
                        "TLS_RSA_WITH_AES_256_CBC_SHA",
                        "TLS_RSA_WITH_AES_256_CBC_SHA256",
                        "TLS_RSA_WITH_AES_256_GCM_SHA384"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "disabledSslProtocols": {
                    "description": "DisabledSslProtocols: Ssl protocols to be disabled on application gateway.",
                    "items": {
                      "description": "Ssl protocol enums.",
                      "enum": [
                        "TLSv1_0",
                        "TLSv1_1",
                        "TLSv1_2",
                        "TLSv1_3"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "minProtocolVersion": {
                    "description": "MinProtocolVersion: Minimum version of Ssl protocol to be supported on application gateway.",
                    "enum": [
                      "TLSv1_0",
                      "TLSv1_1",
                      "TLSv1_2",
                      "TLSv1_3"
                    ],
                    "type": "string"
                  },
                  "policyName": {
                    "description": "PolicyName: Name of Ssl predefined policy.",
                    "enum": [
                      "AppGwSslPolicy20150501",
                      "AppGwSslPolicy20170401",
                      "AppGwSslPolicy20170401S",
                      "AppGwSslPolicy20220101",
                      "AppGwSslPolicy20220101S"
                    ],
                    "type": "string"
                  },
                  "policyType": {
                    "description": "PolicyType: Type of Ssl Policy.",
                    "enum": [
                      "Custom",
                      "CustomV2",
                      "Predefined"
                    ],
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "trustedClientCertificates": {
                "description": "TrustedClientCertificates: Array of references to application gateway trusted client certificates.",
                "items": {
                  "description": "Reference to another ARM resource.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Resource tags.",
          "type": "object"
        },
        "trustedClientCertificates": {
          "description": "TrustedClientCertificates: Trusted client certificates of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Trusted client certificates of an application gateway.",
            "properties": {
              "data": {
                "description": "Data: Certificate public data.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the Kubernetes secret being referenced",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Name: Name of the trusted client certificate that is unique within an Application Gateway.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "trustedRootCertificates": {
          "description": "TrustedRootCertificates: Trusted Root certificates of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Trusted Root certificates of an application gateway.",
            "properties": {
              "data": {
                "description": "Data: Certificate public data.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the Kubernetes secret being referenced",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "keyVaultSecretId": {
                "description": "KeyVaultSecretId: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.",
                "type": "string"
              },
              "name": {
                "description": "Name: Name of the trusted root certificate that is unique within an Application Gateway.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "urlPathMaps": {
          "description": "UrlPathMaps: URL path map of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.",
            "properties": {
              "defaultBackendAddressPool": {
                "description": "DefaultBackendAddressPool: Default backend address pool resource of URL path map.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "defaultBackendHttpSettings": {
                "description": "DefaultBackendHttpSettings: Default backend http settings resource of URL path map.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "defaultLoadDistributionPolicy": {
                "description": "DefaultLoadDistributionPolicy: Default Load Distribution Policy resource of URL path map.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "defaultRedirectConfiguration": {
                "description": "DefaultRedirectConfiguration: Default redirect configuration resource of URL path map.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "defaultRewriteRuleSet": {
                "description": "DefaultRewriteRuleSet: Default Rewrite rule set resource of URL path map.",
                "properties": {
                  "reference": {
                    "description": "Reference: Resource ID.",
                    "properties": {
                      "armId": {
                        "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                        "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                        "type": "string"
                      },
                      "group": {
                        "description": "Group is the Kubernetes group of the resource.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "Kind is the Kubernetes kind of the resource.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the Kubernetes name of the resource.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Name: Name of the URL path map that is unique within an Application Gateway.",
                "type": "string"
              },
              "pathRules": {
                "description": "PathRules: Path rule of URL path map resource.",
                "items": {
                  "description": "Path rule of URL path map of an application gateway.",
                  "properties": {
                    "reference": {
                      "description": "Reference: Resource ID.",
                      "properties": {
                        "armId": {
                          "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                          "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                          "type": "string"
                        },
                        "group": {
                          "description": "Group is the Kubernetes group of the resource.",
                          "type": "string"
                        },
                        "kind": {
                          "description": "Kind is the Kubernetes kind of the resource.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name is the Kubernetes name of the resource.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "webApplicationFirewallConfiguration": {
          "description": "WebApplicationFirewallConfiguration: Web application firewall configuration.",
          "properties": {
            "disabledRuleGroups": {
              "description": "DisabledRuleGroups: The disabled rule groups.",
              "items": {
                "description": "Allows to disable rules within a rule group or an entire rule group.",
                "properties": {
                  "ruleGroupName": {
                    "description": "RuleGroupName: The name of the rule group that will be disabled.",
                    "type": "string"
                  },
                  "rules": {
                    "description": "Rules: The list of rules that will be disabled. If null, all rules of the rule group will be disabled.",
                    "items": {
                      "type": "integer"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "ruleGroupName"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled: Whether the web application firewall is enabled or not.",
              "type": "boolean"
            },
            "exclusions": {
              "description": "Exclusions: The exclusion list.",
              "items": {
                "description": "Allow to exclude some variable satisfy the condition for the WAF check.",
                "properties": {
                  "matchVariable": {
                    "description": "MatchVariable: The variable to be excluded.",
                    "type": "string"
                  },
                  "selector": {
                    "description": "Selector: When matchVariable is a collection, operator used to specify which elements in the collection this exclusion\napplies to.",
                    "type": "string"
                  },
                  "selectorMatchOperator": {
                    "description": "SelectorMatchOperator: When matchVariable is a collection, operate on the selector to specify which elements in the\ncollection this exclusion applies to.",
                    "type": "string"
                  }
                },
                "required": [
                  "matchVariable",
                  "selector",
                  "selectorMatchOperator"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "fileUploadLimitInMb": {
              "description": "FileUploadLimitInMb: Maximum file upload size in Mb for WAF.",
              "minimum": 0,
              "type": "integer"
            },
            "firewallMode": {
              "description": "FirewallMode: Web application firewall mode.",
              "enum": [
                "Detection",
                "Prevention"
              ],
              "type": "string"
            },
            "maxRequestBodySize": {
              "description": "MaxRequestBodySize: Maximum request body size for WAF.",
              "maximum": 128,
              "minimum": 8,
              "type": "integer"
            },
            "maxRequestBodySizeInKb": {
              "description": "MaxRequestBodySizeInKb: Maximum request body size in Kb for WAF.",
              "maximum": 128,
              "minimum": 8,
              "type": "integer"
            },
            "requestBodyCheck": {
              "description": "RequestBodyCheck: Whether allow WAF to check request Body.",
              "type": "boolean"
            },
            "ruleSetType": {
              "description": "RuleSetType: The type of the web application firewall rule set. Possible values are: 'OWASP'.",
              "type": "string"
            },
            "ruleSetVersion": {
              "description": "RuleSetVersion: The version of the rule set type.",
              "type": "string"
            }
          },
          "required": [
            "enabled",
            "firewallMode",
            "ruleSetType",
            "ruleSetVersion"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "zones": {
          "description": "Zones: A list of availability zones denoting where the resource needs to come from.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "owner"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "Application gateway resource.",
      "properties": {
        "authenticationCertificates": {
          "description": "AuthenticationCertificates: Authentication certificates of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Authentication certificates of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "autoscaleConfiguration": {
          "description": "AutoscaleConfiguration: Autoscale Configuration.",
          "properties": {
            "maxCapacity": {
              "description": "MaxCapacity: Upper bound on number of Application Gateway capacity.",
              "type": "integer"
            },
            "minCapacity": {
              "description": "MinCapacity: Lower bound on number of Application Gateway capacity.",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "backendAddressPools": {
          "description": "BackendAddressPools: Backend address pool of the application gateway resource. For default limits, see [Application\nGateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Backend Address Pool of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "backendHttpSettingsCollection": {
          "description": "BackendHttpSettingsCollection: Backend http settings of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Backend address pool settings of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "backendSettingsCollection": {
          "description": "BackendSettingsCollection: Backend settings of the application gateway resource. For default limits, see [Application\nGateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Backend address pool settings of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "conditions": {
          "description": "Conditions: The observed state of the resource",
          "items": {
            "description": "Condition defines an extension to status (an observation) of a resource",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "Message is a human readable message indicating details about the transition. This field may be empty.",
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration is the .metadata.generation that the condition was set based upon. For instance, if\n.metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "type": "integer"
              },
              "reason": {
                "description": "Reason for the condition's last transition.\nReasons are upper CamelCase (PascalCase) with no spaces. A reason is always provided, this field will not be empty.",
                "type": "string"
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition.\nFor conditions which have positive polarity (Status == True is their normal/healthy state), this will be omitted when Status == True\nFor conditions which have negative polarity (Status == False is their normal/healthy state), this will be omitted when Status == False.\nThis is omitted in all cases when Status == Unknown",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, or Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "customErrorConfigurations": {
          "description": "CustomErrorConfigurations: Custom error configurations of the application gateway resource.",
          "items": {
            "description": "Customer error of an application gateway.",
            "properties": {
              "customErrorPageUrl": {
                "description": "CustomErrorPageUrl: Error page URL of the application gateway customer error.",
                "type": "string"
              },
              "statusCode": {
                "description": "StatusCode: Status code of the application gateway customer error.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "enableFips": {
          "description": "EnableFips: Whether FIPS is enabled on the application gateway resource.",
          "type": "boolean"
        },
        "enableHttp2": {
          "description": "EnableHttp2: Whether HTTP2 is enabled on the application gateway resource.",
          "type": "boolean"
        },
        "etag": {
          "description": "Etag: A unique read-only string that changes whenever the resource is updated.",
          "type": "string"
        },
        "firewallPolicy": {
          "description": "FirewallPolicy: Reference to the FirewallPolicy resource.",
          "properties": {
            "id": {
              "description": "Id: Resource ID.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "forceFirewallPolicyAssociation": {
          "description": "ForceFirewallPolicyAssociation: If true, associates a firewall policy with an application gateway regardless whether the\npolicy differs from the WAF Config.",
          "type": "boolean"
        },
        "frontendIPConfigurations": {
          "description": "FrontendIPConfigurations: Frontend IP addresses of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Frontend IP configuration of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "frontendPorts": {
          "description": "FrontendPorts: Frontend ports of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Frontend port of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "gatewayIPConfigurations": {
          "description": "GatewayIPConfigurations: Subnets of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "globalConfiguration": {
          "description": "GlobalConfiguration: Global Configuration.",
          "properties": {
            "enableRequestBuffering": {
              "description": "EnableRequestBuffering: Enable request buffering.",
              "type": "boolean"
            },
            "enableResponseBuffering": {
              "description": "EnableResponseBuffering: Enable response buffering.",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "httpListeners": {
          "description": "HttpListeners: Http listeners of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Http listener of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "id": {
          "description": "Id: Resource ID.",
          "type": "string"
        },
        "identity": {
          "description": "Identity: The identity of the application gateway, if configured.",
          "properties": {
            "principalId": {
              "description": "PrincipalId: The principal id of the system assigned identity. This property will only be provided for a system assigned\nidentity.",
              "type": "string"
            },
            "tenantId": {
              "description": "TenantId: The tenant id of the system assigned identity. This property will only be provided for a system assigned\nidentity.",
              "type": "string"
            },
            "type": {
              "description": "Type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly\ncreated identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual\nmachine.",
              "type": "string"
            },
            "userAssignedIdentities": {
              "additionalProperties": {
                "properties": {
                  "clientId": {
                    "description": "ClientId: The client id of user assigned identity.",
                    "type": "string"
                  },
                  "principalId": {
                    "description": "PrincipalId: The principal id of user assigned identity.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "description": "UserAssignedIdentities: The list of user identities associated with resource. The user identity dictionary key\nreferences will be ARM resource ids in the form:\n'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.",
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "listeners": {
          "description": "Listeners: Listeners of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Listener of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "loadDistributionPolicies": {
          "description": "LoadDistributionPolicies: Load distribution policies of the application gateway resource.",
          "items": {
            "description": "Load Distribution Policy of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "location": {
          "description": "Location: Resource location.",
          "type": "string"
        },
        "name": {
          "description": "Name: Resource name.",
          "type": "string"
        },
        "operationalState": {
          "description": "OperationalState: Operational state of the application gateway resource.",
          "type": "string"
        },
        "privateEndpointConnections": {
          "description": "PrivateEndpointConnections: Private Endpoint connections on application gateway.",
          "items": {
            "description": "Private Endpoint connection on an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "privateLinkConfigurations": {
          "description": "PrivateLinkConfigurations: PrivateLink configurations on application gateway.",
          "items": {
            "description": "Private Link Configuration on an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "probes": {
          "description": "Probes: Probes of the application gateway resource.",
          "items": {
            "description": "Probe of the application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "ProvisioningState: The provisioning state of the application gateway resource.",
          "type": "string"
        },
        "redirectConfigurations": {
          "description": "RedirectConfigurations: Redirect configurations of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Redirect configuration of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "requestRoutingRules": {
          "description": "RequestRoutingRules: Request routing rules of the application gateway resource.",
          "items": {
            "description": "Request routing rule of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "resourceGuid": {
          "description": "ResourceGuid: The resource GUID property of the application gateway resource.",
          "type": "string"
        },
        "rewriteRuleSets": {
          "description": "RewriteRuleSets: Rewrite rules for the application gateway resource.",
          "items": {
            "description": "Rewrite rule set of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "routingRules": {
          "description": "RoutingRules: Routing rules of the application gateway resource.",
          "items": {
            "description": "Routing rule of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "sku": {
          "description": "Sku: SKU of the application gateway resource.",
          "properties": {
            "capacity": {
              "description": "Capacity: Capacity (instance count) of an application gateway.",
              "type": "integer"
            },
            "name": {
              "description": "Name: Name of an application gateway SKU.",
              "type": "string"
            },
            "tier": {
              "description": "Tier: Tier of an application gateway.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sslCertificates": {
          "description": "SslCertificates: SSL certificates of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "SSL certificates of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "sslPolicy": {
          "description": "SslPolicy: SSL policy of the application gateway resource.",
          "properties": {
            "cipherSuites": {
              "description": "CipherSuites: Ssl cipher suites to be enabled in the specified order to application gateway.",
              "items": {
                "description": "Ssl cipher suites enums.",
                "type": "string"
              },
              "type": "array"
            },
            "disabledSslProtocols": {
              "description": "DisabledSslProtocols: Ssl protocols to be disabled on application gateway.",
              "items": {
                "description": "Ssl protocol enums.",
                "type": "string"
              },
              "type": "array"
            },
            "minProtocolVersion": {
              "description": "MinProtocolVersion: Minimum version of Ssl protocol to be supported on application gateway.",
              "type": "string"
            },
            "policyName": {
              "description": "PolicyName: Name of Ssl predefined policy.",
              "type": "string"
            },
            "policyType": {
              "description": "PolicyType: Type of Ssl Policy.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sslProfiles": {
          "description": "SslProfiles: SSL profiles of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "SSL profile of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Resource tags.",
          "type": "object"
        },
        "trustedClientCertificates": {
          "description": "TrustedClientCertificates: Trusted client certificates of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Trusted client certificates of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "trustedRootCertificates": {
          "description": "TrustedRootCertificates: Trusted Root certificates of the application gateway resource. For default limits, see\n[Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "Trusted Root certificates of an application gateway.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "type": {
          "description": "Type: Resource type.",
          "type": "string"
        },
        "urlPathMaps": {
          "description": "UrlPathMaps: URL path map of the application gateway resource. For default limits, see [Application Gateway\nlimits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).",
          "items": {
            "description": "UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.",
            "properties": {
              "id": {
                "description": "Id: Resource ID.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "webApplicationFirewallConfiguration": {
          "description": "WebApplicationFirewallConfiguration: Web application firewall configuration.",
          "properties": {
            "disabledRuleGroups": {
              "description": "DisabledRuleGroups: The disabled rule groups.",
              "items": {
                "description": "Allows to disable rules within a rule group or an entire rule group.",
                "properties": {
                  "ruleGroupName": {
                    "description": "RuleGroupName: The name of the rule group that will be disabled.",
                    "type": "string"
                  },
                  "rules": {
                    "description": "Rules: The list of rules that will be disabled. If null, all rules of the rule group will be disabled.",
                    "items": {
                      "type": "integer"
                    },
                    "type": "array"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled: Whether the web application firewall is enabled or not.",
              "type": "boolean"
            },
            "exclusions": {
              "description": "Exclusions: The exclusion list.",
              "items": {
                "description": "Allow to exclude some variable satisfy the condition for the WAF check.",
                "properties": {
                  "matchVariable": {
                    "description": "MatchVariable: The variable to be excluded.",
                    "type": "string"
                  },
                  "selector": {
                    "description": "Selector: When matchVariable is a collection, operator used to specify which elements in the collection this exclusion\napplies to.",
                    "type": "string"
                  },
                  "selectorMatchOperator": {
                    "description": "SelectorMatchOperator: When matchVariable is a collection, operate on the selector to specify which elements in the\ncollection this exclusion applies to.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "fileUploadLimitInMb": {
              "description": "FileUploadLimitInMb: Maximum file upload size in Mb for WAF.",
              "type": "integer"
            },
            "firewallMode": {
              "description": "FirewallMode: Web application firewall mode.",
              "type": "string"
            },
            "maxRequestBodySize": {
              "description": "MaxRequestBodySize: Maximum request body size for WAF.",
              "type": "integer"
            },
            "maxRequestBodySizeInKb": {
              "description": "MaxRequestBodySizeInKb: Maximum request body size in Kb for WAF.",
              "type": "integer"
            },
            "requestBodyCheck": {
              "description": "RequestBodyCheck: Whether allow WAF to check request Body.",
              "type": "boolean"
            },
            "ruleSetType": {
              "description": "RuleSetType: The type of the web application firewall rule set. Possible values are: 'OWASP'.",
              "type": "string"
            },
            "ruleSetVersion": {
              "description": "RuleSetVersion: The version of the rule set type.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "zones": {
          "description": "Zones: A list of availability zones denoting where the resource needs to come from.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
