diff --git a/sdk/network/mgmt-v2020_04_01/pom.xml b/sdk/network/mgmt-v2020_04_01/pom.xml
new file mode 100644
index 000000000000..365bcb9533b3
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.network.v2020_04_01
+
+ com.microsoft.azure
+ azure-arm-parent
+ 1.3.0
+ ../../../pom.management.xml
+
+ azure-mgmt-network
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for Network Management
+ This package contains Microsoft Network Management SDK.
+ https://github.com/Azure/azure-sdk-for-java
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+ scm:git:https://github.com/Azure/azure-sdk-for-java
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ HEAD
+
+
+ UTF-8
+
+
+
+
+ microsoft
+ Microsoft
+
+
+
+
+ com.microsoft.azure
+ azure-client-runtime
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+
+
+ junit
+ junit
+ test
+
+
+ com.microsoft.azure
+ azure-client-authentication
+ test
+
+
+ com.microsoft.azure
+ azure-mgmt-resources
+ test
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+ test-jar
+ test
+
+ 1.6.5
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ 1.7
+ 1.7
+
+
+ com.microsoft.azure.management.apigeneration.LangDefinitionProcessor
+
+
+ true
+ true
+
+ true
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.8
+
+ *.implementation.*;*.utils.*;com.microsoft.schemas._2003._10.serialization;*.blob.core.search
+
+
+ /**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ */
+ ]]>
+
+
+
+
+
+
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AadAuthenticationParameters.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AadAuthenticationParameters.java
new file mode 100644
index 000000000000..e71d532a4d2e
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AadAuthenticationParameters.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * AAD Vpn authentication type related parameters.
+ */
+public class AadAuthenticationParameters {
+ /**
+ * AAD Vpn authentication parameter AAD tenant.
+ */
+ @JsonProperty(value = "aadTenant")
+ private String aadTenant;
+
+ /**
+ * AAD Vpn authentication parameter AAD audience.
+ */
+ @JsonProperty(value = "aadAudience")
+ private String aadAudience;
+
+ /**
+ * AAD Vpn authentication parameter AAD issuer.
+ */
+ @JsonProperty(value = "aadIssuer")
+ private String aadIssuer;
+
+ /**
+ * Get aAD Vpn authentication parameter AAD tenant.
+ *
+ * @return the aadTenant value
+ */
+ public String aadTenant() {
+ return this.aadTenant;
+ }
+
+ /**
+ * Set aAD Vpn authentication parameter AAD tenant.
+ *
+ * @param aadTenant the aadTenant value to set
+ * @return the AadAuthenticationParameters object itself.
+ */
+ public AadAuthenticationParameters withAadTenant(String aadTenant) {
+ this.aadTenant = aadTenant;
+ return this;
+ }
+
+ /**
+ * Get aAD Vpn authentication parameter AAD audience.
+ *
+ * @return the aadAudience value
+ */
+ public String aadAudience() {
+ return this.aadAudience;
+ }
+
+ /**
+ * Set aAD Vpn authentication parameter AAD audience.
+ *
+ * @param aadAudience the aadAudience value to set
+ * @return the AadAuthenticationParameters object itself.
+ */
+ public AadAuthenticationParameters withAadAudience(String aadAudience) {
+ this.aadAudience = aadAudience;
+ return this;
+ }
+
+ /**
+ * Get aAD Vpn authentication parameter AAD issuer.
+ *
+ * @return the aadIssuer value
+ */
+ public String aadIssuer() {
+ return this.aadIssuer;
+ }
+
+ /**
+ * Set aAD Vpn authentication parameter AAD issuer.
+ *
+ * @param aadIssuer the aadIssuer value to set
+ * @return the AadAuthenticationParameters object itself.
+ */
+ public AadAuthenticationParameters withAadIssuer(String aadIssuer) {
+ this.aadIssuer = aadIssuer;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/Access.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/Access.java
new file mode 100644
index 000000000000..b9edcaa61bc8
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/Access.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Access.
+ */
+public final class Access extends ExpandableStringEnum {
+ /** Static value Allow for Access. */
+ public static final Access ALLOW = fromString("Allow");
+
+ /** Static value Deny for Access. */
+ public static final Access DENY = fromString("Deny");
+
+ /**
+ * Creates or finds a Access from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Access
+ */
+ @JsonCreator
+ public static Access fromString(String name) {
+ return fromString(name, Access.class);
+ }
+
+ /**
+ * @return known Access values
+ */
+ public static Collection values() {
+ return values(Access.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AddressSpace.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AddressSpace.java
new file mode 100644
index 000000000000..096ea4e485ad
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AddressSpace.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * AddressSpace contains an array of IP address ranges that can be used by
+ * subnets of the virtual network.
+ */
+public class AddressSpace {
+ /**
+ * A list of address blocks reserved for this virtual network in CIDR
+ * notation.
+ */
+ @JsonProperty(value = "addressPrefixes")
+ private List addressPrefixes;
+
+ /**
+ * Get a list of address blocks reserved for this virtual network in CIDR notation.
+ *
+ * @return the addressPrefixes value
+ */
+ public List addressPrefixes() {
+ return this.addressPrefixes;
+ }
+
+ /**
+ * Set a list of address blocks reserved for this virtual network in CIDR notation.
+ *
+ * @param addressPrefixes the addressPrefixes value to set
+ * @return the AddressSpace object itself.
+ */
+ public AddressSpace withAddressPrefixes(List addressPrefixes) {
+ this.addressPrefixes = addressPrefixes;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGateway.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGateway.java
new file mode 100644
index 000000000000..753855405d5a
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGateway.java
@@ -0,0 +1,815 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.Resource;
+import com.microsoft.azure.arm.resources.models.GroupableResourceCore;
+import com.microsoft.azure.arm.resources.models.HasResourceGroup;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import java.util.List;
+import com.microsoft.azure.SubResource;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationGatewayInner;
+
+/**
+ * Type representing ApplicationGateway.
+ */
+public interface ApplicationGateway extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the authenticationCertificates value.
+ */
+ List authenticationCertificates();
+
+ /**
+ * @return the autoscaleConfiguration value.
+ */
+ ApplicationGatewayAutoscaleConfiguration autoscaleConfiguration();
+
+ /**
+ * @return the backendAddressPools value.
+ */
+ List backendAddressPools();
+
+ /**
+ * @return the backendHttpSettingsCollection value.
+ */
+ List backendHttpSettingsCollection();
+
+ /**
+ * @return the customErrorConfigurations value.
+ */
+ List customErrorConfigurations();
+
+ /**
+ * @return the enableFips value.
+ */
+ Boolean enableFips();
+
+ /**
+ * @return the enableHttp2 value.
+ */
+ Boolean enableHttp2();
+
+ /**
+ * @return the etag value.
+ */
+ String etag();
+
+ /**
+ * @return the firewallPolicy value.
+ */
+ SubResource firewallPolicy();
+
+ /**
+ * @return the forceFirewallPolicyAssociation value.
+ */
+ Boolean forceFirewallPolicyAssociation();
+
+ /**
+ * @return the frontendIPConfigurations value.
+ */
+ List frontendIPConfigurations();
+
+ /**
+ * @return the frontendPorts value.
+ */
+ List frontendPorts();
+
+ /**
+ * @return the gatewayIPConfigurations value.
+ */
+ List gatewayIPConfigurations();
+
+ /**
+ * @return the httpListeners value.
+ */
+ List httpListeners();
+
+ /**
+ * @return the identity value.
+ */
+ ManagedServiceIdentity identity();
+
+ /**
+ * @return the operationalState value.
+ */
+ ApplicationGatewayOperationalState operationalState();
+
+ /**
+ * @return the probes value.
+ */
+ List probes();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the redirectConfigurations value.
+ */
+ List redirectConfigurations();
+
+ /**
+ * @return the requestRoutingRules value.
+ */
+ List requestRoutingRules();
+
+ /**
+ * @return the resourceGuid value.
+ */
+ String resourceGuid();
+
+ /**
+ * @return the rewriteRuleSets value.
+ */
+ List rewriteRuleSets();
+
+ /**
+ * @return the sku value.
+ */
+ ApplicationGatewaySku sku();
+
+ /**
+ * @return the sslCertificates value.
+ */
+ List sslCertificates();
+
+ /**
+ * @return the sslPolicy value.
+ */
+ ApplicationGatewaySslPolicy sslPolicy();
+
+ /**
+ * @return the trustedRootCertificates value.
+ */
+ List trustedRootCertificates();
+
+ /**
+ * @return the urlPathMaps value.
+ */
+ List urlPathMaps();
+
+ /**
+ * @return the webApplicationFirewallConfiguration value.
+ */
+ ApplicationGatewayWebApplicationFirewallConfiguration webApplicationFirewallConfiguration();
+
+ /**
+ * @return the zones value.
+ */
+ List zones();
+
+ /**
+ * The entirety of the ApplicationGateway definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ApplicationGateway definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ApplicationGateway definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the ApplicationGateway definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify AuthenticationCertificates.
+ */
+ interface WithAuthenticationCertificates {
+ /**
+ * Specifies authenticationCertificates.
+ * @param authenticationCertificates Authentication certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withAuthenticationCertificates(List authenticationCertificates);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify AutoscaleConfiguration.
+ */
+ interface WithAutoscaleConfiguration {
+ /**
+ * Specifies autoscaleConfiguration.
+ * @param autoscaleConfiguration Autoscale Configuration
+ * @return the next definition stage
+ */
+ WithCreate withAutoscaleConfiguration(ApplicationGatewayAutoscaleConfiguration autoscaleConfiguration);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify BackendAddressPools.
+ */
+ interface WithBackendAddressPools {
+ /**
+ * Specifies backendAddressPools.
+ * @param backendAddressPools Backend address pool of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withBackendAddressPools(List backendAddressPools);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify BackendHttpSettingsCollection.
+ */
+ interface WithBackendHttpSettingsCollection {
+ /**
+ * Specifies backendHttpSettingsCollection.
+ * @param backendHttpSettingsCollection Backend http settings of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withBackendHttpSettingsCollection(List backendHttpSettingsCollection);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify CustomErrorConfigurations.
+ */
+ interface WithCustomErrorConfigurations {
+ /**
+ * Specifies customErrorConfigurations.
+ * @param customErrorConfigurations Custom error configurations of the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withCustomErrorConfigurations(List customErrorConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify EnableFips.
+ */
+ interface WithEnableFips {
+ /**
+ * Specifies enableFips.
+ * @param enableFips Whether FIPS is enabled on the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withEnableFips(Boolean enableFips);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify EnableHttp2.
+ */
+ interface WithEnableHttp2 {
+ /**
+ * Specifies enableHttp2.
+ * @param enableHttp2 Whether HTTP2 is enabled on the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withEnableHttp2(Boolean enableHttp2);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify FirewallPolicy.
+ */
+ interface WithFirewallPolicy {
+ /**
+ * Specifies firewallPolicy.
+ * @param firewallPolicy Reference to the FirewallPolicy resource
+ * @return the next definition stage
+ */
+ WithCreate withFirewallPolicy(SubResource firewallPolicy);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify ForceFirewallPolicyAssociation.
+ */
+ interface WithForceFirewallPolicyAssociation {
+ /**
+ * Specifies forceFirewallPolicyAssociation.
+ * @param forceFirewallPolicyAssociation If true, associates a firewall policy with an application gateway regardless whether the policy differs from the WAF Config
+ * @return the next definition stage
+ */
+ WithCreate withForceFirewallPolicyAssociation(Boolean forceFirewallPolicyAssociation);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify FrontendIPConfigurations.
+ */
+ interface WithFrontendIPConfigurations {
+ /**
+ * Specifies frontendIPConfigurations.
+ * @param frontendIPConfigurations Frontend IP addresses of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withFrontendIPConfigurations(List frontendIPConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify FrontendPorts.
+ */
+ interface WithFrontendPorts {
+ /**
+ * Specifies frontendPorts.
+ * @param frontendPorts Frontend ports of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withFrontendPorts(List frontendPorts);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify GatewayIPConfigurations.
+ */
+ interface WithGatewayIPConfigurations {
+ /**
+ * Specifies gatewayIPConfigurations.
+ * @param gatewayIPConfigurations Subnets of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withGatewayIPConfigurations(List gatewayIPConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify HttpListeners.
+ */
+ interface WithHttpListeners {
+ /**
+ * Specifies httpListeners.
+ * @param httpListeners Http listeners of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withHttpListeners(List httpListeners);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify Identity.
+ */
+ interface WithIdentity {
+ /**
+ * Specifies identity.
+ * @param identity The identity of the application gateway, if configured
+ * @return the next definition stage
+ */
+ WithCreate withIdentity(ManagedServiceIdentity identity);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify Probes.
+ */
+ interface WithProbes {
+ /**
+ * Specifies probes.
+ * @param probes Probes of the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withProbes(List probes);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify RedirectConfigurations.
+ */
+ interface WithRedirectConfigurations {
+ /**
+ * Specifies redirectConfigurations.
+ * @param redirectConfigurations Redirect configurations of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withRedirectConfigurations(List redirectConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify RequestRoutingRules.
+ */
+ interface WithRequestRoutingRules {
+ /**
+ * Specifies requestRoutingRules.
+ * @param requestRoutingRules Request routing rules of the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withRequestRoutingRules(List requestRoutingRules);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify RewriteRuleSets.
+ */
+ interface WithRewriteRuleSets {
+ /**
+ * Specifies rewriteRuleSets.
+ * @param rewriteRuleSets Rewrite rules for the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withRewriteRuleSets(List rewriteRuleSets);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ * @param sku SKU of the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withSku(ApplicationGatewaySku sku);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify SslCertificates.
+ */
+ interface WithSslCertificates {
+ /**
+ * Specifies sslCertificates.
+ * @param sslCertificates SSL certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withSslCertificates(List sslCertificates);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify SslPolicy.
+ */
+ interface WithSslPolicy {
+ /**
+ * Specifies sslPolicy.
+ * @param sslPolicy SSL policy of the application gateway resource
+ * @return the next definition stage
+ */
+ WithCreate withSslPolicy(ApplicationGatewaySslPolicy sslPolicy);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify TrustedRootCertificates.
+ */
+ interface WithTrustedRootCertificates {
+ /**
+ * Specifies trustedRootCertificates.
+ * @param trustedRootCertificates Trusted Root certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withTrustedRootCertificates(List trustedRootCertificates);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify UrlPathMaps.
+ */
+ interface WithUrlPathMaps {
+ /**
+ * Specifies urlPathMaps.
+ * @param urlPathMaps URL path map of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next definition stage
+ */
+ WithCreate withUrlPathMaps(List urlPathMaps);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify WebApplicationFirewallConfiguration.
+ */
+ interface WithWebApplicationFirewallConfiguration {
+ /**
+ * Specifies webApplicationFirewallConfiguration.
+ * @param webApplicationFirewallConfiguration Web application firewall configuration
+ * @return the next definition stage
+ */
+ WithCreate withWebApplicationFirewallConfiguration(ApplicationGatewayWebApplicationFirewallConfiguration webApplicationFirewallConfiguration);
+ }
+
+ /**
+ * The stage of the applicationgateway definition allowing to specify Zones.
+ */
+ interface WithZones {
+ /**
+ * Specifies zones.
+ * @param zones A list of availability zones denoting where the resource needs to come from
+ * @return the next definition stage
+ */
+ WithCreate withZones(List zones);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, Resource.DefinitionWithTags, DefinitionStages.WithAuthenticationCertificates, DefinitionStages.WithAutoscaleConfiguration, DefinitionStages.WithBackendAddressPools, DefinitionStages.WithBackendHttpSettingsCollection, DefinitionStages.WithCustomErrorConfigurations, DefinitionStages.WithEnableFips, DefinitionStages.WithEnableHttp2, DefinitionStages.WithFirewallPolicy, DefinitionStages.WithForceFirewallPolicyAssociation, DefinitionStages.WithFrontendIPConfigurations, DefinitionStages.WithFrontendPorts, DefinitionStages.WithGatewayIPConfigurations, DefinitionStages.WithHttpListeners, DefinitionStages.WithIdentity, DefinitionStages.WithProbes, DefinitionStages.WithRedirectConfigurations, DefinitionStages.WithRequestRoutingRules, DefinitionStages.WithRewriteRuleSets, DefinitionStages.WithSku, DefinitionStages.WithSslCertificates, DefinitionStages.WithSslPolicy, DefinitionStages.WithTrustedRootCertificates, DefinitionStages.WithUrlPathMaps, DefinitionStages.WithWebApplicationFirewallConfiguration, DefinitionStages.WithZones {
+ }
+ }
+ /**
+ * The template for a ApplicationGateway update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithAuthenticationCertificates, UpdateStages.WithAutoscaleConfiguration, UpdateStages.WithBackendAddressPools, UpdateStages.WithBackendHttpSettingsCollection, UpdateStages.WithCustomErrorConfigurations, UpdateStages.WithEnableFips, UpdateStages.WithEnableHttp2, UpdateStages.WithFirewallPolicy, UpdateStages.WithForceFirewallPolicyAssociation, UpdateStages.WithFrontendIPConfigurations, UpdateStages.WithFrontendPorts, UpdateStages.WithGatewayIPConfigurations, UpdateStages.WithHttpListeners, UpdateStages.WithIdentity, UpdateStages.WithProbes, UpdateStages.WithRedirectConfigurations, UpdateStages.WithRequestRoutingRules, UpdateStages.WithRewriteRuleSets, UpdateStages.WithSku, UpdateStages.WithSslCertificates, UpdateStages.WithSslPolicy, UpdateStages.WithTrustedRootCertificates, UpdateStages.WithUrlPathMaps, UpdateStages.WithWebApplicationFirewallConfiguration, UpdateStages.WithZones {
+ }
+
+ /**
+ * Grouping of ApplicationGateway update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the applicationgateway update allowing to specify AuthenticationCertificates.
+ */
+ interface WithAuthenticationCertificates {
+ /**
+ * Specifies authenticationCertificates.
+ * @param authenticationCertificates Authentication certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withAuthenticationCertificates(List authenticationCertificates);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify AutoscaleConfiguration.
+ */
+ interface WithAutoscaleConfiguration {
+ /**
+ * Specifies autoscaleConfiguration.
+ * @param autoscaleConfiguration Autoscale Configuration
+ * @return the next update stage
+ */
+ Update withAutoscaleConfiguration(ApplicationGatewayAutoscaleConfiguration autoscaleConfiguration);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify BackendAddressPools.
+ */
+ interface WithBackendAddressPools {
+ /**
+ * Specifies backendAddressPools.
+ * @param backendAddressPools Backend address pool of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withBackendAddressPools(List backendAddressPools);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify BackendHttpSettingsCollection.
+ */
+ interface WithBackendHttpSettingsCollection {
+ /**
+ * Specifies backendHttpSettingsCollection.
+ * @param backendHttpSettingsCollection Backend http settings of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withBackendHttpSettingsCollection(List backendHttpSettingsCollection);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify CustomErrorConfigurations.
+ */
+ interface WithCustomErrorConfigurations {
+ /**
+ * Specifies customErrorConfigurations.
+ * @param customErrorConfigurations Custom error configurations of the application gateway resource
+ * @return the next update stage
+ */
+ Update withCustomErrorConfigurations(List customErrorConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify EnableFips.
+ */
+ interface WithEnableFips {
+ /**
+ * Specifies enableFips.
+ * @param enableFips Whether FIPS is enabled on the application gateway resource
+ * @return the next update stage
+ */
+ Update withEnableFips(Boolean enableFips);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify EnableHttp2.
+ */
+ interface WithEnableHttp2 {
+ /**
+ * Specifies enableHttp2.
+ * @param enableHttp2 Whether HTTP2 is enabled on the application gateway resource
+ * @return the next update stage
+ */
+ Update withEnableHttp2(Boolean enableHttp2);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify FirewallPolicy.
+ */
+ interface WithFirewallPolicy {
+ /**
+ * Specifies firewallPolicy.
+ * @param firewallPolicy Reference to the FirewallPolicy resource
+ * @return the next update stage
+ */
+ Update withFirewallPolicy(SubResource firewallPolicy);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify ForceFirewallPolicyAssociation.
+ */
+ interface WithForceFirewallPolicyAssociation {
+ /**
+ * Specifies forceFirewallPolicyAssociation.
+ * @param forceFirewallPolicyAssociation If true, associates a firewall policy with an application gateway regardless whether the policy differs from the WAF Config
+ * @return the next update stage
+ */
+ Update withForceFirewallPolicyAssociation(Boolean forceFirewallPolicyAssociation);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify FrontendIPConfigurations.
+ */
+ interface WithFrontendIPConfigurations {
+ /**
+ * Specifies frontendIPConfigurations.
+ * @param frontendIPConfigurations Frontend IP addresses of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withFrontendIPConfigurations(List frontendIPConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify FrontendPorts.
+ */
+ interface WithFrontendPorts {
+ /**
+ * Specifies frontendPorts.
+ * @param frontendPorts Frontend ports of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withFrontendPorts(List frontendPorts);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify GatewayIPConfigurations.
+ */
+ interface WithGatewayIPConfigurations {
+ /**
+ * Specifies gatewayIPConfigurations.
+ * @param gatewayIPConfigurations Subnets of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withGatewayIPConfigurations(List gatewayIPConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify HttpListeners.
+ */
+ interface WithHttpListeners {
+ /**
+ * Specifies httpListeners.
+ * @param httpListeners Http listeners of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withHttpListeners(List httpListeners);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify Identity.
+ */
+ interface WithIdentity {
+ /**
+ * Specifies identity.
+ * @param identity The identity of the application gateway, if configured
+ * @return the next update stage
+ */
+ Update withIdentity(ManagedServiceIdentity identity);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify Probes.
+ */
+ interface WithProbes {
+ /**
+ * Specifies probes.
+ * @param probes Probes of the application gateway resource
+ * @return the next update stage
+ */
+ Update withProbes(List probes);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify RedirectConfigurations.
+ */
+ interface WithRedirectConfigurations {
+ /**
+ * Specifies redirectConfigurations.
+ * @param redirectConfigurations Redirect configurations of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withRedirectConfigurations(List redirectConfigurations);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify RequestRoutingRules.
+ */
+ interface WithRequestRoutingRules {
+ /**
+ * Specifies requestRoutingRules.
+ * @param requestRoutingRules Request routing rules of the application gateway resource
+ * @return the next update stage
+ */
+ Update withRequestRoutingRules(List requestRoutingRules);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify RewriteRuleSets.
+ */
+ interface WithRewriteRuleSets {
+ /**
+ * Specifies rewriteRuleSets.
+ * @param rewriteRuleSets Rewrite rules for the application gateway resource
+ * @return the next update stage
+ */
+ Update withRewriteRuleSets(List rewriteRuleSets);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ * @param sku SKU of the application gateway resource
+ * @return the next update stage
+ */
+ Update withSku(ApplicationGatewaySku sku);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify SslCertificates.
+ */
+ interface WithSslCertificates {
+ /**
+ * Specifies sslCertificates.
+ * @param sslCertificates SSL certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withSslCertificates(List sslCertificates);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify SslPolicy.
+ */
+ interface WithSslPolicy {
+ /**
+ * Specifies sslPolicy.
+ * @param sslPolicy SSL policy of the application gateway resource
+ * @return the next update stage
+ */
+ Update withSslPolicy(ApplicationGatewaySslPolicy sslPolicy);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify TrustedRootCertificates.
+ */
+ interface WithTrustedRootCertificates {
+ /**
+ * Specifies trustedRootCertificates.
+ * @param trustedRootCertificates Trusted Root certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withTrustedRootCertificates(List trustedRootCertificates);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify UrlPathMaps.
+ */
+ interface WithUrlPathMaps {
+ /**
+ * Specifies urlPathMaps.
+ * @param urlPathMaps URL path map of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits)
+ * @return the next update stage
+ */
+ Update withUrlPathMaps(List urlPathMaps);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify WebApplicationFirewallConfiguration.
+ */
+ interface WithWebApplicationFirewallConfiguration {
+ /**
+ * Specifies webApplicationFirewallConfiguration.
+ * @param webApplicationFirewallConfiguration Web application firewall configuration
+ * @return the next update stage
+ */
+ Update withWebApplicationFirewallConfiguration(ApplicationGatewayWebApplicationFirewallConfiguration webApplicationFirewallConfiguration);
+ }
+
+ /**
+ * The stage of the applicationgateway update allowing to specify Zones.
+ */
+ interface WithZones {
+ /**
+ * Specifies zones.
+ * @param zones A list of availability zones denoting where the resource needs to come from
+ * @return the next update stage
+ */
+ Update withZones(List zones);
+ }
+
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAuthenticationCertificate.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAuthenticationCertificate.java
new file mode 100644
index 000000000000..751c8fda27b4
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAuthenticationCertificate.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.SubResource;
+
+/**
+ * Authentication certificates of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayAuthenticationCertificate extends SubResource {
+ /**
+ * Certificate public data.
+ */
+ @JsonProperty(value = "properties.data")
+ private String data;
+
+ /**
+ * The provisioning state of the authentication certificate resource.
+ * Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the authentication certificate that is unique within an
+ * Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get certificate public data.
+ *
+ * @return the data value
+ */
+ public String data() {
+ return this.data;
+ }
+
+ /**
+ * Set certificate public data.
+ *
+ * @param data the data value to set
+ * @return the ApplicationGatewayAuthenticationCertificate object itself.
+ */
+ public ApplicationGatewayAuthenticationCertificate withData(String data) {
+ this.data = data;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the authentication certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the authentication certificate that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the authentication certificate that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayAuthenticationCertificate object itself.
+ */
+ public ApplicationGatewayAuthenticationCertificate withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAutoscaleConfiguration.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAutoscaleConfiguration.java
new file mode 100644
index 000000000000..8274d996413b
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAutoscaleConfiguration.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Application Gateway autoscale configuration.
+ */
+public class ApplicationGatewayAutoscaleConfiguration {
+ /**
+ * Lower bound on number of Application Gateway capacity.
+ */
+ @JsonProperty(value = "minCapacity", required = true)
+ private int minCapacity;
+
+ /**
+ * Upper bound on number of Application Gateway capacity.
+ */
+ @JsonProperty(value = "maxCapacity")
+ private Integer maxCapacity;
+
+ /**
+ * Get lower bound on number of Application Gateway capacity.
+ *
+ * @return the minCapacity value
+ */
+ public int minCapacity() {
+ return this.minCapacity;
+ }
+
+ /**
+ * Set lower bound on number of Application Gateway capacity.
+ *
+ * @param minCapacity the minCapacity value to set
+ * @return the ApplicationGatewayAutoscaleConfiguration object itself.
+ */
+ public ApplicationGatewayAutoscaleConfiguration withMinCapacity(int minCapacity) {
+ this.minCapacity = minCapacity;
+ return this;
+ }
+
+ /**
+ * Get upper bound on number of Application Gateway capacity.
+ *
+ * @return the maxCapacity value
+ */
+ public Integer maxCapacity() {
+ return this.maxCapacity;
+ }
+
+ /**
+ * Set upper bound on number of Application Gateway capacity.
+ *
+ * @param maxCapacity the maxCapacity value to set
+ * @return the ApplicationGatewayAutoscaleConfiguration object itself.
+ */
+ public ApplicationGatewayAutoscaleConfiguration withMaxCapacity(Integer maxCapacity) {
+ this.maxCapacity = maxCapacity;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAvailableSslOptions.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAvailableSslOptions.java
new file mode 100644
index 000000000000..c66d618b3a3b
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAvailableSslOptions.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationGatewayAvailableSslOptionsInner;
+import java.util.List;
+import com.microsoft.azure.SubResource;
+import java.util.Map;
+
+/**
+ * Type representing ApplicationGatewayAvailableSslOptions.
+ */
+public interface ApplicationGatewayAvailableSslOptions extends HasInner, HasManager {
+ /**
+ * @return the availableCipherSuites value.
+ */
+ List availableCipherSuites();
+
+ /**
+ * @return the availableProtocols value.
+ */
+ List availableProtocols();
+
+ /**
+ * @return the defaultPolicy value.
+ */
+ ApplicationGatewaySslPolicyName defaultPolicy();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the predefinedPolicies value.
+ */
+ List predefinedPolicies();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAvailableWafRuleSetsResult.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAvailableWafRuleSetsResult.java
new file mode 100644
index 000000000000..c54a38219519
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayAvailableWafRuleSetsResult.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationGatewayAvailableWafRuleSetsResultInner;
+import java.util.List;
+
+/**
+ * Type representing ApplicationGatewayAvailableWafRuleSetsResult.
+ */
+public interface ApplicationGatewayAvailableWafRuleSetsResult extends HasInner, HasManager {
+ /**
+ * @return the value value.
+ */
+ List value();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendAddress.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendAddress.java
new file mode 100644
index 000000000000..b9bee905931d
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendAddress.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Backend address of an application gateway.
+ */
+public class ApplicationGatewayBackendAddress {
+ /**
+ * Fully qualified domain name (FQDN).
+ */
+ @JsonProperty(value = "fqdn")
+ private String fqdn;
+
+ /**
+ * IP address.
+ */
+ @JsonProperty(value = "ipAddress")
+ private String ipAddress;
+
+ /**
+ * Get fully qualified domain name (FQDN).
+ *
+ * @return the fqdn value
+ */
+ public String fqdn() {
+ return this.fqdn;
+ }
+
+ /**
+ * Set fully qualified domain name (FQDN).
+ *
+ * @param fqdn the fqdn value to set
+ * @return the ApplicationGatewayBackendAddress object itself.
+ */
+ public ApplicationGatewayBackendAddress withFqdn(String fqdn) {
+ this.fqdn = fqdn;
+ return this;
+ }
+
+ /**
+ * Get iP address.
+ *
+ * @return the ipAddress value
+ */
+ public String ipAddress() {
+ return this.ipAddress;
+ }
+
+ /**
+ * Set iP address.
+ *
+ * @param ipAddress the ipAddress value to set
+ * @return the ApplicationGatewayBackendAddress object itself.
+ */
+ public ApplicationGatewayBackendAddress withIpAddress(String ipAddress) {
+ this.ipAddress = ipAddress;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendAddressPool.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendAddressPool.java
new file mode 100644
index 000000000000..e79248ca0492
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendAddressPool.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkInterfaceIPConfigurationInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.SubResource;
+
+/**
+ * Backend Address Pool of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayBackendAddressPool extends SubResource {
+ /**
+ * Collection of references to IPs defined in network interfaces.
+ */
+ @JsonProperty(value = "properties.backendIPConfigurations", access = JsonProperty.Access.WRITE_ONLY)
+ private List backendIPConfigurations;
+
+ /**
+ * Backend addresses.
+ */
+ @JsonProperty(value = "properties.backendAddresses")
+ private List backendAddresses;
+
+ /**
+ * The provisioning state of the backend address pool resource. Possible
+ * values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the backend address pool that is unique within an Application
+ * Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get collection of references to IPs defined in network interfaces.
+ *
+ * @return the backendIPConfigurations value
+ */
+ public List backendIPConfigurations() {
+ return this.backendIPConfigurations;
+ }
+
+ /**
+ * Get backend addresses.
+ *
+ * @return the backendAddresses value
+ */
+ public List backendAddresses() {
+ return this.backendAddresses;
+ }
+
+ /**
+ * Set backend addresses.
+ *
+ * @param backendAddresses the backendAddresses value to set
+ * @return the ApplicationGatewayBackendAddressPool object itself.
+ */
+ public ApplicationGatewayBackendAddressPool withBackendAddresses(List backendAddresses) {
+ this.backendAddresses = backendAddresses;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the backend address pool resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the backend address pool that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the backend address pool that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayBackendAddressPool object itself.
+ */
+ public ApplicationGatewayBackendAddressPool withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealth.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealth.java
new file mode 100644
index 000000000000..91ae1756d9f9
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealth.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationGatewayBackendHealthInner;
+import java.util.List;
+
+/**
+ * Type representing ApplicationGatewayBackendHealth.
+ */
+public interface ApplicationGatewayBackendHealth extends HasInner, HasManager {
+ /**
+ * @return the backendAddressPools value.
+ */
+ List backendAddressPools();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthHttpSettings.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthHttpSettings.java
new file mode 100644
index 000000000000..6831b5769fa2
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthHttpSettings.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Application gateway BackendHealthHttp settings.
+ */
+public class ApplicationGatewayBackendHealthHttpSettings {
+ /**
+ * Reference to an ApplicationGatewayBackendHttpSettings resource.
+ */
+ @JsonProperty(value = "backendHttpSettings")
+ private ApplicationGatewayBackendHttpSettings backendHttpSettings;
+
+ /**
+ * List of ApplicationGatewayBackendHealthServer resources.
+ */
+ @JsonProperty(value = "servers")
+ private List servers;
+
+ /**
+ * Get reference to an ApplicationGatewayBackendHttpSettings resource.
+ *
+ * @return the backendHttpSettings value
+ */
+ public ApplicationGatewayBackendHttpSettings backendHttpSettings() {
+ return this.backendHttpSettings;
+ }
+
+ /**
+ * Set reference to an ApplicationGatewayBackendHttpSettings resource.
+ *
+ * @param backendHttpSettings the backendHttpSettings value to set
+ * @return the ApplicationGatewayBackendHealthHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHealthHttpSettings withBackendHttpSettings(ApplicationGatewayBackendHttpSettings backendHttpSettings) {
+ this.backendHttpSettings = backendHttpSettings;
+ return this;
+ }
+
+ /**
+ * Get list of ApplicationGatewayBackendHealthServer resources.
+ *
+ * @return the servers value
+ */
+ public List servers() {
+ return this.servers;
+ }
+
+ /**
+ * Set list of ApplicationGatewayBackendHealthServer resources.
+ *
+ * @param servers the servers value to set
+ * @return the ApplicationGatewayBackendHealthHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHealthHttpSettings withServers(List servers) {
+ this.servers = servers;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthOnDemand.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthOnDemand.java
new file mode 100644
index 000000000000..5cb67a997739
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthOnDemand.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationGatewayBackendHealthOnDemandInner;
+
+/**
+ * Type representing ApplicationGatewayBackendHealthOnDemand.
+ */
+public interface ApplicationGatewayBackendHealthOnDemand extends HasInner, HasManager {
+ /**
+ * @return the backendAddressPool value.
+ */
+ ApplicationGatewayBackendAddressPool backendAddressPool();
+
+ /**
+ * @return the backendHealthHttpSettings value.
+ */
+ ApplicationGatewayBackendHealthHttpSettings backendHealthHttpSettings();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthPool.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthPool.java
new file mode 100644
index 000000000000..3885c4394ebd
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthPool.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Application gateway BackendHealth pool.
+ */
+public class ApplicationGatewayBackendHealthPool {
+ /**
+ * Reference to an ApplicationGatewayBackendAddressPool resource.
+ */
+ @JsonProperty(value = "backendAddressPool")
+ private ApplicationGatewayBackendAddressPool backendAddressPool;
+
+ /**
+ * List of ApplicationGatewayBackendHealthHttpSettings resources.
+ */
+ @JsonProperty(value = "backendHttpSettingsCollection")
+ private List backendHttpSettingsCollection;
+
+ /**
+ * Get reference to an ApplicationGatewayBackendAddressPool resource.
+ *
+ * @return the backendAddressPool value
+ */
+ public ApplicationGatewayBackendAddressPool backendAddressPool() {
+ return this.backendAddressPool;
+ }
+
+ /**
+ * Set reference to an ApplicationGatewayBackendAddressPool resource.
+ *
+ * @param backendAddressPool the backendAddressPool value to set
+ * @return the ApplicationGatewayBackendHealthPool object itself.
+ */
+ public ApplicationGatewayBackendHealthPool withBackendAddressPool(ApplicationGatewayBackendAddressPool backendAddressPool) {
+ this.backendAddressPool = backendAddressPool;
+ return this;
+ }
+
+ /**
+ * Get list of ApplicationGatewayBackendHealthHttpSettings resources.
+ *
+ * @return the backendHttpSettingsCollection value
+ */
+ public List backendHttpSettingsCollection() {
+ return this.backendHttpSettingsCollection;
+ }
+
+ /**
+ * Set list of ApplicationGatewayBackendHealthHttpSettings resources.
+ *
+ * @param backendHttpSettingsCollection the backendHttpSettingsCollection value to set
+ * @return the ApplicationGatewayBackendHealthPool object itself.
+ */
+ public ApplicationGatewayBackendHealthPool withBackendHttpSettingsCollection(List backendHttpSettingsCollection) {
+ this.backendHttpSettingsCollection = backendHttpSettingsCollection;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthServer.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthServer.java
new file mode 100644
index 000000000000..9c792c6f8650
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthServer.java
@@ -0,0 +1,123 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkInterfaceIPConfigurationInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Application gateway backendhealth http settings.
+ */
+public class ApplicationGatewayBackendHealthServer {
+ /**
+ * IP address or FQDN of backend server.
+ */
+ @JsonProperty(value = "address")
+ private String address;
+
+ /**
+ * Reference to IP configuration of backend server.
+ */
+ @JsonProperty(value = "ipConfiguration")
+ private NetworkInterfaceIPConfigurationInner ipConfiguration;
+
+ /**
+ * Health of backend server. Possible values include: 'Unknown', 'Up',
+ * 'Down', 'Partial', 'Draining'.
+ */
+ @JsonProperty(value = "health")
+ private ApplicationGatewayBackendHealthServerHealth health;
+
+ /**
+ * Health Probe Log.
+ */
+ @JsonProperty(value = "healthProbeLog")
+ private String healthProbeLog;
+
+ /**
+ * Get iP address or FQDN of backend server.
+ *
+ * @return the address value
+ */
+ public String address() {
+ return this.address;
+ }
+
+ /**
+ * Set iP address or FQDN of backend server.
+ *
+ * @param address the address value to set
+ * @return the ApplicationGatewayBackendHealthServer object itself.
+ */
+ public ApplicationGatewayBackendHealthServer withAddress(String address) {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Get reference to IP configuration of backend server.
+ *
+ * @return the ipConfiguration value
+ */
+ public NetworkInterfaceIPConfigurationInner ipConfiguration() {
+ return this.ipConfiguration;
+ }
+
+ /**
+ * Set reference to IP configuration of backend server.
+ *
+ * @param ipConfiguration the ipConfiguration value to set
+ * @return the ApplicationGatewayBackendHealthServer object itself.
+ */
+ public ApplicationGatewayBackendHealthServer withIpConfiguration(NetworkInterfaceIPConfigurationInner ipConfiguration) {
+ this.ipConfiguration = ipConfiguration;
+ return this;
+ }
+
+ /**
+ * Get health of backend server. Possible values include: 'Unknown', 'Up', 'Down', 'Partial', 'Draining'.
+ *
+ * @return the health value
+ */
+ public ApplicationGatewayBackendHealthServerHealth health() {
+ return this.health;
+ }
+
+ /**
+ * Set health of backend server. Possible values include: 'Unknown', 'Up', 'Down', 'Partial', 'Draining'.
+ *
+ * @param health the health value to set
+ * @return the ApplicationGatewayBackendHealthServer object itself.
+ */
+ public ApplicationGatewayBackendHealthServer withHealth(ApplicationGatewayBackendHealthServerHealth health) {
+ this.health = health;
+ return this;
+ }
+
+ /**
+ * Get health Probe Log.
+ *
+ * @return the healthProbeLog value
+ */
+ public String healthProbeLog() {
+ return this.healthProbeLog;
+ }
+
+ /**
+ * Set health Probe Log.
+ *
+ * @param healthProbeLog the healthProbeLog value to set
+ * @return the ApplicationGatewayBackendHealthServer object itself.
+ */
+ public ApplicationGatewayBackendHealthServer withHealthProbeLog(String healthProbeLog) {
+ this.healthProbeLog = healthProbeLog;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthServerHealth.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthServerHealth.java
new file mode 100644
index 000000000000..44c65fa3a5f0
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHealthServerHealth.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayBackendHealthServerHealth.
+ */
+public final class ApplicationGatewayBackendHealthServerHealth extends ExpandableStringEnum {
+ /** Static value Unknown for ApplicationGatewayBackendHealthServerHealth. */
+ public static final ApplicationGatewayBackendHealthServerHealth UNKNOWN = fromString("Unknown");
+
+ /** Static value Up for ApplicationGatewayBackendHealthServerHealth. */
+ public static final ApplicationGatewayBackendHealthServerHealth UP = fromString("Up");
+
+ /** Static value Down for ApplicationGatewayBackendHealthServerHealth. */
+ public static final ApplicationGatewayBackendHealthServerHealth DOWN = fromString("Down");
+
+ /** Static value Partial for ApplicationGatewayBackendHealthServerHealth. */
+ public static final ApplicationGatewayBackendHealthServerHealth PARTIAL = fromString("Partial");
+
+ /** Static value Draining for ApplicationGatewayBackendHealthServerHealth. */
+ public static final ApplicationGatewayBackendHealthServerHealth DRAINING = fromString("Draining");
+
+ /**
+ * Creates or finds a ApplicationGatewayBackendHealthServerHealth from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayBackendHealthServerHealth
+ */
+ @JsonCreator
+ public static ApplicationGatewayBackendHealthServerHealth fromString(String name) {
+ return fromString(name, ApplicationGatewayBackendHealthServerHealth.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayBackendHealthServerHealth values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayBackendHealthServerHealth.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHttpSettings.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHttpSettings.java
new file mode 100644
index 000000000000..1dbd3850d428
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayBackendHttpSettings.java
@@ -0,0 +1,437 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Backend address pool settings of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayBackendHttpSettings extends SubResource {
+ /**
+ * The destination port on the backend.
+ */
+ @JsonProperty(value = "properties.port")
+ private Integer port;
+
+ /**
+ * The protocol used to communicate with the backend. Possible values
+ * include: 'Http', 'Https'.
+ */
+ @JsonProperty(value = "properties.protocol")
+ private ApplicationGatewayProtocol protocol;
+
+ /**
+ * Cookie based affinity. Possible values include: 'Enabled', 'Disabled'.
+ */
+ @JsonProperty(value = "properties.cookieBasedAffinity")
+ private ApplicationGatewayCookieBasedAffinity cookieBasedAffinity;
+
+ /**
+ * Request timeout in seconds. Application Gateway will fail the request if
+ * response is not received within RequestTimeout. Acceptable values are
+ * from 1 second to 86400 seconds.
+ */
+ @JsonProperty(value = "properties.requestTimeout")
+ private Integer requestTimeout;
+
+ /**
+ * Probe resource of an application gateway.
+ */
+ @JsonProperty(value = "properties.probe")
+ private SubResource probe;
+
+ /**
+ * Array of references to application gateway authentication certificates.
+ */
+ @JsonProperty(value = "properties.authenticationCertificates")
+ private List authenticationCertificates;
+
+ /**
+ * Array of references to application gateway trusted root certificates.
+ */
+ @JsonProperty(value = "properties.trustedRootCertificates")
+ private List trustedRootCertificates;
+
+ /**
+ * Connection draining of the backend http settings resource.
+ */
+ @JsonProperty(value = "properties.connectionDraining")
+ private ApplicationGatewayConnectionDraining connectionDraining;
+
+ /**
+ * Host header to be sent to the backend servers.
+ */
+ @JsonProperty(value = "properties.hostName")
+ private String hostName;
+
+ /**
+ * Whether to pick host header should be picked from the host name of the
+ * backend server. Default value is false.
+ */
+ @JsonProperty(value = "properties.pickHostNameFromBackendAddress")
+ private Boolean pickHostNameFromBackendAddress;
+
+ /**
+ * Cookie name to use for the affinity cookie.
+ */
+ @JsonProperty(value = "properties.affinityCookieName")
+ private String affinityCookieName;
+
+ /**
+ * Whether the probe is enabled. Default value is false.
+ */
+ @JsonProperty(value = "properties.probeEnabled")
+ private Boolean probeEnabled;
+
+ /**
+ * Path which should be used as a prefix for all HTTP requests. Null means
+ * no path will be prefixed. Default value is null.
+ */
+ @JsonProperty(value = "properties.path")
+ private String path;
+
+ /**
+ * The provisioning state of the backend HTTP settings resource. Possible
+ * values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the backend http settings that is unique within an Application
+ * Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get the destination port on the backend.
+ *
+ * @return the port value
+ */
+ public Integer port() {
+ return this.port;
+ }
+
+ /**
+ * Set the destination port on the backend.
+ *
+ * @param port the port value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withPort(Integer port) {
+ this.port = port;
+ return this;
+ }
+
+ /**
+ * Get the protocol used to communicate with the backend. Possible values include: 'Http', 'Https'.
+ *
+ * @return the protocol value
+ */
+ public ApplicationGatewayProtocol protocol() {
+ return this.protocol;
+ }
+
+ /**
+ * Set the protocol used to communicate with the backend. Possible values include: 'Http', 'Https'.
+ *
+ * @param protocol the protocol value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withProtocol(ApplicationGatewayProtocol protocol) {
+ this.protocol = protocol;
+ return this;
+ }
+
+ /**
+ * Get cookie based affinity. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the cookieBasedAffinity value
+ */
+ public ApplicationGatewayCookieBasedAffinity cookieBasedAffinity() {
+ return this.cookieBasedAffinity;
+ }
+
+ /**
+ * Set cookie based affinity. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param cookieBasedAffinity the cookieBasedAffinity value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withCookieBasedAffinity(ApplicationGatewayCookieBasedAffinity cookieBasedAffinity) {
+ this.cookieBasedAffinity = cookieBasedAffinity;
+ return this;
+ }
+
+ /**
+ * Get request timeout in seconds. Application Gateway will fail the request if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @return the requestTimeout value
+ */
+ public Integer requestTimeout() {
+ return this.requestTimeout;
+ }
+
+ /**
+ * Set request timeout in seconds. Application Gateway will fail the request if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @param requestTimeout the requestTimeout value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withRequestTimeout(Integer requestTimeout) {
+ this.requestTimeout = requestTimeout;
+ return this;
+ }
+
+ /**
+ * Get probe resource of an application gateway.
+ *
+ * @return the probe value
+ */
+ public SubResource probe() {
+ return this.probe;
+ }
+
+ /**
+ * Set probe resource of an application gateway.
+ *
+ * @param probe the probe value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withProbe(SubResource probe) {
+ this.probe = probe;
+ return this;
+ }
+
+ /**
+ * Get array of references to application gateway authentication certificates.
+ *
+ * @return the authenticationCertificates value
+ */
+ public List authenticationCertificates() {
+ return this.authenticationCertificates;
+ }
+
+ /**
+ * Set array of references to application gateway authentication certificates.
+ *
+ * @param authenticationCertificates the authenticationCertificates value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withAuthenticationCertificates(List authenticationCertificates) {
+ this.authenticationCertificates = authenticationCertificates;
+ return this;
+ }
+
+ /**
+ * Get array of references to application gateway trusted root certificates.
+ *
+ * @return the trustedRootCertificates value
+ */
+ public List trustedRootCertificates() {
+ return this.trustedRootCertificates;
+ }
+
+ /**
+ * Set array of references to application gateway trusted root certificates.
+ *
+ * @param trustedRootCertificates the trustedRootCertificates value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withTrustedRootCertificates(List trustedRootCertificates) {
+ this.trustedRootCertificates = trustedRootCertificates;
+ return this;
+ }
+
+ /**
+ * Get connection draining of the backend http settings resource.
+ *
+ * @return the connectionDraining value
+ */
+ public ApplicationGatewayConnectionDraining connectionDraining() {
+ return this.connectionDraining;
+ }
+
+ /**
+ * Set connection draining of the backend http settings resource.
+ *
+ * @param connectionDraining the connectionDraining value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withConnectionDraining(ApplicationGatewayConnectionDraining connectionDraining) {
+ this.connectionDraining = connectionDraining;
+ return this;
+ }
+
+ /**
+ * Get host header to be sent to the backend servers.
+ *
+ * @return the hostName value
+ */
+ public String hostName() {
+ return this.hostName;
+ }
+
+ /**
+ * Set host header to be sent to the backend servers.
+ *
+ * @param hostName the hostName value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withHostName(String hostName) {
+ this.hostName = hostName;
+ return this;
+ }
+
+ /**
+ * Get whether to pick host header should be picked from the host name of the backend server. Default value is false.
+ *
+ * @return the pickHostNameFromBackendAddress value
+ */
+ public Boolean pickHostNameFromBackendAddress() {
+ return this.pickHostNameFromBackendAddress;
+ }
+
+ /**
+ * Set whether to pick host header should be picked from the host name of the backend server. Default value is false.
+ *
+ * @param pickHostNameFromBackendAddress the pickHostNameFromBackendAddress value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withPickHostNameFromBackendAddress(Boolean pickHostNameFromBackendAddress) {
+ this.pickHostNameFromBackendAddress = pickHostNameFromBackendAddress;
+ return this;
+ }
+
+ /**
+ * Get cookie name to use for the affinity cookie.
+ *
+ * @return the affinityCookieName value
+ */
+ public String affinityCookieName() {
+ return this.affinityCookieName;
+ }
+
+ /**
+ * Set cookie name to use for the affinity cookie.
+ *
+ * @param affinityCookieName the affinityCookieName value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withAffinityCookieName(String affinityCookieName) {
+ this.affinityCookieName = affinityCookieName;
+ return this;
+ }
+
+ /**
+ * Get whether the probe is enabled. Default value is false.
+ *
+ * @return the probeEnabled value
+ */
+ public Boolean probeEnabled() {
+ return this.probeEnabled;
+ }
+
+ /**
+ * Set whether the probe is enabled. Default value is false.
+ *
+ * @param probeEnabled the probeEnabled value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withProbeEnabled(Boolean probeEnabled) {
+ this.probeEnabled = probeEnabled;
+ return this;
+ }
+
+ /**
+ * Get path which should be used as a prefix for all HTTP requests. Null means no path will be prefixed. Default value is null.
+ *
+ * @return the path value
+ */
+ public String path() {
+ return this.path;
+ }
+
+ /**
+ * Set path which should be used as a prefix for all HTTP requests. Null means no path will be prefixed. Default value is null.
+ *
+ * @param path the path value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withPath(String path) {
+ this.path = path;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the backend HTTP settings resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the backend http settings that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the backend http settings that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayBackendHttpSettings object itself.
+ */
+ public ApplicationGatewayBackendHttpSettings withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayConnectionDraining.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayConnectionDraining.java
new file mode 100644
index 000000000000..218fb95bc700
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayConnectionDraining.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Connection draining allows open connections to a backend server to be active
+ * for a specified time after the backend server got removed from the
+ * configuration.
+ */
+public class ApplicationGatewayConnectionDraining {
+ /**
+ * Whether connection draining is enabled or not.
+ */
+ @JsonProperty(value = "enabled", required = true)
+ private boolean enabled;
+
+ /**
+ * The number of seconds connection draining is active. Acceptable values
+ * are from 1 second to 3600 seconds.
+ */
+ @JsonProperty(value = "drainTimeoutInSec", required = true)
+ private int drainTimeoutInSec;
+
+ /**
+ * Get whether connection draining is enabled or not.
+ *
+ * @return the enabled value
+ */
+ public boolean enabled() {
+ return this.enabled;
+ }
+
+ /**
+ * Set whether connection draining is enabled or not.
+ *
+ * @param enabled the enabled value to set
+ * @return the ApplicationGatewayConnectionDraining object itself.
+ */
+ public ApplicationGatewayConnectionDraining withEnabled(boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Get the number of seconds connection draining is active. Acceptable values are from 1 second to 3600 seconds.
+ *
+ * @return the drainTimeoutInSec value
+ */
+ public int drainTimeoutInSec() {
+ return this.drainTimeoutInSec;
+ }
+
+ /**
+ * Set the number of seconds connection draining is active. Acceptable values are from 1 second to 3600 seconds.
+ *
+ * @param drainTimeoutInSec the drainTimeoutInSec value to set
+ * @return the ApplicationGatewayConnectionDraining object itself.
+ */
+ public ApplicationGatewayConnectionDraining withDrainTimeoutInSec(int drainTimeoutInSec) {
+ this.drainTimeoutInSec = drainTimeoutInSec;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCookieBasedAffinity.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCookieBasedAffinity.java
new file mode 100644
index 000000000000..dee4cf9ae2ca
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCookieBasedAffinity.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayCookieBasedAffinity.
+ */
+public final class ApplicationGatewayCookieBasedAffinity extends ExpandableStringEnum {
+ /** Static value Enabled for ApplicationGatewayCookieBasedAffinity. */
+ public static final ApplicationGatewayCookieBasedAffinity ENABLED = fromString("Enabled");
+
+ /** Static value Disabled for ApplicationGatewayCookieBasedAffinity. */
+ public static final ApplicationGatewayCookieBasedAffinity DISABLED = fromString("Disabled");
+
+ /**
+ * Creates or finds a ApplicationGatewayCookieBasedAffinity from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayCookieBasedAffinity
+ */
+ @JsonCreator
+ public static ApplicationGatewayCookieBasedAffinity fromString(String name) {
+ return fromString(name, ApplicationGatewayCookieBasedAffinity.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayCookieBasedAffinity values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayCookieBasedAffinity.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCustomError.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCustomError.java
new file mode 100644
index 000000000000..9298b77d0992
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCustomError.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Customer error of an application gateway.
+ */
+public class ApplicationGatewayCustomError {
+ /**
+ * Status code of the application gateway customer error. Possible values
+ * include: 'HttpStatus403', 'HttpStatus502'.
+ */
+ @JsonProperty(value = "statusCode")
+ private ApplicationGatewayCustomErrorStatusCode statusCode;
+
+ /**
+ * Error page URL of the application gateway customer error.
+ */
+ @JsonProperty(value = "customErrorPageUrl")
+ private String customErrorPageUrl;
+
+ /**
+ * Get status code of the application gateway customer error. Possible values include: 'HttpStatus403', 'HttpStatus502'.
+ *
+ * @return the statusCode value
+ */
+ public ApplicationGatewayCustomErrorStatusCode statusCode() {
+ return this.statusCode;
+ }
+
+ /**
+ * Set status code of the application gateway customer error. Possible values include: 'HttpStatus403', 'HttpStatus502'.
+ *
+ * @param statusCode the statusCode value to set
+ * @return the ApplicationGatewayCustomError object itself.
+ */
+ public ApplicationGatewayCustomError withStatusCode(ApplicationGatewayCustomErrorStatusCode statusCode) {
+ this.statusCode = statusCode;
+ return this;
+ }
+
+ /**
+ * Get error page URL of the application gateway customer error.
+ *
+ * @return the customErrorPageUrl value
+ */
+ public String customErrorPageUrl() {
+ return this.customErrorPageUrl;
+ }
+
+ /**
+ * Set error page URL of the application gateway customer error.
+ *
+ * @param customErrorPageUrl the customErrorPageUrl value to set
+ * @return the ApplicationGatewayCustomError object itself.
+ */
+ public ApplicationGatewayCustomError withCustomErrorPageUrl(String customErrorPageUrl) {
+ this.customErrorPageUrl = customErrorPageUrl;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCustomErrorStatusCode.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCustomErrorStatusCode.java
new file mode 100644
index 000000000000..5a7ae782cb85
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayCustomErrorStatusCode.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayCustomErrorStatusCode.
+ */
+public final class ApplicationGatewayCustomErrorStatusCode extends ExpandableStringEnum {
+ /** Static value HttpStatus403 for ApplicationGatewayCustomErrorStatusCode. */
+ public static final ApplicationGatewayCustomErrorStatusCode HTTP_STATUS403 = fromString("HttpStatus403");
+
+ /** Static value HttpStatus502 for ApplicationGatewayCustomErrorStatusCode. */
+ public static final ApplicationGatewayCustomErrorStatusCode HTTP_STATUS502 = fromString("HttpStatus502");
+
+ /**
+ * Creates or finds a ApplicationGatewayCustomErrorStatusCode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayCustomErrorStatusCode
+ */
+ @JsonCreator
+ public static ApplicationGatewayCustomErrorStatusCode fromString(String name) {
+ return fromString(name, ApplicationGatewayCustomErrorStatusCode.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayCustomErrorStatusCode values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayCustomErrorStatusCode.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallDisabledRuleGroup.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallDisabledRuleGroup.java
new file mode 100644
index 000000000000..fe19167600a2
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallDisabledRuleGroup.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Allows to disable rules within a rule group or an entire rule group.
+ */
+public class ApplicationGatewayFirewallDisabledRuleGroup {
+ /**
+ * The name of the rule group that will be disabled.
+ */
+ @JsonProperty(value = "ruleGroupName", required = true)
+ private String ruleGroupName;
+
+ /**
+ * The list of rules that will be disabled. If null, all rules of the rule
+ * group will be disabled.
+ */
+ @JsonProperty(value = "rules")
+ private List rules;
+
+ /**
+ * Get the name of the rule group that will be disabled.
+ *
+ * @return the ruleGroupName value
+ */
+ public String ruleGroupName() {
+ return this.ruleGroupName;
+ }
+
+ /**
+ * Set the name of the rule group that will be disabled.
+ *
+ * @param ruleGroupName the ruleGroupName value to set
+ * @return the ApplicationGatewayFirewallDisabledRuleGroup object itself.
+ */
+ public ApplicationGatewayFirewallDisabledRuleGroup withRuleGroupName(String ruleGroupName) {
+ this.ruleGroupName = ruleGroupName;
+ return this;
+ }
+
+ /**
+ * Get the list of rules that will be disabled. If null, all rules of the rule group will be disabled.
+ *
+ * @return the rules value
+ */
+ public List rules() {
+ return this.rules;
+ }
+
+ /**
+ * Set the list of rules that will be disabled. If null, all rules of the rule group will be disabled.
+ *
+ * @param rules the rules value to set
+ * @return the ApplicationGatewayFirewallDisabledRuleGroup object itself.
+ */
+ public ApplicationGatewayFirewallDisabledRuleGroup withRules(List rules) {
+ this.rules = rules;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallExclusion.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallExclusion.java
new file mode 100644
index 000000000000..230a1d6e46d1
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallExclusion.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Allow to exclude some variable satisfy the condition for the WAF check.
+ */
+public class ApplicationGatewayFirewallExclusion {
+ /**
+ * The variable to be excluded.
+ */
+ @JsonProperty(value = "matchVariable", required = true)
+ private String matchVariable;
+
+ /**
+ * When matchVariable is a collection, operate on the selector to specify
+ * which elements in the collection this exclusion applies to.
+ */
+ @JsonProperty(value = "selectorMatchOperator", required = true)
+ private String selectorMatchOperator;
+
+ /**
+ * When matchVariable is a collection, operator used to specify which
+ * elements in the collection this exclusion applies to.
+ */
+ @JsonProperty(value = "selector", required = true)
+ private String selector;
+
+ /**
+ * Get the variable to be excluded.
+ *
+ * @return the matchVariable value
+ */
+ public String matchVariable() {
+ return this.matchVariable;
+ }
+
+ /**
+ * Set the variable to be excluded.
+ *
+ * @param matchVariable the matchVariable value to set
+ * @return the ApplicationGatewayFirewallExclusion object itself.
+ */
+ public ApplicationGatewayFirewallExclusion withMatchVariable(String matchVariable) {
+ this.matchVariable = matchVariable;
+ return this;
+ }
+
+ /**
+ * Get when matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to.
+ *
+ * @return the selectorMatchOperator value
+ */
+ public String selectorMatchOperator() {
+ return this.selectorMatchOperator;
+ }
+
+ /**
+ * Set when matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to.
+ *
+ * @param selectorMatchOperator the selectorMatchOperator value to set
+ * @return the ApplicationGatewayFirewallExclusion object itself.
+ */
+ public ApplicationGatewayFirewallExclusion withSelectorMatchOperator(String selectorMatchOperator) {
+ this.selectorMatchOperator = selectorMatchOperator;
+ return this;
+ }
+
+ /**
+ * Get when matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to.
+ *
+ * @return the selector value
+ */
+ public String selector() {
+ return this.selector;
+ }
+
+ /**
+ * Set when matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to.
+ *
+ * @param selector the selector value to set
+ * @return the ApplicationGatewayFirewallExclusion object itself.
+ */
+ public ApplicationGatewayFirewallExclusion withSelector(String selector) {
+ this.selector = selector;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallMode.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallMode.java
new file mode 100644
index 000000000000..b554516a7f39
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallMode.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayFirewallMode.
+ */
+public final class ApplicationGatewayFirewallMode extends ExpandableStringEnum {
+ /** Static value Detection for ApplicationGatewayFirewallMode. */
+ public static final ApplicationGatewayFirewallMode DETECTION = fromString("Detection");
+
+ /** Static value Prevention for ApplicationGatewayFirewallMode. */
+ public static final ApplicationGatewayFirewallMode PREVENTION = fromString("Prevention");
+
+ /**
+ * Creates or finds a ApplicationGatewayFirewallMode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayFirewallMode
+ */
+ @JsonCreator
+ public static ApplicationGatewayFirewallMode fromString(String name) {
+ return fromString(name, ApplicationGatewayFirewallMode.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayFirewallMode values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayFirewallMode.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRule.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRule.java
new file mode 100644
index 000000000000..80e8ec838ebd
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRule.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A web application firewall rule.
+ */
+public class ApplicationGatewayFirewallRule {
+ /**
+ * The identifier of the web application firewall rule.
+ */
+ @JsonProperty(value = "ruleId", required = true)
+ private int ruleId;
+
+ /**
+ * The description of the web application firewall rule.
+ */
+ @JsonProperty(value = "description")
+ private String description;
+
+ /**
+ * Get the identifier of the web application firewall rule.
+ *
+ * @return the ruleId value
+ */
+ public int ruleId() {
+ return this.ruleId;
+ }
+
+ /**
+ * Set the identifier of the web application firewall rule.
+ *
+ * @param ruleId the ruleId value to set
+ * @return the ApplicationGatewayFirewallRule object itself.
+ */
+ public ApplicationGatewayFirewallRule withRuleId(int ruleId) {
+ this.ruleId = ruleId;
+ return this;
+ }
+
+ /**
+ * Get the description of the web application firewall rule.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description of the web application firewall rule.
+ *
+ * @param description the description value to set
+ * @return the ApplicationGatewayFirewallRule object itself.
+ */
+ public ApplicationGatewayFirewallRule withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRuleGroup.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRuleGroup.java
new file mode 100644
index 000000000000..a466e1698801
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRuleGroup.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A web application firewall rule group.
+ */
+public class ApplicationGatewayFirewallRuleGroup {
+ /**
+ * The name of the web application firewall rule group.
+ */
+ @JsonProperty(value = "ruleGroupName", required = true)
+ private String ruleGroupName;
+
+ /**
+ * The description of the web application firewall rule group.
+ */
+ @JsonProperty(value = "description")
+ private String description;
+
+ /**
+ * The rules of the web application firewall rule group.
+ */
+ @JsonProperty(value = "rules", required = true)
+ private List rules;
+
+ /**
+ * Get the name of the web application firewall rule group.
+ *
+ * @return the ruleGroupName value
+ */
+ public String ruleGroupName() {
+ return this.ruleGroupName;
+ }
+
+ /**
+ * Set the name of the web application firewall rule group.
+ *
+ * @param ruleGroupName the ruleGroupName value to set
+ * @return the ApplicationGatewayFirewallRuleGroup object itself.
+ */
+ public ApplicationGatewayFirewallRuleGroup withRuleGroupName(String ruleGroupName) {
+ this.ruleGroupName = ruleGroupName;
+ return this;
+ }
+
+ /**
+ * Get the description of the web application firewall rule group.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description of the web application firewall rule group.
+ *
+ * @param description the description value to set
+ * @return the ApplicationGatewayFirewallRuleGroup object itself.
+ */
+ public ApplicationGatewayFirewallRuleGroup withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the rules of the web application firewall rule group.
+ *
+ * @return the rules value
+ */
+ public List rules() {
+ return this.rules;
+ }
+
+ /**
+ * Set the rules of the web application firewall rule group.
+ *
+ * @param rules the rules value to set
+ * @return the ApplicationGatewayFirewallRuleGroup object itself.
+ */
+ public ApplicationGatewayFirewallRuleGroup withRules(List rules) {
+ this.rules = rules;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRuleSet.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRuleSet.java
new file mode 100644
index 000000000000..86769851f4f2
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFirewallRuleSet.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.rest.SkipParentValidation;
+import com.microsoft.azure.Resource;
+
+/**
+ * A web application firewall rule set.
+ */
+@JsonFlatten
+@SkipParentValidation
+public class ApplicationGatewayFirewallRuleSet extends Resource {
+ /**
+ * The provisioning state of the web application firewall rule set.
+ * Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * The type of the web application firewall rule set.
+ */
+ @JsonProperty(value = "properties.ruleSetType", required = true)
+ private String ruleSetType;
+
+ /**
+ * The version of the web application firewall rule set type.
+ */
+ @JsonProperty(value = "properties.ruleSetVersion", required = true)
+ private String ruleSetVersion;
+
+ /**
+ * The rule groups of the web application firewall rule set.
+ */
+ @JsonProperty(value = "properties.ruleGroups", required = true)
+ private List ruleGroups;
+
+ /**
+ * Resource ID.
+ */
+ @JsonProperty(value = "id")
+ private String id;
+
+ /**
+ * Get the provisioning state of the web application firewall rule set. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the type of the web application firewall rule set.
+ *
+ * @return the ruleSetType value
+ */
+ public String ruleSetType() {
+ return this.ruleSetType;
+ }
+
+ /**
+ * Set the type of the web application firewall rule set.
+ *
+ * @param ruleSetType the ruleSetType value to set
+ * @return the ApplicationGatewayFirewallRuleSet object itself.
+ */
+ public ApplicationGatewayFirewallRuleSet withRuleSetType(String ruleSetType) {
+ this.ruleSetType = ruleSetType;
+ return this;
+ }
+
+ /**
+ * Get the version of the web application firewall rule set type.
+ *
+ * @return the ruleSetVersion value
+ */
+ public String ruleSetVersion() {
+ return this.ruleSetVersion;
+ }
+
+ /**
+ * Set the version of the web application firewall rule set type.
+ *
+ * @param ruleSetVersion the ruleSetVersion value to set
+ * @return the ApplicationGatewayFirewallRuleSet object itself.
+ */
+ public ApplicationGatewayFirewallRuleSet withRuleSetVersion(String ruleSetVersion) {
+ this.ruleSetVersion = ruleSetVersion;
+ return this;
+ }
+
+ /**
+ * Get the rule groups of the web application firewall rule set.
+ *
+ * @return the ruleGroups value
+ */
+ public List ruleGroups() {
+ return this.ruleGroups;
+ }
+
+ /**
+ * Set the rule groups of the web application firewall rule set.
+ *
+ * @param ruleGroups the ruleGroups value to set
+ * @return the ApplicationGatewayFirewallRuleSet object itself.
+ */
+ public ApplicationGatewayFirewallRuleSet withRuleGroups(List ruleGroups) {
+ this.ruleGroups = ruleGroups;
+ return this;
+ }
+
+ /**
+ * Get resource ID.
+ *
+ * @return the id value
+ */
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Set resource ID.
+ *
+ * @param id the id value to set
+ * @return the ApplicationGatewayFirewallRuleSet object itself.
+ */
+ public ApplicationGatewayFirewallRuleSet withId(String id) {
+ this.id = id;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFrontendIPConfiguration.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFrontendIPConfiguration.java
new file mode 100644
index 000000000000..dc4a25205bfc
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFrontendIPConfiguration.java
@@ -0,0 +1,198 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Frontend IP configuration of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayFrontendIPConfiguration extends SubResource {
+ /**
+ * PrivateIPAddress of the network interface IP Configuration.
+ */
+ @JsonProperty(value = "properties.privateIPAddress")
+ private String privateIPAddress;
+
+ /**
+ * The private IP address allocation method. Possible values include:
+ * 'Static', 'Dynamic'.
+ */
+ @JsonProperty(value = "properties.privateIPAllocationMethod")
+ private IPAllocationMethod privateIPAllocationMethod;
+
+ /**
+ * Reference to the subnet resource.
+ */
+ @JsonProperty(value = "properties.subnet")
+ private SubResource subnet;
+
+ /**
+ * Reference to the PublicIP resource.
+ */
+ @JsonProperty(value = "properties.publicIPAddress")
+ private SubResource publicIPAddress;
+
+ /**
+ * The provisioning state of the frontend IP configuration resource.
+ * Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the frontend IP configuration that is unique within an
+ * Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get privateIPAddress of the network interface IP Configuration.
+ *
+ * @return the privateIPAddress value
+ */
+ public String privateIPAddress() {
+ return this.privateIPAddress;
+ }
+
+ /**
+ * Set privateIPAddress of the network interface IP Configuration.
+ *
+ * @param privateIPAddress the privateIPAddress value to set
+ * @return the ApplicationGatewayFrontendIPConfiguration object itself.
+ */
+ public ApplicationGatewayFrontendIPConfiguration withPrivateIPAddress(String privateIPAddress) {
+ this.privateIPAddress = privateIPAddress;
+ return this;
+ }
+
+ /**
+ * Get the private IP address allocation method. Possible values include: 'Static', 'Dynamic'.
+ *
+ * @return the privateIPAllocationMethod value
+ */
+ public IPAllocationMethod privateIPAllocationMethod() {
+ return this.privateIPAllocationMethod;
+ }
+
+ /**
+ * Set the private IP address allocation method. Possible values include: 'Static', 'Dynamic'.
+ *
+ * @param privateIPAllocationMethod the privateIPAllocationMethod value to set
+ * @return the ApplicationGatewayFrontendIPConfiguration object itself.
+ */
+ public ApplicationGatewayFrontendIPConfiguration withPrivateIPAllocationMethod(IPAllocationMethod privateIPAllocationMethod) {
+ this.privateIPAllocationMethod = privateIPAllocationMethod;
+ return this;
+ }
+
+ /**
+ * Get reference to the subnet resource.
+ *
+ * @return the subnet value
+ */
+ public SubResource subnet() {
+ return this.subnet;
+ }
+
+ /**
+ * Set reference to the subnet resource.
+ *
+ * @param subnet the subnet value to set
+ * @return the ApplicationGatewayFrontendIPConfiguration object itself.
+ */
+ public ApplicationGatewayFrontendIPConfiguration withSubnet(SubResource subnet) {
+ this.subnet = subnet;
+ return this;
+ }
+
+ /**
+ * Get reference to the PublicIP resource.
+ *
+ * @return the publicIPAddress value
+ */
+ public SubResource publicIPAddress() {
+ return this.publicIPAddress;
+ }
+
+ /**
+ * Set reference to the PublicIP resource.
+ *
+ * @param publicIPAddress the publicIPAddress value to set
+ * @return the ApplicationGatewayFrontendIPConfiguration object itself.
+ */
+ public ApplicationGatewayFrontendIPConfiguration withPublicIPAddress(SubResource publicIPAddress) {
+ this.publicIPAddress = publicIPAddress;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the frontend IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the frontend IP configuration that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the frontend IP configuration that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayFrontendIPConfiguration object itself.
+ */
+ public ApplicationGatewayFrontendIPConfiguration withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFrontendPort.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFrontendPort.java
new file mode 100644
index 000000000000..3de5585c29d0
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayFrontendPort.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.SubResource;
+
+/**
+ * Frontend port of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayFrontendPort extends SubResource {
+ /**
+ * Frontend port.
+ */
+ @JsonProperty(value = "properties.port")
+ private Integer port;
+
+ /**
+ * The provisioning state of the frontend port resource. Possible values
+ * include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the frontend port that is unique within an Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get frontend port.
+ *
+ * @return the port value
+ */
+ public Integer port() {
+ return this.port;
+ }
+
+ /**
+ * Set frontend port.
+ *
+ * @param port the port value to set
+ * @return the ApplicationGatewayFrontendPort object itself.
+ */
+ public ApplicationGatewayFrontendPort withPort(Integer port) {
+ this.port = port;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the frontend port resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the frontend port that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the frontend port that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayFrontendPort object itself.
+ */
+ public ApplicationGatewayFrontendPort withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayHeaderConfiguration.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayHeaderConfiguration.java
new file mode 100644
index 000000000000..5104711292ee
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayHeaderConfiguration.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Header configuration of the Actions set in Application Gateway.
+ */
+public class ApplicationGatewayHeaderConfiguration {
+ /**
+ * Header name of the header configuration.
+ */
+ @JsonProperty(value = "headerName")
+ private String headerName;
+
+ /**
+ * Header value of the header configuration.
+ */
+ @JsonProperty(value = "headerValue")
+ private String headerValue;
+
+ /**
+ * Get header name of the header configuration.
+ *
+ * @return the headerName value
+ */
+ public String headerName() {
+ return this.headerName;
+ }
+
+ /**
+ * Set header name of the header configuration.
+ *
+ * @param headerName the headerName value to set
+ * @return the ApplicationGatewayHeaderConfiguration object itself.
+ */
+ public ApplicationGatewayHeaderConfiguration withHeaderName(String headerName) {
+ this.headerName = headerName;
+ return this;
+ }
+
+ /**
+ * Get header value of the header configuration.
+ *
+ * @return the headerValue value
+ */
+ public String headerValue() {
+ return this.headerValue;
+ }
+
+ /**
+ * Set header value of the header configuration.
+ *
+ * @param headerValue the headerValue value to set
+ * @return the ApplicationGatewayHeaderConfiguration object itself.
+ */
+ public ApplicationGatewayHeaderConfiguration withHeaderValue(String headerValue) {
+ this.headerValue = headerValue;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayHttpListener.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayHttpListener.java
new file mode 100644
index 000000000000..92c77313253e
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayHttpListener.java
@@ -0,0 +1,328 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Http listener of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayHttpListener extends SubResource {
+ /**
+ * Frontend IP configuration resource of an application gateway.
+ */
+ @JsonProperty(value = "properties.frontendIPConfiguration")
+ private SubResource frontendIPConfiguration;
+
+ /**
+ * Frontend port resource of an application gateway.
+ */
+ @JsonProperty(value = "properties.frontendPort")
+ private SubResource frontendPort;
+
+ /**
+ * Protocol of the HTTP listener. Possible values include: 'Http', 'Https'.
+ */
+ @JsonProperty(value = "properties.protocol")
+ private ApplicationGatewayProtocol protocol;
+
+ /**
+ * Host name of HTTP listener.
+ */
+ @JsonProperty(value = "properties.hostName")
+ private String hostName;
+
+ /**
+ * SSL certificate resource of an application gateway.
+ */
+ @JsonProperty(value = "properties.sslCertificate")
+ private SubResource sslCertificate;
+
+ /**
+ * Applicable only if protocol is https. Enables SNI for multi-hosting.
+ */
+ @JsonProperty(value = "properties.requireServerNameIndication")
+ private Boolean requireServerNameIndication;
+
+ /**
+ * The provisioning state of the HTTP listener resource. Possible values
+ * include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Custom error configurations of the HTTP listener.
+ */
+ @JsonProperty(value = "properties.customErrorConfigurations")
+ private List customErrorConfigurations;
+
+ /**
+ * Reference to the FirewallPolicy resource.
+ */
+ @JsonProperty(value = "properties.firewallPolicy")
+ private SubResource firewallPolicy;
+
+ /**
+ * List of Host names for HTTP Listener that allows special wildcard
+ * characters as well.
+ */
+ @JsonProperty(value = "properties.hostNames")
+ private List hostNames;
+
+ /**
+ * Name of the HTTP listener that is unique within an Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get frontend IP configuration resource of an application gateway.
+ *
+ * @return the frontendIPConfiguration value
+ */
+ public SubResource frontendIPConfiguration() {
+ return this.frontendIPConfiguration;
+ }
+
+ /**
+ * Set frontend IP configuration resource of an application gateway.
+ *
+ * @param frontendIPConfiguration the frontendIPConfiguration value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withFrontendIPConfiguration(SubResource frontendIPConfiguration) {
+ this.frontendIPConfiguration = frontendIPConfiguration;
+ return this;
+ }
+
+ /**
+ * Get frontend port resource of an application gateway.
+ *
+ * @return the frontendPort value
+ */
+ public SubResource frontendPort() {
+ return this.frontendPort;
+ }
+
+ /**
+ * Set frontend port resource of an application gateway.
+ *
+ * @param frontendPort the frontendPort value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withFrontendPort(SubResource frontendPort) {
+ this.frontendPort = frontendPort;
+ return this;
+ }
+
+ /**
+ * Get protocol of the HTTP listener. Possible values include: 'Http', 'Https'.
+ *
+ * @return the protocol value
+ */
+ public ApplicationGatewayProtocol protocol() {
+ return this.protocol;
+ }
+
+ /**
+ * Set protocol of the HTTP listener. Possible values include: 'Http', 'Https'.
+ *
+ * @param protocol the protocol value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withProtocol(ApplicationGatewayProtocol protocol) {
+ this.protocol = protocol;
+ return this;
+ }
+
+ /**
+ * Get host name of HTTP listener.
+ *
+ * @return the hostName value
+ */
+ public String hostName() {
+ return this.hostName;
+ }
+
+ /**
+ * Set host name of HTTP listener.
+ *
+ * @param hostName the hostName value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withHostName(String hostName) {
+ this.hostName = hostName;
+ return this;
+ }
+
+ /**
+ * Get sSL certificate resource of an application gateway.
+ *
+ * @return the sslCertificate value
+ */
+ public SubResource sslCertificate() {
+ return this.sslCertificate;
+ }
+
+ /**
+ * Set sSL certificate resource of an application gateway.
+ *
+ * @param sslCertificate the sslCertificate value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withSslCertificate(SubResource sslCertificate) {
+ this.sslCertificate = sslCertificate;
+ return this;
+ }
+
+ /**
+ * Get applicable only if protocol is https. Enables SNI for multi-hosting.
+ *
+ * @return the requireServerNameIndication value
+ */
+ public Boolean requireServerNameIndication() {
+ return this.requireServerNameIndication;
+ }
+
+ /**
+ * Set applicable only if protocol is https. Enables SNI for multi-hosting.
+ *
+ * @param requireServerNameIndication the requireServerNameIndication value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withRequireServerNameIndication(Boolean requireServerNameIndication) {
+ this.requireServerNameIndication = requireServerNameIndication;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the HTTP listener resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get custom error configurations of the HTTP listener.
+ *
+ * @return the customErrorConfigurations value
+ */
+ public List customErrorConfigurations() {
+ return this.customErrorConfigurations;
+ }
+
+ /**
+ * Set custom error configurations of the HTTP listener.
+ *
+ * @param customErrorConfigurations the customErrorConfigurations value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withCustomErrorConfigurations(List customErrorConfigurations) {
+ this.customErrorConfigurations = customErrorConfigurations;
+ return this;
+ }
+
+ /**
+ * Get reference to the FirewallPolicy resource.
+ *
+ * @return the firewallPolicy value
+ */
+ public SubResource firewallPolicy() {
+ return this.firewallPolicy;
+ }
+
+ /**
+ * Set reference to the FirewallPolicy resource.
+ *
+ * @param firewallPolicy the firewallPolicy value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withFirewallPolicy(SubResource firewallPolicy) {
+ this.firewallPolicy = firewallPolicy;
+ return this;
+ }
+
+ /**
+ * Get list of Host names for HTTP Listener that allows special wildcard characters as well.
+ *
+ * @return the hostNames value
+ */
+ public List hostNames() {
+ return this.hostNames;
+ }
+
+ /**
+ * Set list of Host names for HTTP Listener that allows special wildcard characters as well.
+ *
+ * @param hostNames the hostNames value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withHostNames(List hostNames) {
+ this.hostNames = hostNames;
+ return this;
+ }
+
+ /**
+ * Get name of the HTTP listener that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the HTTP listener that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayHttpListener object itself.
+ */
+ public ApplicationGatewayHttpListener withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayIPConfiguration.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayIPConfiguration.java
new file mode 100644
index 000000000000..4ac1d777a31e
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayIPConfiguration.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * IP configuration of an application gateway. Currently 1 public and 1 private
+ * IP configuration is allowed.
+ */
+@JsonFlatten
+public class ApplicationGatewayIPConfiguration extends SubResource {
+ /**
+ * Reference to the subnet resource. A subnet from where application
+ * gateway gets its private address.
+ */
+ @JsonProperty(value = "properties.subnet")
+ private SubResource subnet;
+
+ /**
+ * The provisioning state of the application gateway IP configuration
+ * resource. Possible values include: 'Succeeded', 'Updating', 'Deleting',
+ * 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the IP configuration that is unique within an Application
+ * Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get reference to the subnet resource. A subnet from where application gateway gets its private address.
+ *
+ * @return the subnet value
+ */
+ public SubResource subnet() {
+ return this.subnet;
+ }
+
+ /**
+ * Set reference to the subnet resource. A subnet from where application gateway gets its private address.
+ *
+ * @param subnet the subnet value to set
+ * @return the ApplicationGatewayIPConfiguration object itself.
+ */
+ public ApplicationGatewayIPConfiguration withSubnet(SubResource subnet) {
+ this.subnet = subnet;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the application gateway IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the IP configuration that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the IP configuration that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayIPConfiguration object itself.
+ */
+ public ApplicationGatewayIPConfiguration withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayOnDemandProbe.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayOnDemandProbe.java
new file mode 100644
index 000000000000..39a402fb98f6
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayOnDemandProbe.java
@@ -0,0 +1,233 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Details of on demand test probe request.
+ */
+public class ApplicationGatewayOnDemandProbe {
+ /**
+ * The protocol used for the probe. Possible values include: 'Http',
+ * 'Https'.
+ */
+ @JsonProperty(value = "protocol")
+ private ApplicationGatewayProtocol protocol;
+
+ /**
+ * Host name to send the probe to.
+ */
+ @JsonProperty(value = "host")
+ private String host;
+
+ /**
+ * Relative path of probe. Valid path starts from '/'. Probe is sent to
+ * <Protocol>://<host>:<port><path>.
+ */
+ @JsonProperty(value = "path")
+ private String path;
+
+ /**
+ * The probe timeout in seconds. Probe marked as failed if valid response
+ * is not received with this timeout period. Acceptable values are from 1
+ * second to 86400 seconds.
+ */
+ @JsonProperty(value = "timeout")
+ private Integer timeout;
+
+ /**
+ * Whether the host header should be picked from the backend http settings.
+ * Default value is false.
+ */
+ @JsonProperty(value = "pickHostNameFromBackendHttpSettings")
+ private Boolean pickHostNameFromBackendHttpSettings;
+
+ /**
+ * Criterion for classifying a healthy probe response.
+ */
+ @JsonProperty(value = "match")
+ private ApplicationGatewayProbeHealthResponseMatch match;
+
+ /**
+ * Reference to backend pool of application gateway to which probe request
+ * will be sent.
+ */
+ @JsonProperty(value = "backendAddressPool")
+ private SubResource backendAddressPool;
+
+ /**
+ * Reference to backend http setting of application gateway to be used for
+ * test probe.
+ */
+ @JsonProperty(value = "backendHttpSettings")
+ private SubResource backendHttpSettings;
+
+ /**
+ * Get the protocol used for the probe. Possible values include: 'Http', 'Https'.
+ *
+ * @return the protocol value
+ */
+ public ApplicationGatewayProtocol protocol() {
+ return this.protocol;
+ }
+
+ /**
+ * Set the protocol used for the probe. Possible values include: 'Http', 'Https'.
+ *
+ * @param protocol the protocol value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withProtocol(ApplicationGatewayProtocol protocol) {
+ this.protocol = protocol;
+ return this;
+ }
+
+ /**
+ * Get host name to send the probe to.
+ *
+ * @return the host value
+ */
+ public String host() {
+ return this.host;
+ }
+
+ /**
+ * Set host name to send the probe to.
+ *
+ * @param host the host value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withHost(String host) {
+ this.host = host;
+ return this;
+ }
+
+ /**
+ * Get relative path of probe. Valid path starts from '/'. Probe is sent to <Protocol>://<host>:<port><path>.
+ *
+ * @return the path value
+ */
+ public String path() {
+ return this.path;
+ }
+
+ /**
+ * Set relative path of probe. Valid path starts from '/'. Probe is sent to <Protocol>://<host>:<port><path>.
+ *
+ * @param path the path value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withPath(String path) {
+ this.path = path;
+ return this;
+ }
+
+ /**
+ * Get the probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @return the timeout value
+ */
+ public Integer timeout() {
+ return this.timeout;
+ }
+
+ /**
+ * Set the probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @param timeout the timeout value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withTimeout(Integer timeout) {
+ this.timeout = timeout;
+ return this;
+ }
+
+ /**
+ * Get whether the host header should be picked from the backend http settings. Default value is false.
+ *
+ * @return the pickHostNameFromBackendHttpSettings value
+ */
+ public Boolean pickHostNameFromBackendHttpSettings() {
+ return this.pickHostNameFromBackendHttpSettings;
+ }
+
+ /**
+ * Set whether the host header should be picked from the backend http settings. Default value is false.
+ *
+ * @param pickHostNameFromBackendHttpSettings the pickHostNameFromBackendHttpSettings value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withPickHostNameFromBackendHttpSettings(Boolean pickHostNameFromBackendHttpSettings) {
+ this.pickHostNameFromBackendHttpSettings = pickHostNameFromBackendHttpSettings;
+ return this;
+ }
+
+ /**
+ * Get criterion for classifying a healthy probe response.
+ *
+ * @return the match value
+ */
+ public ApplicationGatewayProbeHealthResponseMatch match() {
+ return this.match;
+ }
+
+ /**
+ * Set criterion for classifying a healthy probe response.
+ *
+ * @param match the match value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withMatch(ApplicationGatewayProbeHealthResponseMatch match) {
+ this.match = match;
+ return this;
+ }
+
+ /**
+ * Get reference to backend pool of application gateway to which probe request will be sent.
+ *
+ * @return the backendAddressPool value
+ */
+ public SubResource backendAddressPool() {
+ return this.backendAddressPool;
+ }
+
+ /**
+ * Set reference to backend pool of application gateway to which probe request will be sent.
+ *
+ * @param backendAddressPool the backendAddressPool value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withBackendAddressPool(SubResource backendAddressPool) {
+ this.backendAddressPool = backendAddressPool;
+ return this;
+ }
+
+ /**
+ * Get reference to backend http setting of application gateway to be used for test probe.
+ *
+ * @return the backendHttpSettings value
+ */
+ public SubResource backendHttpSettings() {
+ return this.backendHttpSettings;
+ }
+
+ /**
+ * Set reference to backend http setting of application gateway to be used for test probe.
+ *
+ * @param backendHttpSettings the backendHttpSettings value to set
+ * @return the ApplicationGatewayOnDemandProbe object itself.
+ */
+ public ApplicationGatewayOnDemandProbe withBackendHttpSettings(SubResource backendHttpSettings) {
+ this.backendHttpSettings = backendHttpSettings;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayOperationalState.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayOperationalState.java
new file mode 100644
index 000000000000..922bcc35ac63
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayOperationalState.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayOperationalState.
+ */
+public final class ApplicationGatewayOperationalState extends ExpandableStringEnum {
+ /** Static value Stopped for ApplicationGatewayOperationalState. */
+ public static final ApplicationGatewayOperationalState STOPPED = fromString("Stopped");
+
+ /** Static value Starting for ApplicationGatewayOperationalState. */
+ public static final ApplicationGatewayOperationalState STARTING = fromString("Starting");
+
+ /** Static value Running for ApplicationGatewayOperationalState. */
+ public static final ApplicationGatewayOperationalState RUNNING = fromString("Running");
+
+ /** Static value Stopping for ApplicationGatewayOperationalState. */
+ public static final ApplicationGatewayOperationalState STOPPING = fromString("Stopping");
+
+ /**
+ * Creates or finds a ApplicationGatewayOperationalState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayOperationalState
+ */
+ @JsonCreator
+ public static ApplicationGatewayOperationalState fromString(String name) {
+ return fromString(name, ApplicationGatewayOperationalState.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayOperationalState values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayOperationalState.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayPathRule.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayPathRule.java
new file mode 100644
index 000000000000..c6b3986276f7
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayPathRule.java
@@ -0,0 +1,249 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.microsoft.azure.SubResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Path rule of URL path map of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayPathRule extends SubResource {
+ /**
+ * Path rules of URL path map.
+ */
+ @JsonProperty(value = "properties.paths")
+ private List paths;
+
+ /**
+ * Backend address pool resource of URL path map path rule.
+ */
+ @JsonProperty(value = "properties.backendAddressPool")
+ private SubResource backendAddressPool;
+
+ /**
+ * Backend http settings resource of URL path map path rule.
+ */
+ @JsonProperty(value = "properties.backendHttpSettings")
+ private SubResource backendHttpSettings;
+
+ /**
+ * Redirect configuration resource of URL path map path rule.
+ */
+ @JsonProperty(value = "properties.redirectConfiguration")
+ private SubResource redirectConfiguration;
+
+ /**
+ * Rewrite rule set resource of URL path map path rule.
+ */
+ @JsonProperty(value = "properties.rewriteRuleSet")
+ private SubResource rewriteRuleSet;
+
+ /**
+ * The provisioning state of the path rule resource. Possible values
+ * include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Reference to the FirewallPolicy resource.
+ */
+ @JsonProperty(value = "properties.firewallPolicy")
+ private SubResource firewallPolicy;
+
+ /**
+ * Name of the path rule that is unique within an Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get path rules of URL path map.
+ *
+ * @return the paths value
+ */
+ public List paths() {
+ return this.paths;
+ }
+
+ /**
+ * Set path rules of URL path map.
+ *
+ * @param paths the paths value to set
+ * @return the ApplicationGatewayPathRule object itself.
+ */
+ public ApplicationGatewayPathRule withPaths(List paths) {
+ this.paths = paths;
+ return this;
+ }
+
+ /**
+ * Get backend address pool resource of URL path map path rule.
+ *
+ * @return the backendAddressPool value
+ */
+ public SubResource backendAddressPool() {
+ return this.backendAddressPool;
+ }
+
+ /**
+ * Set backend address pool resource of URL path map path rule.
+ *
+ * @param backendAddressPool the backendAddressPool value to set
+ * @return the ApplicationGatewayPathRule object itself.
+ */
+ public ApplicationGatewayPathRule withBackendAddressPool(SubResource backendAddressPool) {
+ this.backendAddressPool = backendAddressPool;
+ return this;
+ }
+
+ /**
+ * Get backend http settings resource of URL path map path rule.
+ *
+ * @return the backendHttpSettings value
+ */
+ public SubResource backendHttpSettings() {
+ return this.backendHttpSettings;
+ }
+
+ /**
+ * Set backend http settings resource of URL path map path rule.
+ *
+ * @param backendHttpSettings the backendHttpSettings value to set
+ * @return the ApplicationGatewayPathRule object itself.
+ */
+ public ApplicationGatewayPathRule withBackendHttpSettings(SubResource backendHttpSettings) {
+ this.backendHttpSettings = backendHttpSettings;
+ return this;
+ }
+
+ /**
+ * Get redirect configuration resource of URL path map path rule.
+ *
+ * @return the redirectConfiguration value
+ */
+ public SubResource redirectConfiguration() {
+ return this.redirectConfiguration;
+ }
+
+ /**
+ * Set redirect configuration resource of URL path map path rule.
+ *
+ * @param redirectConfiguration the redirectConfiguration value to set
+ * @return the ApplicationGatewayPathRule object itself.
+ */
+ public ApplicationGatewayPathRule withRedirectConfiguration(SubResource redirectConfiguration) {
+ this.redirectConfiguration = redirectConfiguration;
+ return this;
+ }
+
+ /**
+ * Get rewrite rule set resource of URL path map path rule.
+ *
+ * @return the rewriteRuleSet value
+ */
+ public SubResource rewriteRuleSet() {
+ return this.rewriteRuleSet;
+ }
+
+ /**
+ * Set rewrite rule set resource of URL path map path rule.
+ *
+ * @param rewriteRuleSet the rewriteRuleSet value to set
+ * @return the ApplicationGatewayPathRule object itself.
+ */
+ public ApplicationGatewayPathRule withRewriteRuleSet(SubResource rewriteRuleSet) {
+ this.rewriteRuleSet = rewriteRuleSet;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the path rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get reference to the FirewallPolicy resource.
+ *
+ * @return the firewallPolicy value
+ */
+ public SubResource firewallPolicy() {
+ return this.firewallPolicy;
+ }
+
+ /**
+ * Set reference to the FirewallPolicy resource.
+ *
+ * @param firewallPolicy the firewallPolicy value to set
+ * @return the ApplicationGatewayPathRule object itself.
+ */
+ public ApplicationGatewayPathRule withFirewallPolicy(SubResource firewallPolicy) {
+ this.firewallPolicy = firewallPolicy;
+ return this;
+ }
+
+ /**
+ * Get name of the path rule that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the path rule that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayPathRule object itself.
+ */
+ public ApplicationGatewayPathRule withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProbe.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProbe.java
new file mode 100644
index 000000000000..0d5166d4cf33
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProbe.java
@@ -0,0 +1,365 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.SubResource;
+
+/**
+ * Probe of the application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayProbe extends SubResource {
+ /**
+ * The protocol used for the probe. Possible values include: 'Http',
+ * 'Https'.
+ */
+ @JsonProperty(value = "properties.protocol")
+ private ApplicationGatewayProtocol protocol;
+
+ /**
+ * Host name to send the probe to.
+ */
+ @JsonProperty(value = "properties.host")
+ private String host;
+
+ /**
+ * Relative path of probe. Valid path starts from '/'. Probe is sent to
+ * <Protocol>://<host>:<port><path>.
+ */
+ @JsonProperty(value = "properties.path")
+ private String path;
+
+ /**
+ * The probing interval in seconds. This is the time interval between two
+ * consecutive probes. Acceptable values are from 1 second to 86400
+ * seconds.
+ */
+ @JsonProperty(value = "properties.interval")
+ private Integer interval;
+
+ /**
+ * The probe timeout in seconds. Probe marked as failed if valid response
+ * is not received with this timeout period. Acceptable values are from 1
+ * second to 86400 seconds.
+ */
+ @JsonProperty(value = "properties.timeout")
+ private Integer timeout;
+
+ /**
+ * The probe retry count. Backend server is marked down after consecutive
+ * probe failure count reaches UnhealthyThreshold. Acceptable values are
+ * from 1 second to 20.
+ */
+ @JsonProperty(value = "properties.unhealthyThreshold")
+ private Integer unhealthyThreshold;
+
+ /**
+ * Whether the host header should be picked from the backend http settings.
+ * Default value is false.
+ */
+ @JsonProperty(value = "properties.pickHostNameFromBackendHttpSettings")
+ private Boolean pickHostNameFromBackendHttpSettings;
+
+ /**
+ * Minimum number of servers that are always marked healthy. Default value
+ * is 0.
+ */
+ @JsonProperty(value = "properties.minServers")
+ private Integer minServers;
+
+ /**
+ * Criterion for classifying a healthy probe response.
+ */
+ @JsonProperty(value = "properties.match")
+ private ApplicationGatewayProbeHealthResponseMatch match;
+
+ /**
+ * The provisioning state of the probe resource. Possible values include:
+ * 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Custom port which will be used for probing the backend servers. The
+ * valid value ranges from 1 to 65535. In case not set, port from http
+ * settings will be used. This property is valid for Standard_v2 and WAF_v2
+ * only.
+ */
+ @JsonProperty(value = "properties.port")
+ private Integer port;
+
+ /**
+ * Name of the probe that is unique within an Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get the protocol used for the probe. Possible values include: 'Http', 'Https'.
+ *
+ * @return the protocol value
+ */
+ public ApplicationGatewayProtocol protocol() {
+ return this.protocol;
+ }
+
+ /**
+ * Set the protocol used for the probe. Possible values include: 'Http', 'Https'.
+ *
+ * @param protocol the protocol value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withProtocol(ApplicationGatewayProtocol protocol) {
+ this.protocol = protocol;
+ return this;
+ }
+
+ /**
+ * Get host name to send the probe to.
+ *
+ * @return the host value
+ */
+ public String host() {
+ return this.host;
+ }
+
+ /**
+ * Set host name to send the probe to.
+ *
+ * @param host the host value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withHost(String host) {
+ this.host = host;
+ return this;
+ }
+
+ /**
+ * Get relative path of probe. Valid path starts from '/'. Probe is sent to <Protocol>://<host>:<port><path>.
+ *
+ * @return the path value
+ */
+ public String path() {
+ return this.path;
+ }
+
+ /**
+ * Set relative path of probe. Valid path starts from '/'. Probe is sent to <Protocol>://<host>:<port><path>.
+ *
+ * @param path the path value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withPath(String path) {
+ this.path = path;
+ return this;
+ }
+
+ /**
+ * Get the probing interval in seconds. This is the time interval between two consecutive probes. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @return the interval value
+ */
+ public Integer interval() {
+ return this.interval;
+ }
+
+ /**
+ * Set the probing interval in seconds. This is the time interval between two consecutive probes. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @param interval the interval value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withInterval(Integer interval) {
+ this.interval = interval;
+ return this;
+ }
+
+ /**
+ * Get the probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @return the timeout value
+ */
+ public Integer timeout() {
+ return this.timeout;
+ }
+
+ /**
+ * Set the probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
+ *
+ * @param timeout the timeout value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withTimeout(Integer timeout) {
+ this.timeout = timeout;
+ return this;
+ }
+
+ /**
+ * Get the probe retry count. Backend server is marked down after consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second to 20.
+ *
+ * @return the unhealthyThreshold value
+ */
+ public Integer unhealthyThreshold() {
+ return this.unhealthyThreshold;
+ }
+
+ /**
+ * Set the probe retry count. Backend server is marked down after consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second to 20.
+ *
+ * @param unhealthyThreshold the unhealthyThreshold value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withUnhealthyThreshold(Integer unhealthyThreshold) {
+ this.unhealthyThreshold = unhealthyThreshold;
+ return this;
+ }
+
+ /**
+ * Get whether the host header should be picked from the backend http settings. Default value is false.
+ *
+ * @return the pickHostNameFromBackendHttpSettings value
+ */
+ public Boolean pickHostNameFromBackendHttpSettings() {
+ return this.pickHostNameFromBackendHttpSettings;
+ }
+
+ /**
+ * Set whether the host header should be picked from the backend http settings. Default value is false.
+ *
+ * @param pickHostNameFromBackendHttpSettings the pickHostNameFromBackendHttpSettings value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withPickHostNameFromBackendHttpSettings(Boolean pickHostNameFromBackendHttpSettings) {
+ this.pickHostNameFromBackendHttpSettings = pickHostNameFromBackendHttpSettings;
+ return this;
+ }
+
+ /**
+ * Get minimum number of servers that are always marked healthy. Default value is 0.
+ *
+ * @return the minServers value
+ */
+ public Integer minServers() {
+ return this.minServers;
+ }
+
+ /**
+ * Set minimum number of servers that are always marked healthy. Default value is 0.
+ *
+ * @param minServers the minServers value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withMinServers(Integer minServers) {
+ this.minServers = minServers;
+ return this;
+ }
+
+ /**
+ * Get criterion for classifying a healthy probe response.
+ *
+ * @return the match value
+ */
+ public ApplicationGatewayProbeHealthResponseMatch match() {
+ return this.match;
+ }
+
+ /**
+ * Set criterion for classifying a healthy probe response.
+ *
+ * @param match the match value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withMatch(ApplicationGatewayProbeHealthResponseMatch match) {
+ this.match = match;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the probe resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get custom port which will be used for probing the backend servers. The valid value ranges from 1 to 65535. In case not set, port from http settings will be used. This property is valid for Standard_v2 and WAF_v2 only.
+ *
+ * @return the port value
+ */
+ public Integer port() {
+ return this.port;
+ }
+
+ /**
+ * Set custom port which will be used for probing the backend servers. The valid value ranges from 1 to 65535. In case not set, port from http settings will be used. This property is valid for Standard_v2 and WAF_v2 only.
+ *
+ * @param port the port value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withPort(Integer port) {
+ this.port = port;
+ return this;
+ }
+
+ /**
+ * Get name of the probe that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the probe that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayProbe object itself.
+ */
+ public ApplicationGatewayProbe withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProbeHealthResponseMatch.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProbeHealthResponseMatch.java
new file mode 100644
index 000000000000..a8c649122b74
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProbeHealthResponseMatch.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Application gateway probe health response match.
+ */
+public class ApplicationGatewayProbeHealthResponseMatch {
+ /**
+ * Body that must be contained in the health response. Default value is
+ * empty.
+ */
+ @JsonProperty(value = "body")
+ private String body;
+
+ /**
+ * Allowed ranges of healthy status codes. Default range of healthy status
+ * codes is 200-399.
+ */
+ @JsonProperty(value = "statusCodes")
+ private List statusCodes;
+
+ /**
+ * Get body that must be contained in the health response. Default value is empty.
+ *
+ * @return the body value
+ */
+ public String body() {
+ return this.body;
+ }
+
+ /**
+ * Set body that must be contained in the health response. Default value is empty.
+ *
+ * @param body the body value to set
+ * @return the ApplicationGatewayProbeHealthResponseMatch object itself.
+ */
+ public ApplicationGatewayProbeHealthResponseMatch withBody(String body) {
+ this.body = body;
+ return this;
+ }
+
+ /**
+ * Get allowed ranges of healthy status codes. Default range of healthy status codes is 200-399.
+ *
+ * @return the statusCodes value
+ */
+ public List statusCodes() {
+ return this.statusCodes;
+ }
+
+ /**
+ * Set allowed ranges of healthy status codes. Default range of healthy status codes is 200-399.
+ *
+ * @param statusCodes the statusCodes value to set
+ * @return the ApplicationGatewayProbeHealthResponseMatch object itself.
+ */
+ public ApplicationGatewayProbeHealthResponseMatch withStatusCodes(List statusCodes) {
+ this.statusCodes = statusCodes;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProtocol.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProtocol.java
new file mode 100644
index 000000000000..7a0a61c5439b
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayProtocol.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayProtocol.
+ */
+public final class ApplicationGatewayProtocol extends ExpandableStringEnum {
+ /** Static value Http for ApplicationGatewayProtocol. */
+ public static final ApplicationGatewayProtocol HTTP = fromString("Http");
+
+ /** Static value Https for ApplicationGatewayProtocol. */
+ public static final ApplicationGatewayProtocol HTTPS = fromString("Https");
+
+ /**
+ * Creates or finds a ApplicationGatewayProtocol from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayProtocol
+ */
+ @JsonCreator
+ public static ApplicationGatewayProtocol fromString(String name) {
+ return fromString(name, ApplicationGatewayProtocol.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayProtocol values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayProtocol.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRedirectConfiguration.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRedirectConfiguration.java
new file mode 100644
index 000000000000..853cef93a771
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRedirectConfiguration.java
@@ -0,0 +1,287 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Redirect configuration of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayRedirectConfiguration extends SubResource {
+ /**
+ * HTTP redirection type. Possible values include: 'Permanent', 'Found',
+ * 'SeeOther', 'Temporary'.
+ */
+ @JsonProperty(value = "properties.redirectType")
+ private ApplicationGatewayRedirectType redirectType;
+
+ /**
+ * Reference to a listener to redirect the request to.
+ */
+ @JsonProperty(value = "properties.targetListener")
+ private SubResource targetListener;
+
+ /**
+ * Url to redirect the request to.
+ */
+ @JsonProperty(value = "properties.targetUrl")
+ private String targetUrl;
+
+ /**
+ * Include path in the redirected url.
+ */
+ @JsonProperty(value = "properties.includePath")
+ private Boolean includePath;
+
+ /**
+ * Include query string in the redirected url.
+ */
+ @JsonProperty(value = "properties.includeQueryString")
+ private Boolean includeQueryString;
+
+ /**
+ * Request routing specifying redirect configuration.
+ */
+ @JsonProperty(value = "properties.requestRoutingRules")
+ private List requestRoutingRules;
+
+ /**
+ * Url path maps specifying default redirect configuration.
+ */
+ @JsonProperty(value = "properties.urlPathMaps")
+ private List urlPathMaps;
+
+ /**
+ * Path rules specifying redirect configuration.
+ */
+ @JsonProperty(value = "properties.pathRules")
+ private List pathRules;
+
+ /**
+ * Name of the redirect configuration that is unique within an Application
+ * Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get hTTP redirection type. Possible values include: 'Permanent', 'Found', 'SeeOther', 'Temporary'.
+ *
+ * @return the redirectType value
+ */
+ public ApplicationGatewayRedirectType redirectType() {
+ return this.redirectType;
+ }
+
+ /**
+ * Set hTTP redirection type. Possible values include: 'Permanent', 'Found', 'SeeOther', 'Temporary'.
+ *
+ * @param redirectType the redirectType value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withRedirectType(ApplicationGatewayRedirectType redirectType) {
+ this.redirectType = redirectType;
+ return this;
+ }
+
+ /**
+ * Get reference to a listener to redirect the request to.
+ *
+ * @return the targetListener value
+ */
+ public SubResource targetListener() {
+ return this.targetListener;
+ }
+
+ /**
+ * Set reference to a listener to redirect the request to.
+ *
+ * @param targetListener the targetListener value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withTargetListener(SubResource targetListener) {
+ this.targetListener = targetListener;
+ return this;
+ }
+
+ /**
+ * Get url to redirect the request to.
+ *
+ * @return the targetUrl value
+ */
+ public String targetUrl() {
+ return this.targetUrl;
+ }
+
+ /**
+ * Set url to redirect the request to.
+ *
+ * @param targetUrl the targetUrl value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withTargetUrl(String targetUrl) {
+ this.targetUrl = targetUrl;
+ return this;
+ }
+
+ /**
+ * Get include path in the redirected url.
+ *
+ * @return the includePath value
+ */
+ public Boolean includePath() {
+ return this.includePath;
+ }
+
+ /**
+ * Set include path in the redirected url.
+ *
+ * @param includePath the includePath value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withIncludePath(Boolean includePath) {
+ this.includePath = includePath;
+ return this;
+ }
+
+ /**
+ * Get include query string in the redirected url.
+ *
+ * @return the includeQueryString value
+ */
+ public Boolean includeQueryString() {
+ return this.includeQueryString;
+ }
+
+ /**
+ * Set include query string in the redirected url.
+ *
+ * @param includeQueryString the includeQueryString value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withIncludeQueryString(Boolean includeQueryString) {
+ this.includeQueryString = includeQueryString;
+ return this;
+ }
+
+ /**
+ * Get request routing specifying redirect configuration.
+ *
+ * @return the requestRoutingRules value
+ */
+ public List requestRoutingRules() {
+ return this.requestRoutingRules;
+ }
+
+ /**
+ * Set request routing specifying redirect configuration.
+ *
+ * @param requestRoutingRules the requestRoutingRules value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withRequestRoutingRules(List requestRoutingRules) {
+ this.requestRoutingRules = requestRoutingRules;
+ return this;
+ }
+
+ /**
+ * Get url path maps specifying default redirect configuration.
+ *
+ * @return the urlPathMaps value
+ */
+ public List urlPathMaps() {
+ return this.urlPathMaps;
+ }
+
+ /**
+ * Set url path maps specifying default redirect configuration.
+ *
+ * @param urlPathMaps the urlPathMaps value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withUrlPathMaps(List urlPathMaps) {
+ this.urlPathMaps = urlPathMaps;
+ return this;
+ }
+
+ /**
+ * Get path rules specifying redirect configuration.
+ *
+ * @return the pathRules value
+ */
+ public List pathRules() {
+ return this.pathRules;
+ }
+
+ /**
+ * Set path rules specifying redirect configuration.
+ *
+ * @param pathRules the pathRules value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withPathRules(List pathRules) {
+ this.pathRules = pathRules;
+ return this;
+ }
+
+ /**
+ * Get name of the redirect configuration that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the redirect configuration that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayRedirectConfiguration object itself.
+ */
+ public ApplicationGatewayRedirectConfiguration withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRedirectType.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRedirectType.java
new file mode 100644
index 000000000000..41aca0b2ddec
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRedirectType.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayRedirectType.
+ */
+public final class ApplicationGatewayRedirectType extends ExpandableStringEnum {
+ /** Static value Permanent for ApplicationGatewayRedirectType. */
+ public static final ApplicationGatewayRedirectType PERMANENT = fromString("Permanent");
+
+ /** Static value Found for ApplicationGatewayRedirectType. */
+ public static final ApplicationGatewayRedirectType FOUND = fromString("Found");
+
+ /** Static value SeeOther for ApplicationGatewayRedirectType. */
+ public static final ApplicationGatewayRedirectType SEE_OTHER = fromString("SeeOther");
+
+ /** Static value Temporary for ApplicationGatewayRedirectType. */
+ public static final ApplicationGatewayRedirectType TEMPORARY = fromString("Temporary");
+
+ /**
+ * Creates or finds a ApplicationGatewayRedirectType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayRedirectType
+ */
+ @JsonCreator
+ public static ApplicationGatewayRedirectType fromString(String name) {
+ return fromString(name, ApplicationGatewayRedirectType.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayRedirectType values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayRedirectType.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRequestRoutingRule.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRequestRoutingRule.java
new file mode 100644
index 000000000000..b09d77a78ed4
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRequestRoutingRule.java
@@ -0,0 +1,301 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Request routing rule of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayRequestRoutingRule extends SubResource {
+ /**
+ * Rule type. Possible values include: 'Basic', 'PathBasedRouting'.
+ */
+ @JsonProperty(value = "properties.ruleType")
+ private ApplicationGatewayRequestRoutingRuleType ruleType;
+
+ /**
+ * Priority of the request routing rule.
+ */
+ @JsonProperty(value = "properties.priority")
+ private Integer priority;
+
+ /**
+ * Backend address pool resource of the application gateway.
+ */
+ @JsonProperty(value = "properties.backendAddressPool")
+ private SubResource backendAddressPool;
+
+ /**
+ * Backend http settings resource of the application gateway.
+ */
+ @JsonProperty(value = "properties.backendHttpSettings")
+ private SubResource backendHttpSettings;
+
+ /**
+ * Http listener resource of the application gateway.
+ */
+ @JsonProperty(value = "properties.httpListener")
+ private SubResource httpListener;
+
+ /**
+ * URL path map resource of the application gateway.
+ */
+ @JsonProperty(value = "properties.urlPathMap")
+ private SubResource urlPathMap;
+
+ /**
+ * Rewrite Rule Set resource in Basic rule of the application gateway.
+ */
+ @JsonProperty(value = "properties.rewriteRuleSet")
+ private SubResource rewriteRuleSet;
+
+ /**
+ * Redirect configuration resource of the application gateway.
+ */
+ @JsonProperty(value = "properties.redirectConfiguration")
+ private SubResource redirectConfiguration;
+
+ /**
+ * The provisioning state of the request routing rule resource. Possible
+ * values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the request routing rule that is unique within an Application
+ * Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get rule type. Possible values include: 'Basic', 'PathBasedRouting'.
+ *
+ * @return the ruleType value
+ */
+ public ApplicationGatewayRequestRoutingRuleType ruleType() {
+ return this.ruleType;
+ }
+
+ /**
+ * Set rule type. Possible values include: 'Basic', 'PathBasedRouting'.
+ *
+ * @param ruleType the ruleType value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withRuleType(ApplicationGatewayRequestRoutingRuleType ruleType) {
+ this.ruleType = ruleType;
+ return this;
+ }
+
+ /**
+ * Get priority of the request routing rule.
+ *
+ * @return the priority value
+ */
+ public Integer priority() {
+ return this.priority;
+ }
+
+ /**
+ * Set priority of the request routing rule.
+ *
+ * @param priority the priority value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withPriority(Integer priority) {
+ this.priority = priority;
+ return this;
+ }
+
+ /**
+ * Get backend address pool resource of the application gateway.
+ *
+ * @return the backendAddressPool value
+ */
+ public SubResource backendAddressPool() {
+ return this.backendAddressPool;
+ }
+
+ /**
+ * Set backend address pool resource of the application gateway.
+ *
+ * @param backendAddressPool the backendAddressPool value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withBackendAddressPool(SubResource backendAddressPool) {
+ this.backendAddressPool = backendAddressPool;
+ return this;
+ }
+
+ /**
+ * Get backend http settings resource of the application gateway.
+ *
+ * @return the backendHttpSettings value
+ */
+ public SubResource backendHttpSettings() {
+ return this.backendHttpSettings;
+ }
+
+ /**
+ * Set backend http settings resource of the application gateway.
+ *
+ * @param backendHttpSettings the backendHttpSettings value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withBackendHttpSettings(SubResource backendHttpSettings) {
+ this.backendHttpSettings = backendHttpSettings;
+ return this;
+ }
+
+ /**
+ * Get http listener resource of the application gateway.
+ *
+ * @return the httpListener value
+ */
+ public SubResource httpListener() {
+ return this.httpListener;
+ }
+
+ /**
+ * Set http listener resource of the application gateway.
+ *
+ * @param httpListener the httpListener value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withHttpListener(SubResource httpListener) {
+ this.httpListener = httpListener;
+ return this;
+ }
+
+ /**
+ * Get uRL path map resource of the application gateway.
+ *
+ * @return the urlPathMap value
+ */
+ public SubResource urlPathMap() {
+ return this.urlPathMap;
+ }
+
+ /**
+ * Set uRL path map resource of the application gateway.
+ *
+ * @param urlPathMap the urlPathMap value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withUrlPathMap(SubResource urlPathMap) {
+ this.urlPathMap = urlPathMap;
+ return this;
+ }
+
+ /**
+ * Get rewrite Rule Set resource in Basic rule of the application gateway.
+ *
+ * @return the rewriteRuleSet value
+ */
+ public SubResource rewriteRuleSet() {
+ return this.rewriteRuleSet;
+ }
+
+ /**
+ * Set rewrite Rule Set resource in Basic rule of the application gateway.
+ *
+ * @param rewriteRuleSet the rewriteRuleSet value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withRewriteRuleSet(SubResource rewriteRuleSet) {
+ this.rewriteRuleSet = rewriteRuleSet;
+ return this;
+ }
+
+ /**
+ * Get redirect configuration resource of the application gateway.
+ *
+ * @return the redirectConfiguration value
+ */
+ public SubResource redirectConfiguration() {
+ return this.redirectConfiguration;
+ }
+
+ /**
+ * Set redirect configuration resource of the application gateway.
+ *
+ * @param redirectConfiguration the redirectConfiguration value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withRedirectConfiguration(SubResource redirectConfiguration) {
+ this.redirectConfiguration = redirectConfiguration;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the request routing rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the request routing rule that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the request routing rule that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayRequestRoutingRule object itself.
+ */
+ public ApplicationGatewayRequestRoutingRule withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRequestRoutingRuleType.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRequestRoutingRuleType.java
new file mode 100644
index 000000000000..3307eb4b945f
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRequestRoutingRuleType.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayRequestRoutingRuleType.
+ */
+public final class ApplicationGatewayRequestRoutingRuleType extends ExpandableStringEnum {
+ /** Static value Basic for ApplicationGatewayRequestRoutingRuleType. */
+ public static final ApplicationGatewayRequestRoutingRuleType BASIC = fromString("Basic");
+
+ /** Static value PathBasedRouting for ApplicationGatewayRequestRoutingRuleType. */
+ public static final ApplicationGatewayRequestRoutingRuleType PATH_BASED_ROUTING = fromString("PathBasedRouting");
+
+ /**
+ * Creates or finds a ApplicationGatewayRequestRoutingRuleType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayRequestRoutingRuleType
+ */
+ @JsonCreator
+ public static ApplicationGatewayRequestRoutingRuleType fromString(String name) {
+ return fromString(name, ApplicationGatewayRequestRoutingRuleType.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayRequestRoutingRuleType values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayRequestRoutingRuleType.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRule.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRule.java
new file mode 100644
index 000000000000..c3cd6b1581e4
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRule.java
@@ -0,0 +1,123 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Rewrite rule of an application gateway.
+ */
+public class ApplicationGatewayRewriteRule {
+ /**
+ * Name of the rewrite rule that is unique within an Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * Rule Sequence of the rewrite rule that determines the order of execution
+ * of a particular rule in a RewriteRuleSet.
+ */
+ @JsonProperty(value = "ruleSequence")
+ private Integer ruleSequence;
+
+ /**
+ * Conditions based on which the action set execution will be evaluated.
+ */
+ @JsonProperty(value = "conditions")
+ private List conditions;
+
+ /**
+ * Set of actions to be done as part of the rewrite Rule.
+ */
+ @JsonProperty(value = "actionSet")
+ private ApplicationGatewayRewriteRuleActionSet actionSet;
+
+ /**
+ * Get name of the rewrite rule that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the rewrite rule that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayRewriteRule object itself.
+ */
+ public ApplicationGatewayRewriteRule withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get rule Sequence of the rewrite rule that determines the order of execution of a particular rule in a RewriteRuleSet.
+ *
+ * @return the ruleSequence value
+ */
+ public Integer ruleSequence() {
+ return this.ruleSequence;
+ }
+
+ /**
+ * Set rule Sequence of the rewrite rule that determines the order of execution of a particular rule in a RewriteRuleSet.
+ *
+ * @param ruleSequence the ruleSequence value to set
+ * @return the ApplicationGatewayRewriteRule object itself.
+ */
+ public ApplicationGatewayRewriteRule withRuleSequence(Integer ruleSequence) {
+ this.ruleSequence = ruleSequence;
+ return this;
+ }
+
+ /**
+ * Get conditions based on which the action set execution will be evaluated.
+ *
+ * @return the conditions value
+ */
+ public List conditions() {
+ return this.conditions;
+ }
+
+ /**
+ * Set conditions based on which the action set execution will be evaluated.
+ *
+ * @param conditions the conditions value to set
+ * @return the ApplicationGatewayRewriteRule object itself.
+ */
+ public ApplicationGatewayRewriteRule withConditions(List conditions) {
+ this.conditions = conditions;
+ return this;
+ }
+
+ /**
+ * Get set of actions to be done as part of the rewrite Rule.
+ *
+ * @return the actionSet value
+ */
+ public ApplicationGatewayRewriteRuleActionSet actionSet() {
+ return this.actionSet;
+ }
+
+ /**
+ * Set set of actions to be done as part of the rewrite Rule.
+ *
+ * @param actionSet the actionSet value to set
+ * @return the ApplicationGatewayRewriteRule object itself.
+ */
+ public ApplicationGatewayRewriteRule withActionSet(ApplicationGatewayRewriteRuleActionSet actionSet) {
+ this.actionSet = actionSet;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleActionSet.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleActionSet.java
new file mode 100644
index 000000000000..c0a8eb336902
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleActionSet.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Set of actions in the Rewrite Rule in Application Gateway.
+ */
+public class ApplicationGatewayRewriteRuleActionSet {
+ /**
+ * Request Header Actions in the Action Set.
+ */
+ @JsonProperty(value = "requestHeaderConfigurations")
+ private List requestHeaderConfigurations;
+
+ /**
+ * Response Header Actions in the Action Set.
+ */
+ @JsonProperty(value = "responseHeaderConfigurations")
+ private List responseHeaderConfigurations;
+
+ /**
+ * Url Configuration Action in the Action Set.
+ */
+ @JsonProperty(value = "urlConfiguration")
+ private ApplicationGatewayUrlConfiguration urlConfiguration;
+
+ /**
+ * Get request Header Actions in the Action Set.
+ *
+ * @return the requestHeaderConfigurations value
+ */
+ public List requestHeaderConfigurations() {
+ return this.requestHeaderConfigurations;
+ }
+
+ /**
+ * Set request Header Actions in the Action Set.
+ *
+ * @param requestHeaderConfigurations the requestHeaderConfigurations value to set
+ * @return the ApplicationGatewayRewriteRuleActionSet object itself.
+ */
+ public ApplicationGatewayRewriteRuleActionSet withRequestHeaderConfigurations(List requestHeaderConfigurations) {
+ this.requestHeaderConfigurations = requestHeaderConfigurations;
+ return this;
+ }
+
+ /**
+ * Get response Header Actions in the Action Set.
+ *
+ * @return the responseHeaderConfigurations value
+ */
+ public List responseHeaderConfigurations() {
+ return this.responseHeaderConfigurations;
+ }
+
+ /**
+ * Set response Header Actions in the Action Set.
+ *
+ * @param responseHeaderConfigurations the responseHeaderConfigurations value to set
+ * @return the ApplicationGatewayRewriteRuleActionSet object itself.
+ */
+ public ApplicationGatewayRewriteRuleActionSet withResponseHeaderConfigurations(List responseHeaderConfigurations) {
+ this.responseHeaderConfigurations = responseHeaderConfigurations;
+ return this;
+ }
+
+ /**
+ * Get url Configuration Action in the Action Set.
+ *
+ * @return the urlConfiguration value
+ */
+ public ApplicationGatewayUrlConfiguration urlConfiguration() {
+ return this.urlConfiguration;
+ }
+
+ /**
+ * Set url Configuration Action in the Action Set.
+ *
+ * @param urlConfiguration the urlConfiguration value to set
+ * @return the ApplicationGatewayRewriteRuleActionSet object itself.
+ */
+ public ApplicationGatewayRewriteRuleActionSet withUrlConfiguration(ApplicationGatewayUrlConfiguration urlConfiguration) {
+ this.urlConfiguration = urlConfiguration;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleCondition.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleCondition.java
new file mode 100644
index 000000000000..478920c38269
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleCondition.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Set of conditions in the Rewrite Rule in Application Gateway.
+ */
+public class ApplicationGatewayRewriteRuleCondition {
+ /**
+ * The condition parameter of the RewriteRuleCondition.
+ */
+ @JsonProperty(value = "variable")
+ private String variable;
+
+ /**
+ * The pattern, either fixed string or regular expression, that evaluates
+ * the truthfulness of the condition.
+ */
+ @JsonProperty(value = "pattern")
+ private String pattern;
+
+ /**
+ * Setting this paramter to truth value with force the pattern to do a case
+ * in-sensitive comparison.
+ */
+ @JsonProperty(value = "ignoreCase")
+ private Boolean ignoreCase;
+
+ /**
+ * Setting this value as truth will force to check the negation of the
+ * condition given by the user.
+ */
+ @JsonProperty(value = "negate")
+ private Boolean negate;
+
+ /**
+ * Get the condition parameter of the RewriteRuleCondition.
+ *
+ * @return the variable value
+ */
+ public String variable() {
+ return this.variable;
+ }
+
+ /**
+ * Set the condition parameter of the RewriteRuleCondition.
+ *
+ * @param variable the variable value to set
+ * @return the ApplicationGatewayRewriteRuleCondition object itself.
+ */
+ public ApplicationGatewayRewriteRuleCondition withVariable(String variable) {
+ this.variable = variable;
+ return this;
+ }
+
+ /**
+ * Get the pattern, either fixed string or regular expression, that evaluates the truthfulness of the condition.
+ *
+ * @return the pattern value
+ */
+ public String pattern() {
+ return this.pattern;
+ }
+
+ /**
+ * Set the pattern, either fixed string or regular expression, that evaluates the truthfulness of the condition.
+ *
+ * @param pattern the pattern value to set
+ * @return the ApplicationGatewayRewriteRuleCondition object itself.
+ */
+ public ApplicationGatewayRewriteRuleCondition withPattern(String pattern) {
+ this.pattern = pattern;
+ return this;
+ }
+
+ /**
+ * Get setting this paramter to truth value with force the pattern to do a case in-sensitive comparison.
+ *
+ * @return the ignoreCase value
+ */
+ public Boolean ignoreCase() {
+ return this.ignoreCase;
+ }
+
+ /**
+ * Set setting this paramter to truth value with force the pattern to do a case in-sensitive comparison.
+ *
+ * @param ignoreCase the ignoreCase value to set
+ * @return the ApplicationGatewayRewriteRuleCondition object itself.
+ */
+ public ApplicationGatewayRewriteRuleCondition withIgnoreCase(Boolean ignoreCase) {
+ this.ignoreCase = ignoreCase;
+ return this;
+ }
+
+ /**
+ * Get setting this value as truth will force to check the negation of the condition given by the user.
+ *
+ * @return the negate value
+ */
+ public Boolean negate() {
+ return this.negate;
+ }
+
+ /**
+ * Set setting this value as truth will force to check the negation of the condition given by the user.
+ *
+ * @param negate the negate value to set
+ * @return the ApplicationGatewayRewriteRuleCondition object itself.
+ */
+ public ApplicationGatewayRewriteRuleCondition withNegate(Boolean negate) {
+ this.negate = negate;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleSet.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleSet.java
new file mode 100644
index 000000000000..61a13dccd305
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayRewriteRuleSet.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.SubResource;
+
+/**
+ * Rewrite rule set of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayRewriteRuleSet extends SubResource {
+ /**
+ * Rewrite rules in the rewrite rule set.
+ */
+ @JsonProperty(value = "properties.rewriteRules")
+ private List rewriteRules;
+
+ /**
+ * The provisioning state of the rewrite rule set resource. Possible values
+ * include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the rewrite rule set that is unique within an Application
+ * Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Get rewrite rules in the rewrite rule set.
+ *
+ * @return the rewriteRules value
+ */
+ public List rewriteRules() {
+ return this.rewriteRules;
+ }
+
+ /**
+ * Set rewrite rules in the rewrite rule set.
+ *
+ * @param rewriteRules the rewriteRules value to set
+ * @return the ApplicationGatewayRewriteRuleSet object itself.
+ */
+ public ApplicationGatewayRewriteRuleSet withRewriteRules(List rewriteRules) {
+ this.rewriteRules = rewriteRules;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the rewrite rule set resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the rewrite rule set that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the rewrite rule set that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayRewriteRuleSet object itself.
+ */
+ public ApplicationGatewayRewriteRuleSet withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySku.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySku.java
new file mode 100644
index 000000000000..b59a8ee7b639
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySku.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * SKU of an application gateway.
+ */
+public class ApplicationGatewaySku {
+ /**
+ * Name of an application gateway SKU. Possible values include:
+ * 'Standard_Small', 'Standard_Medium', 'Standard_Large', 'WAF_Medium',
+ * 'WAF_Large', 'Standard_v2', 'WAF_v2'.
+ */
+ @JsonProperty(value = "name")
+ private ApplicationGatewaySkuName name;
+
+ /**
+ * Tier of an application gateway. Possible values include: 'Standard',
+ * 'WAF', 'Standard_v2', 'WAF_v2'.
+ */
+ @JsonProperty(value = "tier")
+ private ApplicationGatewayTier tier;
+
+ /**
+ * Capacity (instance count) of an application gateway.
+ */
+ @JsonProperty(value = "capacity")
+ private Integer capacity;
+
+ /**
+ * Get name of an application gateway SKU. Possible values include: 'Standard_Small', 'Standard_Medium', 'Standard_Large', 'WAF_Medium', 'WAF_Large', 'Standard_v2', 'WAF_v2'.
+ *
+ * @return the name value
+ */
+ public ApplicationGatewaySkuName name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of an application gateway SKU. Possible values include: 'Standard_Small', 'Standard_Medium', 'Standard_Large', 'WAF_Medium', 'WAF_Large', 'Standard_v2', 'WAF_v2'.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewaySku object itself.
+ */
+ public ApplicationGatewaySku withName(ApplicationGatewaySkuName name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get tier of an application gateway. Possible values include: 'Standard', 'WAF', 'Standard_v2', 'WAF_v2'.
+ *
+ * @return the tier value
+ */
+ public ApplicationGatewayTier tier() {
+ return this.tier;
+ }
+
+ /**
+ * Set tier of an application gateway. Possible values include: 'Standard', 'WAF', 'Standard_v2', 'WAF_v2'.
+ *
+ * @param tier the tier value to set
+ * @return the ApplicationGatewaySku object itself.
+ */
+ public ApplicationGatewaySku withTier(ApplicationGatewayTier tier) {
+ this.tier = tier;
+ return this;
+ }
+
+ /**
+ * Get capacity (instance count) of an application gateway.
+ *
+ * @return the capacity value
+ */
+ public Integer capacity() {
+ return this.capacity;
+ }
+
+ /**
+ * Set capacity (instance count) of an application gateway.
+ *
+ * @param capacity the capacity value to set
+ * @return the ApplicationGatewaySku object itself.
+ */
+ public ApplicationGatewaySku withCapacity(Integer capacity) {
+ this.capacity = capacity;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySkuName.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySkuName.java
new file mode 100644
index 000000000000..59b3df5bb1ef
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySkuName.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewaySkuName.
+ */
+public final class ApplicationGatewaySkuName extends ExpandableStringEnum {
+ /** Static value Standard_Small for ApplicationGatewaySkuName. */
+ public static final ApplicationGatewaySkuName STANDARD_SMALL = fromString("Standard_Small");
+
+ /** Static value Standard_Medium for ApplicationGatewaySkuName. */
+ public static final ApplicationGatewaySkuName STANDARD_MEDIUM = fromString("Standard_Medium");
+
+ /** Static value Standard_Large for ApplicationGatewaySkuName. */
+ public static final ApplicationGatewaySkuName STANDARD_LARGE = fromString("Standard_Large");
+
+ /** Static value WAF_Medium for ApplicationGatewaySkuName. */
+ public static final ApplicationGatewaySkuName WAF_MEDIUM = fromString("WAF_Medium");
+
+ /** Static value WAF_Large for ApplicationGatewaySkuName. */
+ public static final ApplicationGatewaySkuName WAF_LARGE = fromString("WAF_Large");
+
+ /** Static value Standard_v2 for ApplicationGatewaySkuName. */
+ public static final ApplicationGatewaySkuName STANDARD_V2 = fromString("Standard_v2");
+
+ /** Static value WAF_v2 for ApplicationGatewaySkuName. */
+ public static final ApplicationGatewaySkuName WAF_V2 = fromString("WAF_v2");
+
+ /**
+ * Creates or finds a ApplicationGatewaySkuName from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewaySkuName
+ */
+ @JsonCreator
+ public static ApplicationGatewaySkuName fromString(String name) {
+ return fromString(name, ApplicationGatewaySkuName.class);
+ }
+
+ /**
+ * @return known ApplicationGatewaySkuName values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewaySkuName.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslCertificate.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslCertificate.java
new file mode 100644
index 000000000000..a5370b0da257
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslCertificate.java
@@ -0,0 +1,189 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.SubResource;
+
+/**
+ * SSL certificates of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewaySslCertificate extends SubResource {
+ /**
+ * Base-64 encoded pfx certificate. Only applicable in PUT Request.
+ */
+ @JsonProperty(value = "properties.data")
+ private String data;
+
+ /**
+ * Password for the pfx file specified in data. Only applicable in PUT
+ * request.
+ */
+ @JsonProperty(value = "properties.password")
+ private String password;
+
+ /**
+ * Base-64 encoded Public cert data corresponding to pfx specified in data.
+ * Only applicable in GET request.
+ */
+ @JsonProperty(value = "properties.publicCertData", access = JsonProperty.Access.WRITE_ONLY)
+ private String publicCertData;
+
+ /**
+ * Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate'
+ * object stored in KeyVault.
+ */
+ @JsonProperty(value = "properties.keyVaultSecretId")
+ private String keyVaultSecretId;
+
+ /**
+ * The provisioning state of the SSL certificate resource. Possible values
+ * include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the SSL certificate that is unique within an Application
+ * Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get base-64 encoded pfx certificate. Only applicable in PUT Request.
+ *
+ * @return the data value
+ */
+ public String data() {
+ return this.data;
+ }
+
+ /**
+ * Set base-64 encoded pfx certificate. Only applicable in PUT Request.
+ *
+ * @param data the data value to set
+ * @return the ApplicationGatewaySslCertificate object itself.
+ */
+ public ApplicationGatewaySslCertificate withData(String data) {
+ this.data = data;
+ return this;
+ }
+
+ /**
+ * Get password for the pfx file specified in data. Only applicable in PUT request.
+ *
+ * @return the password value
+ */
+ public String password() {
+ return this.password;
+ }
+
+ /**
+ * Set password for the pfx file specified in data. Only applicable in PUT request.
+ *
+ * @param password the password value to set
+ * @return the ApplicationGatewaySslCertificate object itself.
+ */
+ public ApplicationGatewaySslCertificate withPassword(String password) {
+ this.password = password;
+ return this;
+ }
+
+ /**
+ * Get base-64 encoded Public cert data corresponding to pfx specified in data. Only applicable in GET request.
+ *
+ * @return the publicCertData value
+ */
+ public String publicCertData() {
+ return this.publicCertData;
+ }
+
+ /**
+ * Get secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.
+ *
+ * @return the keyVaultSecretId value
+ */
+ public String keyVaultSecretId() {
+ return this.keyVaultSecretId;
+ }
+
+ /**
+ * Set secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.
+ *
+ * @param keyVaultSecretId the keyVaultSecretId value to set
+ * @return the ApplicationGatewaySslCertificate object itself.
+ */
+ public ApplicationGatewaySslCertificate withKeyVaultSecretId(String keyVaultSecretId) {
+ this.keyVaultSecretId = keyVaultSecretId;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the SSL certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the SSL certificate that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the SSL certificate that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewaySslCertificate object itself.
+ */
+ public ApplicationGatewaySslCertificate withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslCipherSuite.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslCipherSuite.java
new file mode 100644
index 000000000000..87db619d34e2
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslCipherSuite.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewaySslCipherSuite.
+ */
+public final class ApplicationGatewaySslCipherSuite extends ExpandableStringEnum {
+ /** Static value TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = fromString("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384");
+
+ /** Static value TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = fromString("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256");
+
+ /** Static value TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = fromString("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA");
+
+ /** Static value TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = fromString("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA");
+
+ /** Static value TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = fromString("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384");
+
+ /** Static value TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = fromString("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256");
+
+ /** Static value TLS_DHE_RSA_WITH_AES_256_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_RSA_WITH_AES_256_CBC_SHA = fromString("TLS_DHE_RSA_WITH_AES_256_CBC_SHA");
+
+ /** Static value TLS_DHE_RSA_WITH_AES_128_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_RSA_WITH_AES_128_CBC_SHA = fromString("TLS_DHE_RSA_WITH_AES_128_CBC_SHA");
+
+ /** Static value TLS_RSA_WITH_AES_256_GCM_SHA384 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_RSA_WITH_AES_256_GCM_SHA384 = fromString("TLS_RSA_WITH_AES_256_GCM_SHA384");
+
+ /** Static value TLS_RSA_WITH_AES_128_GCM_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_RSA_WITH_AES_128_GCM_SHA256 = fromString("TLS_RSA_WITH_AES_128_GCM_SHA256");
+
+ /** Static value TLS_RSA_WITH_AES_256_CBC_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_RSA_WITH_AES_256_CBC_SHA256 = fromString("TLS_RSA_WITH_AES_256_CBC_SHA256");
+
+ /** Static value TLS_RSA_WITH_AES_128_CBC_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_RSA_WITH_AES_128_CBC_SHA256 = fromString("TLS_RSA_WITH_AES_128_CBC_SHA256");
+
+ /** Static value TLS_RSA_WITH_AES_256_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_RSA_WITH_AES_256_CBC_SHA = fromString("TLS_RSA_WITH_AES_256_CBC_SHA");
+
+ /** Static value TLS_RSA_WITH_AES_128_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_RSA_WITH_AES_128_CBC_SHA = fromString("TLS_RSA_WITH_AES_128_CBC_SHA");
+
+ /** Static value TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = fromString("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384");
+
+ /** Static value TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = fromString("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256");
+
+ /** Static value TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = fromString("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384");
+
+ /** Static value TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = fromString("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256");
+
+ /** Static value TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = fromString("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA");
+
+ /** Static value TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = fromString("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA");
+
+ /** Static value TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = fromString("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256");
+
+ /** Static value TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = fromString("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256");
+
+ /** Static value TLS_DHE_DSS_WITH_AES_256_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_DSS_WITH_AES_256_CBC_SHA = fromString("TLS_DHE_DSS_WITH_AES_256_CBC_SHA");
+
+ /** Static value TLS_DHE_DSS_WITH_AES_128_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_DSS_WITH_AES_128_CBC_SHA = fromString("TLS_DHE_DSS_WITH_AES_128_CBC_SHA");
+
+ /** Static value TLS_RSA_WITH_3DES_EDE_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_RSA_WITH_3DES_EDE_CBC_SHA = fromString("TLS_RSA_WITH_3DES_EDE_CBC_SHA");
+
+ /** Static value TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = fromString("TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA");
+
+ /** Static value TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = fromString("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
+
+ /** Static value TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 for ApplicationGatewaySslCipherSuite. */
+ public static final ApplicationGatewaySslCipherSuite TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = fromString("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384");
+
+ /**
+ * Creates or finds a ApplicationGatewaySslCipherSuite from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewaySslCipherSuite
+ */
+ @JsonCreator
+ public static ApplicationGatewaySslCipherSuite fromString(String name) {
+ return fromString(name, ApplicationGatewaySslCipherSuite.class);
+ }
+
+ /**
+ * @return known ApplicationGatewaySslCipherSuite values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewaySslCipherSuite.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicy.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicy.java
new file mode 100644
index 000000000000..e955b0a142c7
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicy.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Application Gateway Ssl policy.
+ */
+public class ApplicationGatewaySslPolicy {
+ /**
+ * Ssl protocols to be disabled on application gateway.
+ */
+ @JsonProperty(value = "disabledSslProtocols")
+ private List disabledSslProtocols;
+
+ /**
+ * Type of Ssl Policy. Possible values include: 'Predefined', 'Custom'.
+ */
+ @JsonProperty(value = "policyType")
+ private ApplicationGatewaySslPolicyType policyType;
+
+ /**
+ * Name of Ssl predefined policy. Possible values include:
+ * 'AppGwSslPolicy20150501', 'AppGwSslPolicy20170401',
+ * 'AppGwSslPolicy20170401S'.
+ */
+ @JsonProperty(value = "policyName")
+ private ApplicationGatewaySslPolicyName policyName;
+
+ /**
+ * Ssl cipher suites to be enabled in the specified order to application
+ * gateway.
+ */
+ @JsonProperty(value = "cipherSuites")
+ private List cipherSuites;
+
+ /**
+ * Minimum version of Ssl protocol to be supported on application gateway.
+ * Possible values include: 'TLSv1_0', 'TLSv1_1', 'TLSv1_2'.
+ */
+ @JsonProperty(value = "minProtocolVersion")
+ private ApplicationGatewaySslProtocol minProtocolVersion;
+
+ /**
+ * Get ssl protocols to be disabled on application gateway.
+ *
+ * @return the disabledSslProtocols value
+ */
+ public List disabledSslProtocols() {
+ return this.disabledSslProtocols;
+ }
+
+ /**
+ * Set ssl protocols to be disabled on application gateway.
+ *
+ * @param disabledSslProtocols the disabledSslProtocols value to set
+ * @return the ApplicationGatewaySslPolicy object itself.
+ */
+ public ApplicationGatewaySslPolicy withDisabledSslProtocols(List disabledSslProtocols) {
+ this.disabledSslProtocols = disabledSslProtocols;
+ return this;
+ }
+
+ /**
+ * Get type of Ssl Policy. Possible values include: 'Predefined', 'Custom'.
+ *
+ * @return the policyType value
+ */
+ public ApplicationGatewaySslPolicyType policyType() {
+ return this.policyType;
+ }
+
+ /**
+ * Set type of Ssl Policy. Possible values include: 'Predefined', 'Custom'.
+ *
+ * @param policyType the policyType value to set
+ * @return the ApplicationGatewaySslPolicy object itself.
+ */
+ public ApplicationGatewaySslPolicy withPolicyType(ApplicationGatewaySslPolicyType policyType) {
+ this.policyType = policyType;
+ return this;
+ }
+
+ /**
+ * Get name of Ssl predefined policy. Possible values include: 'AppGwSslPolicy20150501', 'AppGwSslPolicy20170401', 'AppGwSslPolicy20170401S'.
+ *
+ * @return the policyName value
+ */
+ public ApplicationGatewaySslPolicyName policyName() {
+ return this.policyName;
+ }
+
+ /**
+ * Set name of Ssl predefined policy. Possible values include: 'AppGwSslPolicy20150501', 'AppGwSslPolicy20170401', 'AppGwSslPolicy20170401S'.
+ *
+ * @param policyName the policyName value to set
+ * @return the ApplicationGatewaySslPolicy object itself.
+ */
+ public ApplicationGatewaySslPolicy withPolicyName(ApplicationGatewaySslPolicyName policyName) {
+ this.policyName = policyName;
+ return this;
+ }
+
+ /**
+ * Get ssl cipher suites to be enabled in the specified order to application gateway.
+ *
+ * @return the cipherSuites value
+ */
+ public List cipherSuites() {
+ return this.cipherSuites;
+ }
+
+ /**
+ * Set ssl cipher suites to be enabled in the specified order to application gateway.
+ *
+ * @param cipherSuites the cipherSuites value to set
+ * @return the ApplicationGatewaySslPolicy object itself.
+ */
+ public ApplicationGatewaySslPolicy withCipherSuites(List cipherSuites) {
+ this.cipherSuites = cipherSuites;
+ return this;
+ }
+
+ /**
+ * Get minimum version of Ssl protocol to be supported on application gateway. Possible values include: 'TLSv1_0', 'TLSv1_1', 'TLSv1_2'.
+ *
+ * @return the minProtocolVersion value
+ */
+ public ApplicationGatewaySslProtocol minProtocolVersion() {
+ return this.minProtocolVersion;
+ }
+
+ /**
+ * Set minimum version of Ssl protocol to be supported on application gateway. Possible values include: 'TLSv1_0', 'TLSv1_1', 'TLSv1_2'.
+ *
+ * @param minProtocolVersion the minProtocolVersion value to set
+ * @return the ApplicationGatewaySslPolicy object itself.
+ */
+ public ApplicationGatewaySslPolicy withMinProtocolVersion(ApplicationGatewaySslProtocol minProtocolVersion) {
+ this.minProtocolVersion = minProtocolVersion;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicyName.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicyName.java
new file mode 100644
index 000000000000..1d71a739705b
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicyName.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewaySslPolicyName.
+ */
+public final class ApplicationGatewaySslPolicyName extends ExpandableStringEnum {
+ /** Static value AppGwSslPolicy20150501 for ApplicationGatewaySslPolicyName. */
+ public static final ApplicationGatewaySslPolicyName APP_GW_SSL_POLICY20150501 = fromString("AppGwSslPolicy20150501");
+
+ /** Static value AppGwSslPolicy20170401 for ApplicationGatewaySslPolicyName. */
+ public static final ApplicationGatewaySslPolicyName APP_GW_SSL_POLICY20170401 = fromString("AppGwSslPolicy20170401");
+
+ /** Static value AppGwSslPolicy20170401S for ApplicationGatewaySslPolicyName. */
+ public static final ApplicationGatewaySslPolicyName APP_GW_SSL_POLICY20170401S = fromString("AppGwSslPolicy20170401S");
+
+ /**
+ * Creates or finds a ApplicationGatewaySslPolicyName from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewaySslPolicyName
+ */
+ @JsonCreator
+ public static ApplicationGatewaySslPolicyName fromString(String name) {
+ return fromString(name, ApplicationGatewaySslPolicyName.class);
+ }
+
+ /**
+ * @return known ApplicationGatewaySslPolicyName values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewaySslPolicyName.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicyType.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicyType.java
new file mode 100644
index 000000000000..41b34966977c
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPolicyType.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewaySslPolicyType.
+ */
+public final class ApplicationGatewaySslPolicyType extends ExpandableStringEnum {
+ /** Static value Predefined for ApplicationGatewaySslPolicyType. */
+ public static final ApplicationGatewaySslPolicyType PREDEFINED = fromString("Predefined");
+
+ /** Static value Custom for ApplicationGatewaySslPolicyType. */
+ public static final ApplicationGatewaySslPolicyType CUSTOM = fromString("Custom");
+
+ /**
+ * Creates or finds a ApplicationGatewaySslPolicyType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewaySslPolicyType
+ */
+ @JsonCreator
+ public static ApplicationGatewaySslPolicyType fromString(String name) {
+ return fromString(name, ApplicationGatewaySslPolicyType.class);
+ }
+
+ /**
+ * @return known ApplicationGatewaySslPolicyType values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewaySslPolicyType.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPredefinedPolicy.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPredefinedPolicy.java
new file mode 100644
index 000000000000..290f5b696fc2
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslPredefinedPolicy.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationGatewaySslPredefinedPolicyInner;
+import java.util.List;
+
+/**
+ * Type representing ApplicationGatewaySslPredefinedPolicy.
+ */
+public interface ApplicationGatewaySslPredefinedPolicy extends HasInner, HasManager {
+ /**
+ * @return the cipherSuites value.
+ */
+ List cipherSuites();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the minProtocolVersion value.
+ */
+ ApplicationGatewaySslProtocol minProtocolVersion();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslProtocol.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslProtocol.java
new file mode 100644
index 000000000000..50e9289badd5
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewaySslProtocol.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewaySslProtocol.
+ */
+public final class ApplicationGatewaySslProtocol extends ExpandableStringEnum {
+ /** Static value TLSv1_0 for ApplicationGatewaySslProtocol. */
+ public static final ApplicationGatewaySslProtocol TLSV1_0 = fromString("TLSv1_0");
+
+ /** Static value TLSv1_1 for ApplicationGatewaySslProtocol. */
+ public static final ApplicationGatewaySslProtocol TLSV1_1 = fromString("TLSv1_1");
+
+ /** Static value TLSv1_2 for ApplicationGatewaySslProtocol. */
+ public static final ApplicationGatewaySslProtocol TLSV1_2 = fromString("TLSv1_2");
+
+ /**
+ * Creates or finds a ApplicationGatewaySslProtocol from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewaySslProtocol
+ */
+ @JsonCreator
+ public static ApplicationGatewaySslProtocol fromString(String name) {
+ return fromString(name, ApplicationGatewaySslProtocol.class);
+ }
+
+ /**
+ * @return known ApplicationGatewaySslProtocol values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewaySslProtocol.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayTier.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayTier.java
new file mode 100644
index 000000000000..d72cadd5212f
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayTier.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGatewayTier.
+ */
+public final class ApplicationGatewayTier extends ExpandableStringEnum {
+ /** Static value Standard for ApplicationGatewayTier. */
+ public static final ApplicationGatewayTier STANDARD = fromString("Standard");
+
+ /** Static value WAF for ApplicationGatewayTier. */
+ public static final ApplicationGatewayTier WAF = fromString("WAF");
+
+ /** Static value Standard_v2 for ApplicationGatewayTier. */
+ public static final ApplicationGatewayTier STANDARD_V2 = fromString("Standard_v2");
+
+ /** Static value WAF_v2 for ApplicationGatewayTier. */
+ public static final ApplicationGatewayTier WAF_V2 = fromString("WAF_v2");
+
+ /**
+ * Creates or finds a ApplicationGatewayTier from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGatewayTier
+ */
+ @JsonCreator
+ public static ApplicationGatewayTier fromString(String name) {
+ return fromString(name, ApplicationGatewayTier.class);
+ }
+
+ /**
+ * @return known ApplicationGatewayTier values
+ */
+ public static Collection values() {
+ return values(ApplicationGatewayTier.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayTrustedRootCertificate.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayTrustedRootCertificate.java
new file mode 100644
index 000000000000..1494b2775c59
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayTrustedRootCertificate.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.SubResource;
+
+/**
+ * Trusted Root certificates of an application gateway.
+ */
+@JsonFlatten
+public class ApplicationGatewayTrustedRootCertificate extends SubResource {
+ /**
+ * Certificate public data.
+ */
+ @JsonProperty(value = "properties.data")
+ private String data;
+
+ /**
+ * Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate'
+ * object stored in KeyVault.
+ */
+ @JsonProperty(value = "properties.keyVaultSecretId")
+ private String keyVaultSecretId;
+
+ /**
+ * The provisioning state of the trusted root certificate resource.
+ * Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the trusted root certificate that is unique within an
+ * Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get certificate public data.
+ *
+ * @return the data value
+ */
+ public String data() {
+ return this.data;
+ }
+
+ /**
+ * Set certificate public data.
+ *
+ * @param data the data value to set
+ * @return the ApplicationGatewayTrustedRootCertificate object itself.
+ */
+ public ApplicationGatewayTrustedRootCertificate withData(String data) {
+ this.data = data;
+ return this;
+ }
+
+ /**
+ * Get secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.
+ *
+ * @return the keyVaultSecretId value
+ */
+ public String keyVaultSecretId() {
+ return this.keyVaultSecretId;
+ }
+
+ /**
+ * Set secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.
+ *
+ * @param keyVaultSecretId the keyVaultSecretId value to set
+ * @return the ApplicationGatewayTrustedRootCertificate object itself.
+ */
+ public ApplicationGatewayTrustedRootCertificate withKeyVaultSecretId(String keyVaultSecretId) {
+ this.keyVaultSecretId = keyVaultSecretId;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the trusted root certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the trusted root certificate that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the trusted root certificate that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayTrustedRootCertificate object itself.
+ */
+ public ApplicationGatewayTrustedRootCertificate withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayUrlConfiguration.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayUrlConfiguration.java
new file mode 100644
index 000000000000..b806cf07f4e0
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayUrlConfiguration.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Url configuration of the Actions set in Application Gateway.
+ */
+public class ApplicationGatewayUrlConfiguration {
+ /**
+ * Url path which user has provided for url rewrite. Null means no path
+ * will be updated. Default value is null.
+ */
+ @JsonProperty(value = "modifiedPath")
+ private String modifiedPath;
+
+ /**
+ * Query string which user has provided for url rewrite. Null means no
+ * query string will be updated. Default value is null.
+ */
+ @JsonProperty(value = "modifiedQueryString")
+ private String modifiedQueryString;
+
+ /**
+ * If set as true, it will re-evaluate the url path map provided in path
+ * based request routing rules using modified path. Default value is false.
+ */
+ @JsonProperty(value = "reroute")
+ private Boolean reroute;
+
+ /**
+ * Get url path which user has provided for url rewrite. Null means no path will be updated. Default value is null.
+ *
+ * @return the modifiedPath value
+ */
+ public String modifiedPath() {
+ return this.modifiedPath;
+ }
+
+ /**
+ * Set url path which user has provided for url rewrite. Null means no path will be updated. Default value is null.
+ *
+ * @param modifiedPath the modifiedPath value to set
+ * @return the ApplicationGatewayUrlConfiguration object itself.
+ */
+ public ApplicationGatewayUrlConfiguration withModifiedPath(String modifiedPath) {
+ this.modifiedPath = modifiedPath;
+ return this;
+ }
+
+ /**
+ * Get query string which user has provided for url rewrite. Null means no query string will be updated. Default value is null.
+ *
+ * @return the modifiedQueryString value
+ */
+ public String modifiedQueryString() {
+ return this.modifiedQueryString;
+ }
+
+ /**
+ * Set query string which user has provided for url rewrite. Null means no query string will be updated. Default value is null.
+ *
+ * @param modifiedQueryString the modifiedQueryString value to set
+ * @return the ApplicationGatewayUrlConfiguration object itself.
+ */
+ public ApplicationGatewayUrlConfiguration withModifiedQueryString(String modifiedQueryString) {
+ this.modifiedQueryString = modifiedQueryString;
+ return this;
+ }
+
+ /**
+ * Get if set as true, it will re-evaluate the url path map provided in path based request routing rules using modified path. Default value is false.
+ *
+ * @return the reroute value
+ */
+ public Boolean reroute() {
+ return this.reroute;
+ }
+
+ /**
+ * Set if set as true, it will re-evaluate the url path map provided in path based request routing rules using modified path. Default value is false.
+ *
+ * @param reroute the reroute value to set
+ * @return the ApplicationGatewayUrlConfiguration object itself.
+ */
+ public ApplicationGatewayUrlConfiguration withReroute(Boolean reroute) {
+ this.reroute = reroute;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayUrlPathMap.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayUrlPathMap.java
new file mode 100644
index 000000000000..54f382c63b6e
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayUrlPathMap.java
@@ -0,0 +1,224 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.SubResource;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * UrlPathMaps give a url path to the backend mapping information for
+ * PathBasedRouting.
+ */
+@JsonFlatten
+public class ApplicationGatewayUrlPathMap extends SubResource {
+ /**
+ * Default backend address pool resource of URL path map.
+ */
+ @JsonProperty(value = "properties.defaultBackendAddressPool")
+ private SubResource defaultBackendAddressPool;
+
+ /**
+ * Default backend http settings resource of URL path map.
+ */
+ @JsonProperty(value = "properties.defaultBackendHttpSettings")
+ private SubResource defaultBackendHttpSettings;
+
+ /**
+ * Default Rewrite rule set resource of URL path map.
+ */
+ @JsonProperty(value = "properties.defaultRewriteRuleSet")
+ private SubResource defaultRewriteRuleSet;
+
+ /**
+ * Default redirect configuration resource of URL path map.
+ */
+ @JsonProperty(value = "properties.defaultRedirectConfiguration")
+ private SubResource defaultRedirectConfiguration;
+
+ /**
+ * Path rule of URL path map resource.
+ */
+ @JsonProperty(value = "properties.pathRules")
+ private List pathRules;
+
+ /**
+ * The provisioning state of the URL path map resource. Possible values
+ * include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Name of the URL path map that is unique within an Application Gateway.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * A unique read-only string that changes whenever the resource is updated.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Type of the resource.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * Get default backend address pool resource of URL path map.
+ *
+ * @return the defaultBackendAddressPool value
+ */
+ public SubResource defaultBackendAddressPool() {
+ return this.defaultBackendAddressPool;
+ }
+
+ /**
+ * Set default backend address pool resource of URL path map.
+ *
+ * @param defaultBackendAddressPool the defaultBackendAddressPool value to set
+ * @return the ApplicationGatewayUrlPathMap object itself.
+ */
+ public ApplicationGatewayUrlPathMap withDefaultBackendAddressPool(SubResource defaultBackendAddressPool) {
+ this.defaultBackendAddressPool = defaultBackendAddressPool;
+ return this;
+ }
+
+ /**
+ * Get default backend http settings resource of URL path map.
+ *
+ * @return the defaultBackendHttpSettings value
+ */
+ public SubResource defaultBackendHttpSettings() {
+ return this.defaultBackendHttpSettings;
+ }
+
+ /**
+ * Set default backend http settings resource of URL path map.
+ *
+ * @param defaultBackendHttpSettings the defaultBackendHttpSettings value to set
+ * @return the ApplicationGatewayUrlPathMap object itself.
+ */
+ public ApplicationGatewayUrlPathMap withDefaultBackendHttpSettings(SubResource defaultBackendHttpSettings) {
+ this.defaultBackendHttpSettings = defaultBackendHttpSettings;
+ return this;
+ }
+
+ /**
+ * Get default Rewrite rule set resource of URL path map.
+ *
+ * @return the defaultRewriteRuleSet value
+ */
+ public SubResource defaultRewriteRuleSet() {
+ return this.defaultRewriteRuleSet;
+ }
+
+ /**
+ * Set default Rewrite rule set resource of URL path map.
+ *
+ * @param defaultRewriteRuleSet the defaultRewriteRuleSet value to set
+ * @return the ApplicationGatewayUrlPathMap object itself.
+ */
+ public ApplicationGatewayUrlPathMap withDefaultRewriteRuleSet(SubResource defaultRewriteRuleSet) {
+ this.defaultRewriteRuleSet = defaultRewriteRuleSet;
+ return this;
+ }
+
+ /**
+ * Get default redirect configuration resource of URL path map.
+ *
+ * @return the defaultRedirectConfiguration value
+ */
+ public SubResource defaultRedirectConfiguration() {
+ return this.defaultRedirectConfiguration;
+ }
+
+ /**
+ * Set default redirect configuration resource of URL path map.
+ *
+ * @param defaultRedirectConfiguration the defaultRedirectConfiguration value to set
+ * @return the ApplicationGatewayUrlPathMap object itself.
+ */
+ public ApplicationGatewayUrlPathMap withDefaultRedirectConfiguration(SubResource defaultRedirectConfiguration) {
+ this.defaultRedirectConfiguration = defaultRedirectConfiguration;
+ return this;
+ }
+
+ /**
+ * Get path rule of URL path map resource.
+ *
+ * @return the pathRules value
+ */
+ public List pathRules() {
+ return this.pathRules;
+ }
+
+ /**
+ * Set path rule of URL path map resource.
+ *
+ * @param pathRules the pathRules value to set
+ * @return the ApplicationGatewayUrlPathMap object itself.
+ */
+ public ApplicationGatewayUrlPathMap withPathRules(List pathRules) {
+ this.pathRules = pathRules;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the URL path map resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get name of the URL path map that is unique within an Application Gateway.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of the URL path map that is unique within an Application Gateway.
+ *
+ * @param name the name value to set
+ * @return the ApplicationGatewayUrlPathMap object itself.
+ */
+ public ApplicationGatewayUrlPathMap withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get a unique read-only string that changes whenever the resource is updated.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get type of the resource.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayWebApplicationFirewallConfiguration.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayWebApplicationFirewallConfiguration.java
new file mode 100644
index 000000000000..be0fd6c77b93
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGatewayWebApplicationFirewallConfiguration.java
@@ -0,0 +1,280 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Application gateway web application firewall configuration.
+ */
+public class ApplicationGatewayWebApplicationFirewallConfiguration {
+ /**
+ * Whether the web application firewall is enabled or not.
+ */
+ @JsonProperty(value = "enabled", required = true)
+ private boolean enabled;
+
+ /**
+ * Web application firewall mode. Possible values include: 'Detection',
+ * 'Prevention'.
+ */
+ @JsonProperty(value = "firewallMode", required = true)
+ private ApplicationGatewayFirewallMode firewallMode;
+
+ /**
+ * The type of the web application firewall rule set. Possible values are:
+ * 'OWASP'.
+ */
+ @JsonProperty(value = "ruleSetType", required = true)
+ private String ruleSetType;
+
+ /**
+ * The version of the rule set type.
+ */
+ @JsonProperty(value = "ruleSetVersion", required = true)
+ private String ruleSetVersion;
+
+ /**
+ * The disabled rule groups.
+ */
+ @JsonProperty(value = "disabledRuleGroups")
+ private List disabledRuleGroups;
+
+ /**
+ * Whether allow WAF to check request Body.
+ */
+ @JsonProperty(value = "requestBodyCheck")
+ private Boolean requestBodyCheck;
+
+ /**
+ * Maximum request body size for WAF.
+ */
+ @JsonProperty(value = "maxRequestBodySize")
+ private Integer maxRequestBodySize;
+
+ /**
+ * Maximum request body size in Kb for WAF.
+ */
+ @JsonProperty(value = "maxRequestBodySizeInKb")
+ private Integer maxRequestBodySizeInKb;
+
+ /**
+ * Maximum file upload size in Mb for WAF.
+ */
+ @JsonProperty(value = "fileUploadLimitInMb")
+ private Integer fileUploadLimitInMb;
+
+ /**
+ * The exclusion list.
+ */
+ @JsonProperty(value = "exclusions")
+ private List exclusions;
+
+ /**
+ * Get whether the web application firewall is enabled or not.
+ *
+ * @return the enabled value
+ */
+ public boolean enabled() {
+ return this.enabled;
+ }
+
+ /**
+ * Set whether the web application firewall is enabled or not.
+ *
+ * @param enabled the enabled value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withEnabled(boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Get web application firewall mode. Possible values include: 'Detection', 'Prevention'.
+ *
+ * @return the firewallMode value
+ */
+ public ApplicationGatewayFirewallMode firewallMode() {
+ return this.firewallMode;
+ }
+
+ /**
+ * Set web application firewall mode. Possible values include: 'Detection', 'Prevention'.
+ *
+ * @param firewallMode the firewallMode value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withFirewallMode(ApplicationGatewayFirewallMode firewallMode) {
+ this.firewallMode = firewallMode;
+ return this;
+ }
+
+ /**
+ * Get the type of the web application firewall rule set. Possible values are: 'OWASP'.
+ *
+ * @return the ruleSetType value
+ */
+ public String ruleSetType() {
+ return this.ruleSetType;
+ }
+
+ /**
+ * Set the type of the web application firewall rule set. Possible values are: 'OWASP'.
+ *
+ * @param ruleSetType the ruleSetType value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withRuleSetType(String ruleSetType) {
+ this.ruleSetType = ruleSetType;
+ return this;
+ }
+
+ /**
+ * Get the version of the rule set type.
+ *
+ * @return the ruleSetVersion value
+ */
+ public String ruleSetVersion() {
+ return this.ruleSetVersion;
+ }
+
+ /**
+ * Set the version of the rule set type.
+ *
+ * @param ruleSetVersion the ruleSetVersion value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withRuleSetVersion(String ruleSetVersion) {
+ this.ruleSetVersion = ruleSetVersion;
+ return this;
+ }
+
+ /**
+ * Get the disabled rule groups.
+ *
+ * @return the disabledRuleGroups value
+ */
+ public List disabledRuleGroups() {
+ return this.disabledRuleGroups;
+ }
+
+ /**
+ * Set the disabled rule groups.
+ *
+ * @param disabledRuleGroups the disabledRuleGroups value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withDisabledRuleGroups(List disabledRuleGroups) {
+ this.disabledRuleGroups = disabledRuleGroups;
+ return this;
+ }
+
+ /**
+ * Get whether allow WAF to check request Body.
+ *
+ * @return the requestBodyCheck value
+ */
+ public Boolean requestBodyCheck() {
+ return this.requestBodyCheck;
+ }
+
+ /**
+ * Set whether allow WAF to check request Body.
+ *
+ * @param requestBodyCheck the requestBodyCheck value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withRequestBodyCheck(Boolean requestBodyCheck) {
+ this.requestBodyCheck = requestBodyCheck;
+ return this;
+ }
+
+ /**
+ * Get maximum request body size for WAF.
+ *
+ * @return the maxRequestBodySize value
+ */
+ public Integer maxRequestBodySize() {
+ return this.maxRequestBodySize;
+ }
+
+ /**
+ * Set maximum request body size for WAF.
+ *
+ * @param maxRequestBodySize the maxRequestBodySize value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withMaxRequestBodySize(Integer maxRequestBodySize) {
+ this.maxRequestBodySize = maxRequestBodySize;
+ return this;
+ }
+
+ /**
+ * Get maximum request body size in Kb for WAF.
+ *
+ * @return the maxRequestBodySizeInKb value
+ */
+ public Integer maxRequestBodySizeInKb() {
+ return this.maxRequestBodySizeInKb;
+ }
+
+ /**
+ * Set maximum request body size in Kb for WAF.
+ *
+ * @param maxRequestBodySizeInKb the maxRequestBodySizeInKb value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withMaxRequestBodySizeInKb(Integer maxRequestBodySizeInKb) {
+ this.maxRequestBodySizeInKb = maxRequestBodySizeInKb;
+ return this;
+ }
+
+ /**
+ * Get maximum file upload size in Mb for WAF.
+ *
+ * @return the fileUploadLimitInMb value
+ */
+ public Integer fileUploadLimitInMb() {
+ return this.fileUploadLimitInMb;
+ }
+
+ /**
+ * Set maximum file upload size in Mb for WAF.
+ *
+ * @param fileUploadLimitInMb the fileUploadLimitInMb value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withFileUploadLimitInMb(Integer fileUploadLimitInMb) {
+ this.fileUploadLimitInMb = fileUploadLimitInMb;
+ return this;
+ }
+
+ /**
+ * Get the exclusion list.
+ *
+ * @return the exclusions value
+ */
+ public List exclusions() {
+ return this.exclusions;
+ }
+
+ /**
+ * Set the exclusion list.
+ *
+ * @param exclusions the exclusions value to set
+ * @return the ApplicationGatewayWebApplicationFirewallConfiguration object itself.
+ */
+ public ApplicationGatewayWebApplicationFirewallConfiguration withExclusions(List exclusions) {
+ this.exclusions = exclusions;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGateways.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGateways.java
new file mode 100644
index 000000000000..d4b3487a065c
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationGateways.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup;
+import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion;
+import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup;
+import rx.Observable;
+import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import rx.Completable;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationGatewaysInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ApplicationGateways.
+ */
+public interface ApplicationGateways extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+ /**
+ * Starts the specified application gateway.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param applicationGatewayName The name of the application gateway.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable startAsync(String resourceGroupName, String applicationGatewayName);
+
+ /**
+ * Stops the specified application gateway in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param applicationGatewayName The name of the application gateway.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable stopAsync(String resourceGroupName, String applicationGatewayName);
+
+ /**
+ * Gets the backend health of the specified application gateway in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param applicationGatewayName The name of the application gateway.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable backendHealthAsync(String resourceGroupName, String applicationGatewayName);
+
+ /**
+ * Gets the backend health for given combination of backend pool and http setting of the specified application gateway in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param applicationGatewayName The name of the application gateway.
+ * @param probeRequest Request body for on-demand test probe operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable backendHealthOnDemandAsync(String resourceGroupName, String applicationGatewayName, ApplicationGatewayOnDemandProbe probeRequest);
+
+ /**
+ * Lists all available server variables.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAvailableServerVariablesAsync();
+
+ /**
+ * Lists all available request headers.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAvailableRequestHeadersAsync();
+
+ /**
+ * Lists all available response headers.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAvailableResponseHeadersAsync();
+
+ /**
+ * Lists all available web application firewall rule sets.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAvailableWafRuleSetsAsync();
+
+ /**
+ * Lists available Ssl options for configuring Ssl policy.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAvailableSslOptionsAsync();
+
+ /**
+ * Lists all SSL predefined policies for configuring Ssl policy.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAvailableSslPredefinedPoliciesAsync();
+
+ /**
+ * Gets Ssl predefined policy with the specified policy name.
+ *
+ * @param predefinedPolicyName Name of Ssl predefined policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getSslPredefinedPolicyAsync(String predefinedPolicyName);
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationRuleCondition.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationRuleCondition.java
new file mode 100644
index 000000000000..37b590b061b1
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationRuleCondition.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Rule condition of type application.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "ruleConditionType", defaultImpl = ApplicationRuleCondition.class)
+@JsonTypeName("ApplicationRuleCondition")
+public class ApplicationRuleCondition extends FirewallPolicyRuleCondition {
+ /**
+ * List of source IP addresses for this rule.
+ */
+ @JsonProperty(value = "sourceAddresses")
+ private List sourceAddresses;
+
+ /**
+ * List of destination IP addresses or Service Tags.
+ */
+ @JsonProperty(value = "destinationAddresses")
+ private List destinationAddresses;
+
+ /**
+ * Array of Application Protocols.
+ */
+ @JsonProperty(value = "protocols")
+ private List protocols;
+
+ /**
+ * List of Urls for this rule condition.
+ */
+ @JsonProperty(value = "targetUrls")
+ private List targetUrls;
+
+ /**
+ * List of FQDNs for this rule condition.
+ */
+ @JsonProperty(value = "targetFqdns")
+ private List targetFqdns;
+
+ /**
+ * List of FQDN Tags for this rule condition.
+ */
+ @JsonProperty(value = "fqdnTags")
+ private List fqdnTags;
+
+ /**
+ * List of source IpGroups for this rule.
+ */
+ @JsonProperty(value = "sourceIpGroups")
+ private List sourceIpGroups;
+
+ /**
+ * Get list of source IP addresses for this rule.
+ *
+ * @return the sourceAddresses value
+ */
+ public List sourceAddresses() {
+ return this.sourceAddresses;
+ }
+
+ /**
+ * Set list of source IP addresses for this rule.
+ *
+ * @param sourceAddresses the sourceAddresses value to set
+ * @return the ApplicationRuleCondition object itself.
+ */
+ public ApplicationRuleCondition withSourceAddresses(List sourceAddresses) {
+ this.sourceAddresses = sourceAddresses;
+ return this;
+ }
+
+ /**
+ * Get list of destination IP addresses or Service Tags.
+ *
+ * @return the destinationAddresses value
+ */
+ public List destinationAddresses() {
+ return this.destinationAddresses;
+ }
+
+ /**
+ * Set list of destination IP addresses or Service Tags.
+ *
+ * @param destinationAddresses the destinationAddresses value to set
+ * @return the ApplicationRuleCondition object itself.
+ */
+ public ApplicationRuleCondition withDestinationAddresses(List destinationAddresses) {
+ this.destinationAddresses = destinationAddresses;
+ return this;
+ }
+
+ /**
+ * Get array of Application Protocols.
+ *
+ * @return the protocols value
+ */
+ public List protocols() {
+ return this.protocols;
+ }
+
+ /**
+ * Set array of Application Protocols.
+ *
+ * @param protocols the protocols value to set
+ * @return the ApplicationRuleCondition object itself.
+ */
+ public ApplicationRuleCondition withProtocols(List protocols) {
+ this.protocols = protocols;
+ return this;
+ }
+
+ /**
+ * Get list of Urls for this rule condition.
+ *
+ * @return the targetUrls value
+ */
+ public List targetUrls() {
+ return this.targetUrls;
+ }
+
+ /**
+ * Set list of Urls for this rule condition.
+ *
+ * @param targetUrls the targetUrls value to set
+ * @return the ApplicationRuleCondition object itself.
+ */
+ public ApplicationRuleCondition withTargetUrls(List targetUrls) {
+ this.targetUrls = targetUrls;
+ return this;
+ }
+
+ /**
+ * Get list of FQDNs for this rule condition.
+ *
+ * @return the targetFqdns value
+ */
+ public List targetFqdns() {
+ return this.targetFqdns;
+ }
+
+ /**
+ * Set list of FQDNs for this rule condition.
+ *
+ * @param targetFqdns the targetFqdns value to set
+ * @return the ApplicationRuleCondition object itself.
+ */
+ public ApplicationRuleCondition withTargetFqdns(List targetFqdns) {
+ this.targetFqdns = targetFqdns;
+ return this;
+ }
+
+ /**
+ * Get list of FQDN Tags for this rule condition.
+ *
+ * @return the fqdnTags value
+ */
+ public List fqdnTags() {
+ return this.fqdnTags;
+ }
+
+ /**
+ * Set list of FQDN Tags for this rule condition.
+ *
+ * @param fqdnTags the fqdnTags value to set
+ * @return the ApplicationRuleCondition object itself.
+ */
+ public ApplicationRuleCondition withFqdnTags(List fqdnTags) {
+ this.fqdnTags = fqdnTags;
+ return this;
+ }
+
+ /**
+ * Get list of source IpGroups for this rule.
+ *
+ * @return the sourceIpGroups value
+ */
+ public List sourceIpGroups() {
+ return this.sourceIpGroups;
+ }
+
+ /**
+ * Set list of source IpGroups for this rule.
+ *
+ * @param sourceIpGroups the sourceIpGroups value to set
+ * @return the ApplicationRuleCondition object itself.
+ */
+ public ApplicationRuleCondition withSourceIpGroups(List sourceIpGroups) {
+ this.sourceIpGroups = sourceIpGroups;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationSecurityGroup.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationSecurityGroup.java
new file mode 100644
index 000000000000..7219d5c1dc7f
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationSecurityGroup.java
@@ -0,0 +1,83 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.Resource;
+import com.microsoft.azure.arm.resources.models.GroupableResourceCore;
+import com.microsoft.azure.arm.resources.models.HasResourceGroup;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationSecurityGroupInner;
+
+/**
+ * Type representing ApplicationSecurityGroup.
+ */
+public interface ApplicationSecurityGroup extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the etag value.
+ */
+ String etag();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the resourceGuid value.
+ */
+ String resourceGuid();
+
+ /**
+ * The entirety of the ApplicationSecurityGroup definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ApplicationSecurityGroup definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ApplicationSecurityGroup definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the ApplicationSecurityGroup definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, Resource.DefinitionWithTags {
+ }
+ }
+ /**
+ * The template for a ApplicationSecurityGroup update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags {
+ }
+
+ /**
+ * Grouping of ApplicationSecurityGroup update stages.
+ */
+ interface UpdateStages {
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationSecurityGroups.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationSecurityGroups.java
new file mode 100644
index 000000000000..fbb8831860d0
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/ApplicationSecurityGroups.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup;
+import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion;
+import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup;
+import rx.Observable;
+import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.ApplicationSecurityGroupsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ApplicationSecurityGroups.
+ */
+public interface ApplicationSecurityGroups extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AssociationType.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AssociationType.java
new file mode 100644
index 000000000000..0fd8726d1878
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AssociationType.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AssociationType.
+ */
+public final class AssociationType extends ExpandableStringEnum {
+ /** Static value Associated for AssociationType. */
+ public static final AssociationType ASSOCIATED = fromString("Associated");
+
+ /** Static value Contains for AssociationType. */
+ public static final AssociationType CONTAINS = fromString("Contains");
+
+ /**
+ * Creates or finds a AssociationType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AssociationType
+ */
+ @JsonCreator
+ public static AssociationType fromString(String name) {
+ return fromString(name, AssociationType.class);
+ }
+
+ /**
+ * @return known AssociationType values
+ */
+ public static Collection values() {
+ return values(AssociationType.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AuthenticationMethod.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AuthenticationMethod.java
new file mode 100644
index 000000000000..34e1b855278a
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AuthenticationMethod.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AuthenticationMethod.
+ */
+public final class AuthenticationMethod extends ExpandableStringEnum {
+ /** Static value EAPTLS for AuthenticationMethod. */
+ public static final AuthenticationMethod EAPTLS = fromString("EAPTLS");
+
+ /** Static value EAPMSCHAPv2 for AuthenticationMethod. */
+ public static final AuthenticationMethod EAPMSCHAPV2 = fromString("EAPMSCHAPv2");
+
+ /**
+ * Creates or finds a AuthenticationMethod from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AuthenticationMethod
+ */
+ @JsonCreator
+ public static AuthenticationMethod fromString(String name) {
+ return fromString(name, AuthenticationMethod.class);
+ }
+
+ /**
+ * @return known AuthenticationMethod values
+ */
+ public static Collection values() {
+ return values(AuthenticationMethod.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AuthorizationUseStatus.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AuthorizationUseStatus.java
new file mode 100644
index 000000000000..2fe1316e783d
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AuthorizationUseStatus.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AuthorizationUseStatus.
+ */
+public final class AuthorizationUseStatus extends ExpandableStringEnum {
+ /** Static value Available for AuthorizationUseStatus. */
+ public static final AuthorizationUseStatus AVAILABLE = fromString("Available");
+
+ /** Static value InUse for AuthorizationUseStatus. */
+ public static final AuthorizationUseStatus IN_USE = fromString("InUse");
+
+ /**
+ * Creates or finds a AuthorizationUseStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AuthorizationUseStatus
+ */
+ @JsonCreator
+ public static AuthorizationUseStatus fromString(String name) {
+ return fromString(name, AuthorizationUseStatus.class);
+ }
+
+ /**
+ * @return known AuthorizationUseStatus values
+ */
+ public static Collection values() {
+ return values(AuthorizationUseStatus.class);
+ }
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AutoApprovedPrivateLinkService.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AutoApprovedPrivateLinkService.java
new file mode 100644
index 000000000000..c7f223458e3e
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AutoApprovedPrivateLinkService.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.AutoApprovedPrivateLinkServiceInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+
+/**
+ * Type representing AutoApprovedPrivateLinkService.
+ */
+public interface AutoApprovedPrivateLinkService extends HasInner, HasManager {
+ /**
+ * @return the privateLinkService value.
+ */
+ String privateLinkService();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/Availability.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/Availability.java
new file mode 100644
index 000000000000..2aa2b7bc0ed7
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/Availability.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Availability of the metric.
+ */
+public class Availability {
+ /**
+ * The time grain of the availability.
+ */
+ @JsonProperty(value = "timeGrain")
+ private String timeGrain;
+
+ /**
+ * The retention of the availability.
+ */
+ @JsonProperty(value = "retention")
+ private String retention;
+
+ /**
+ * Duration of the availability blob.
+ */
+ @JsonProperty(value = "blobDuration")
+ private String blobDuration;
+
+ /**
+ * Get the time grain of the availability.
+ *
+ * @return the timeGrain value
+ */
+ public String timeGrain() {
+ return this.timeGrain;
+ }
+
+ /**
+ * Set the time grain of the availability.
+ *
+ * @param timeGrain the timeGrain value to set
+ * @return the Availability object itself.
+ */
+ public Availability withTimeGrain(String timeGrain) {
+ this.timeGrain = timeGrain;
+ return this;
+ }
+
+ /**
+ * Get the retention of the availability.
+ *
+ * @return the retention value
+ */
+ public String retention() {
+ return this.retention;
+ }
+
+ /**
+ * Set the retention of the availability.
+ *
+ * @param retention the retention value to set
+ * @return the Availability object itself.
+ */
+ public Availability withRetention(String retention) {
+ this.retention = retention;
+ return this;
+ }
+
+ /**
+ * Get duration of the availability blob.
+ *
+ * @return the blobDuration value
+ */
+ public String blobDuration() {
+ return this.blobDuration;
+ }
+
+ /**
+ * Set duration of the availability blob.
+ *
+ * @param blobDuration the blobDuration value to set
+ * @return the Availability object itself.
+ */
+ public Availability withBlobDuration(String blobDuration) {
+ this.blobDuration = blobDuration;
+ return this;
+ }
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableDelegations.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableDelegations.java
new file mode 100644
index 000000000000..6f7ed553f1fb
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableDelegations.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.AvailableDelegationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing AvailableDelegations.
+ */
+public interface AvailableDelegations extends HasInner {
+ /**
+ * Gets all of the available subnet delegations for this subscription in this region.
+ *
+ * @param location The location of the subnet.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String location);
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableEndpointServices.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableEndpointServices.java
new file mode 100644
index 000000000000..2e5e6d22f918
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableEndpointServices.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.AvailableEndpointServicesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing AvailableEndpointServices.
+ */
+public interface AvailableEndpointServices extends HasInner {
+ /**
+ * List what values of endpoint services are available for use.
+ *
+ * @param location The location to check available endpoint services.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String location);
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailablePrivateEndpointType.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailablePrivateEndpointType.java
new file mode 100644
index 000000000000..59a41e56d058
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailablePrivateEndpointType.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.AvailablePrivateEndpointTypeInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+
+/**
+ * Type representing AvailablePrivateEndpointType.
+ */
+public interface AvailablePrivateEndpointType extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the resourceName value.
+ */
+ String resourceName();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailablePrivateEndpointTypes.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailablePrivateEndpointTypes.java
new file mode 100644
index 000000000000..5c1424ac6f21
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailablePrivateEndpointTypes.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.AvailablePrivateEndpointTypesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing AvailablePrivateEndpointTypes.
+ */
+public interface AvailablePrivateEndpointTypes extends HasInner {
+ /**
+ * Returns all of the resource types that can be linked to a Private Endpoint in this subscription in this region.
+ *
+ * @param location The location of the domain name.
+ * @param resourceGroupName The name of the resource group.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByResourceGroupAsync(final String location, final String resourceGroupName);
+
+ /**
+ * Returns all of the resource types that can be linked to a Private Endpoint in this subscription in this region.
+ *
+ * @param location The location of the domain name.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String location);
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableProvidersList.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableProvidersList.java
new file mode 100644
index 000000000000..b2803178ef4f
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableProvidersList.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.NetworkManager;
+import com.microsoft.azure.management.network.v2020_04_01.implementation.AvailableProvidersListInner;
+import java.util.List;
+
+/**
+ * Type representing AvailableProvidersList.
+ */
+public interface AvailableProvidersList extends HasInner, HasManager {
+ /**
+ * @return the countries value.
+ */
+ List countries();
+
+}
diff --git a/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableProvidersListCity.java b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableProvidersListCity.java
new file mode 100644
index 000000000000..63477e8bfea0
--- /dev/null
+++ b/sdk/network/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/network/v2020_04_01/AvailableProvidersListCity.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.network.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * City or town details.
+ */
+public class AvailableProvidersListCity {
+ /**
+ * The city or town name.
+ */
+ @JsonProperty(value = "cityName")
+ private String cityName;
+
+ /**
+ * A list of Internet service providers.
+ */
+ @JsonProperty(value = "providers")
+ private List