// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

// Application gateway resource.
type ApplicationGateway_STATUS struct {
	// Etag: A unique read-only string that changes whenever the resource is updated.
	Etag *string `json:"etag,omitempty"`

	// Id: Resource ID.
	Id *string `json:"id,omitempty"`

	// Identity: The identity of the application gateway, if configured.
	Identity *ManagedServiceIdentity_STATUS `json:"identity,omitempty"`

	// Location: Resource location.
	Location *string `json:"location,omitempty"`

	// Name: Resource name.
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the application gateway.
	Properties *ApplicationGatewayPropertiesFormat_STATUS `json:"properties,omitempty"`

	// Tags: Resource tags.
	Tags map[string]string `json:"tags,omitempty"`

	// Type: Resource type.
	Type *string `json:"type,omitempty"`

	// Zones: A list of availability zones denoting where the resource needs to come from.
	Zones []string `json:"zones,omitempty"`
}

// Properties of the application gateway.
type ApplicationGatewayPropertiesFormat_STATUS struct {
	// 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).
	AuthenticationCertificates []ApplicationGatewayAuthenticationCertificate_STATUS `json:"authenticationCertificates,omitempty"`

	// AutoscaleConfiguration: Autoscale Configuration.
	AutoscaleConfiguration *ApplicationGatewayAutoscaleConfiguration_STATUS `json:"autoscaleConfiguration,omitempty"`

	// 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).
	BackendAddressPools []ApplicationGatewayBackendAddressPool_STATUS `json:"backendAddressPools,omitempty"`

	// 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).
	BackendHttpSettingsCollection []ApplicationGatewayBackendHttpSettings_STATUS `json:"backendHttpSettingsCollection,omitempty"`

	// BackendSettingsCollection: Backend settings of the application gateway resource. For default limits, see [Application
	// Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).
	BackendSettingsCollection []ApplicationGatewayBackendSettings_STATUS `json:"backendSettingsCollection,omitempty"`

	// CustomErrorConfigurations: Custom error configurations of the application gateway resource.
	CustomErrorConfigurations []ApplicationGatewayCustomError_STATUS `json:"customErrorConfigurations,omitempty"`

	// EnableFips: Whether FIPS is enabled on the application gateway resource.
	EnableFips *bool `json:"enableFips,omitempty"`

	// EnableHttp2: Whether HTTP2 is enabled on the application gateway resource.
	EnableHttp2 *bool `json:"enableHttp2,omitempty"`

	// FirewallPolicy: Reference to the FirewallPolicy resource.
	FirewallPolicy *SubResource_STATUS `json:"firewallPolicy,omitempty"`

	// ForceFirewallPolicyAssociation: If true, associates a firewall policy with an application gateway regardless whether the
	// policy differs from the WAF Config.
	ForceFirewallPolicyAssociation *bool `json:"forceFirewallPolicyAssociation,omitempty"`

	// 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).
	FrontendIPConfigurations []ApplicationGatewayFrontendIPConfiguration_STATUS `json:"frontendIPConfigurations,omitempty"`

	// 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).
	FrontendPorts []ApplicationGatewayFrontendPort_STATUS `json:"frontendPorts,omitempty"`

	// 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).
	GatewayIPConfigurations []ApplicationGatewayIPConfiguration_STATUS_ApplicationGateway_SubResourceEmbedded `json:"gatewayIPConfigurations,omitempty"`

	// GlobalConfiguration: Global Configuration.
	GlobalConfiguration *ApplicationGatewayGlobalConfiguration_STATUS `json:"globalConfiguration,omitempty"`

	// 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).
	HttpListeners []ApplicationGatewayHttpListener_STATUS `json:"httpListeners,omitempty"`

	// Listeners: 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).
	Listeners []ApplicationGatewayListener_STATUS `json:"listeners,omitempty"`

	// LoadDistributionPolicies: Load distribution policies of the application gateway resource.
	LoadDistributionPolicies []ApplicationGatewayLoadDistributionPolicy_STATUS `json:"loadDistributionPolicies,omitempty"`

	// OperationalState: Operational state of the application gateway resource.
	OperationalState *ApplicationGatewayPropertiesFormat_OperationalState_STATUS `json:"operationalState,omitempty"`

	// PrivateEndpointConnections: Private Endpoint connections on application gateway.
	PrivateEndpointConnections []ApplicationGatewayPrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"`

	// PrivateLinkConfigurations: PrivateLink configurations on application gateway.
	PrivateLinkConfigurations []ApplicationGatewayPrivateLinkConfiguration_STATUS `json:"privateLinkConfigurations,omitempty"`

	// Probes: Probes of the application gateway resource.
	Probes []ApplicationGatewayProbe_STATUS `json:"probes,omitempty"`

	// ProvisioningState: The provisioning state of the application gateway resource.
	ProvisioningState *ApplicationGatewayProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// 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).
	RedirectConfigurations []ApplicationGatewayRedirectConfiguration_STATUS `json:"redirectConfigurations,omitempty"`

	// RequestRoutingRules: Request routing rules of the application gateway resource.
	RequestRoutingRules []ApplicationGatewayRequestRoutingRule_STATUS `json:"requestRoutingRules,omitempty"`

	// ResourceGuid: The resource GUID property of the application gateway resource.
	ResourceGuid *string `json:"resourceGuid,omitempty"`

	// RewriteRuleSets: Rewrite rules for the application gateway resource.
	RewriteRuleSets []ApplicationGatewayRewriteRuleSet_STATUS `json:"rewriteRuleSets,omitempty"`

	// RoutingRules: Routing rules of the application gateway resource.
	RoutingRules []ApplicationGatewayRoutingRule_STATUS `json:"routingRules,omitempty"`

	// Sku: SKU of the application gateway resource.
	Sku *ApplicationGatewaySku_STATUS `json:"sku,omitempty"`

	// 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).
	SslCertificates []ApplicationGatewaySslCertificate_STATUS `json:"sslCertificates,omitempty"`

	// SslPolicy: SSL policy of the application gateway resource.
	SslPolicy *ApplicationGatewaySslPolicy_STATUS `json:"sslPolicy,omitempty"`

	// SslProfiles: SSL profiles of the application gateway resource. For default limits, see [Application Gateway
	// limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).
	SslProfiles []ApplicationGatewaySslProfile_STATUS `json:"sslProfiles,omitempty"`

	// TrustedClientCertificates: Trusted client certificates of the application gateway resource. For default limits, see
	// [Application Gateway
	// limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits).
	TrustedClientCertificates []ApplicationGatewayTrustedClientCertificate_STATUS `json:"trustedClientCertificates,omitempty"`

	// 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).
	TrustedRootCertificates []ApplicationGatewayTrustedRootCertificate_STATUS `json:"trustedRootCertificates,omitempty"`

	// 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).
	UrlPathMaps []ApplicationGatewayUrlPathMap_STATUS `json:"urlPathMaps,omitempty"`

	// WebApplicationFirewallConfiguration: Web application firewall configuration.
	WebApplicationFirewallConfiguration *ApplicationGatewayWebApplicationFirewallConfiguration_STATUS `json:"webApplicationFirewallConfiguration,omitempty"`
}

// Identity for the resource.
type ManagedServiceIdentity_STATUS struct {
	// PrincipalId: The principal id of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: The tenant id of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	TenantId *string `json:"tenantId,omitempty"`

	// Type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly
	// created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual
	// machine.
	Type *ManagedServiceIdentity_Type_STATUS `json:"type,omitempty"`

	// UserAssignedIdentities: The list of user identities associated with resource. The user identity dictionary key
	// references will be ARM resource ids in the form:
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
	UserAssignedIdentities map[string]ManagedServiceIdentity_UserAssignedIdentities_STATUS `json:"userAssignedIdentities,omitempty"`
}

// Authentication certificates of an application gateway.
type ApplicationGatewayAuthenticationCertificate_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Application Gateway autoscale configuration.
type ApplicationGatewayAutoscaleConfiguration_STATUS struct {
	// MaxCapacity: Upper bound on number of Application Gateway capacity.
	MaxCapacity *int `json:"maxCapacity,omitempty"`

	// MinCapacity: Lower bound on number of Application Gateway capacity.
	MinCapacity *int `json:"minCapacity,omitempty"`
}

// Backend Address Pool of an application gateway.
type ApplicationGatewayBackendAddressPool_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Backend address pool settings of an application gateway.
type ApplicationGatewayBackendHttpSettings_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Backend address pool settings of an application gateway.
type ApplicationGatewayBackendSettings_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Customer error of an application gateway.
type ApplicationGatewayCustomError_STATUS struct {
	// CustomErrorPageUrl: Error page URL of the application gateway customer error.
	CustomErrorPageUrl *string `json:"customErrorPageUrl,omitempty"`

	// StatusCode: Status code of the application gateway customer error.
	StatusCode *ApplicationGatewayCustomError_StatusCode_STATUS `json:"statusCode,omitempty"`
}

// Frontend IP configuration of an application gateway.
type ApplicationGatewayFrontendIPConfiguration_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Frontend port of an application gateway.
type ApplicationGatewayFrontendPort_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Application Gateway global configuration.
type ApplicationGatewayGlobalConfiguration_STATUS struct {
	// EnableRequestBuffering: Enable request buffering.
	EnableRequestBuffering *bool `json:"enableRequestBuffering,omitempty"`

	// EnableResponseBuffering: Enable response buffering.
	EnableResponseBuffering *bool `json:"enableResponseBuffering,omitempty"`
}

// Http listener of an application gateway.
type ApplicationGatewayHttpListener_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
type ApplicationGatewayIPConfiguration_STATUS_ApplicationGateway_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Listener of an application gateway.
type ApplicationGatewayListener_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Load Distribution Policy of an application gateway.
type ApplicationGatewayLoadDistributionPolicy_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Private Endpoint connection on an application gateway.
type ApplicationGatewayPrivateEndpointConnection_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Private Link Configuration on an application gateway.
type ApplicationGatewayPrivateLinkConfiguration_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Probe of the application gateway.
type ApplicationGatewayProbe_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

type ApplicationGatewayPropertiesFormat_OperationalState_STATUS string

const (
	ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Running  = ApplicationGatewayPropertiesFormat_OperationalState_STATUS("Running")
	ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Starting = ApplicationGatewayPropertiesFormat_OperationalState_STATUS("Starting")
	ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Stopped  = ApplicationGatewayPropertiesFormat_OperationalState_STATUS("Stopped")
	ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Stopping = ApplicationGatewayPropertiesFormat_OperationalState_STATUS("Stopping")
)

// Mapping from string to ApplicationGatewayPropertiesFormat_OperationalState_STATUS
var applicationGatewayPropertiesFormat_OperationalState_STATUS_Values = map[string]ApplicationGatewayPropertiesFormat_OperationalState_STATUS{
	"running":  ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Running,
	"starting": ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Starting,
	"stopped":  ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Stopped,
	"stopping": ApplicationGatewayPropertiesFormat_OperationalState_STATUS_Stopping,
}

// The current provisioning state.
type ApplicationGatewayProvisioningState_STATUS string

const (
	ApplicationGatewayProvisioningState_STATUS_Deleting  = ApplicationGatewayProvisioningState_STATUS("Deleting")
	ApplicationGatewayProvisioningState_STATUS_Failed    = ApplicationGatewayProvisioningState_STATUS("Failed")
	ApplicationGatewayProvisioningState_STATUS_Succeeded = ApplicationGatewayProvisioningState_STATUS("Succeeded")
	ApplicationGatewayProvisioningState_STATUS_Updating  = ApplicationGatewayProvisioningState_STATUS("Updating")
)

// Mapping from string to ApplicationGatewayProvisioningState_STATUS
var applicationGatewayProvisioningState_STATUS_Values = map[string]ApplicationGatewayProvisioningState_STATUS{
	"deleting":  ApplicationGatewayProvisioningState_STATUS_Deleting,
	"failed":    ApplicationGatewayProvisioningState_STATUS_Failed,
	"succeeded": ApplicationGatewayProvisioningState_STATUS_Succeeded,
	"updating":  ApplicationGatewayProvisioningState_STATUS_Updating,
}

// Redirect configuration of an application gateway.
type ApplicationGatewayRedirectConfiguration_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Request routing rule of an application gateway.
type ApplicationGatewayRequestRoutingRule_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Rewrite rule set of an application gateway.
type ApplicationGatewayRewriteRuleSet_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Routing rule of an application gateway.
type ApplicationGatewayRoutingRule_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// SKU of an application gateway.
type ApplicationGatewaySku_STATUS struct {
	// Capacity: Capacity (instance count) of an application gateway.
	Capacity *int `json:"capacity,omitempty"`

	// Name: Name of an application gateway SKU.
	Name *ApplicationGatewaySku_Name_STATUS `json:"name,omitempty"`

	// Tier: Tier of an application gateway.
	Tier *ApplicationGatewaySku_Tier_STATUS `json:"tier,omitempty"`
}

// SSL certificates of an application gateway.
type ApplicationGatewaySslCertificate_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Application Gateway Ssl policy.
type ApplicationGatewaySslPolicy_STATUS struct {
	// CipherSuites: Ssl cipher suites to be enabled in the specified order to application gateway.
	CipherSuites []CipherSuitesEnum_STATUS `json:"cipherSuites,omitempty"`

	// DisabledSslProtocols: Ssl protocols to be disabled on application gateway.
	DisabledSslProtocols []ProtocolsEnum_STATUS `json:"disabledSslProtocols,omitempty"`

	// MinProtocolVersion: Minimum version of Ssl protocol to be supported on application gateway.
	MinProtocolVersion *ProtocolsEnum_STATUS `json:"minProtocolVersion,omitempty"`

	// PolicyName: Name of Ssl predefined policy.
	PolicyName *PolicyNameEnum_STATUS `json:"policyName,omitempty"`

	// PolicyType: Type of Ssl Policy.
	PolicyType *ApplicationGatewaySslPolicy_PolicyType_STATUS `json:"policyType,omitempty"`
}

// SSL profile of an application gateway.
type ApplicationGatewaySslProfile_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Trusted client certificates of an application gateway.
type ApplicationGatewayTrustedClientCertificate_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Trusted Root certificates of an application gateway.
type ApplicationGatewayTrustedRootCertificate_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
type ApplicationGatewayUrlPathMap_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Application gateway web application firewall configuration.
type ApplicationGatewayWebApplicationFirewallConfiguration_STATUS struct {
	// DisabledRuleGroups: The disabled rule groups.
	DisabledRuleGroups []ApplicationGatewayFirewallDisabledRuleGroup_STATUS `json:"disabledRuleGroups,omitempty"`

	// Enabled: Whether the web application firewall is enabled or not.
	Enabled *bool `json:"enabled,omitempty"`

	// Exclusions: The exclusion list.
	Exclusions []ApplicationGatewayFirewallExclusion_STATUS `json:"exclusions,omitempty"`

	// FileUploadLimitInMb: Maximum file upload size in Mb for WAF.
	FileUploadLimitInMb *int `json:"fileUploadLimitInMb,omitempty"`

	// FirewallMode: Web application firewall mode.
	FirewallMode *ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS `json:"firewallMode,omitempty"`

	// MaxRequestBodySize: Maximum request body size for WAF.
	MaxRequestBodySize *int `json:"maxRequestBodySize,omitempty"`

	// MaxRequestBodySizeInKb: Maximum request body size in Kb for WAF.
	MaxRequestBodySizeInKb *int `json:"maxRequestBodySizeInKb,omitempty"`

	// RequestBodyCheck: Whether allow WAF to check request Body.
	RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"`

	// RuleSetType: The type of the web application firewall rule set. Possible values are: 'OWASP'.
	RuleSetType *string `json:"ruleSetType,omitempty"`

	// RuleSetVersion: The version of the rule set type.
	RuleSetVersion *string `json:"ruleSetVersion,omitempty"`
}

type ManagedServiceIdentity_Type_STATUS string

const (
	ManagedServiceIdentity_Type_STATUS_None                       = ManagedServiceIdentity_Type_STATUS("None")
	ManagedServiceIdentity_Type_STATUS_SystemAssigned             = ManagedServiceIdentity_Type_STATUS("SystemAssigned")
	ManagedServiceIdentity_Type_STATUS_SystemAssignedUserAssigned = ManagedServiceIdentity_Type_STATUS("SystemAssigned, UserAssigned")
	ManagedServiceIdentity_Type_STATUS_UserAssigned               = ManagedServiceIdentity_Type_STATUS("UserAssigned")
)

// Mapping from string to ManagedServiceIdentity_Type_STATUS
var managedServiceIdentity_Type_STATUS_Values = map[string]ManagedServiceIdentity_Type_STATUS{
	"none":                         ManagedServiceIdentity_Type_STATUS_None,
	"systemassigned":               ManagedServiceIdentity_Type_STATUS_SystemAssigned,
	"systemassigned, userassigned": ManagedServiceIdentity_Type_STATUS_SystemAssignedUserAssigned,
	"userassigned":                 ManagedServiceIdentity_Type_STATUS_UserAssigned,
}

type ManagedServiceIdentity_UserAssignedIdentities_STATUS struct {
	// ClientId: The client id of user assigned identity.
	ClientId *string `json:"clientId,omitempty"`

	// PrincipalId: The principal id of user assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`
}

// Reference to another ARM resource.
type SubResource_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

type ApplicationGatewayCustomError_StatusCode_STATUS string

const (
	ApplicationGatewayCustomError_StatusCode_STATUS_HttpStatus403 = ApplicationGatewayCustomError_StatusCode_STATUS("HttpStatus403")
	ApplicationGatewayCustomError_StatusCode_STATUS_HttpStatus502 = ApplicationGatewayCustomError_StatusCode_STATUS("HttpStatus502")
)

// Mapping from string to ApplicationGatewayCustomError_StatusCode_STATUS
var applicationGatewayCustomError_StatusCode_STATUS_Values = map[string]ApplicationGatewayCustomError_StatusCode_STATUS{
	"httpstatus403": ApplicationGatewayCustomError_StatusCode_STATUS_HttpStatus403,
	"httpstatus502": ApplicationGatewayCustomError_StatusCode_STATUS_HttpStatus502,
}

// Allows to disable rules within a rule group or an entire rule group.
type ApplicationGatewayFirewallDisabledRuleGroup_STATUS struct {
	// RuleGroupName: The name of the rule group that will be disabled.
	RuleGroupName *string `json:"ruleGroupName,omitempty"`

	// Rules: The list of rules that will be disabled. If null, all rules of the rule group will be disabled.
	Rules []int `json:"rules,omitempty"`
}

// Allow to exclude some variable satisfy the condition for the WAF check.
type ApplicationGatewayFirewallExclusion_STATUS struct {
	// MatchVariable: The variable to be excluded.
	MatchVariable *string `json:"matchVariable,omitempty"`

	// Selector: When matchVariable is a collection, operator used to specify which elements in the collection this exclusion
	// applies to.
	Selector *string `json:"selector,omitempty"`

	// SelectorMatchOperator: When matchVariable is a collection, operate on the selector to specify which elements in the
	// collection this exclusion applies to.
	SelectorMatchOperator *string `json:"selectorMatchOperator,omitempty"`
}

type ApplicationGatewaySku_Name_STATUS string

const (
	ApplicationGatewaySku_Name_STATUS_Standard_Large  = ApplicationGatewaySku_Name_STATUS("Standard_Large")
	ApplicationGatewaySku_Name_STATUS_Standard_Medium = ApplicationGatewaySku_Name_STATUS("Standard_Medium")
	ApplicationGatewaySku_Name_STATUS_Standard_Small  = ApplicationGatewaySku_Name_STATUS("Standard_Small")
	ApplicationGatewaySku_Name_STATUS_Standard_V2     = ApplicationGatewaySku_Name_STATUS("Standard_v2")
	ApplicationGatewaySku_Name_STATUS_WAF_Large       = ApplicationGatewaySku_Name_STATUS("WAF_Large")
	ApplicationGatewaySku_Name_STATUS_WAF_Medium      = ApplicationGatewaySku_Name_STATUS("WAF_Medium")
	ApplicationGatewaySku_Name_STATUS_WAF_V2          = ApplicationGatewaySku_Name_STATUS("WAF_v2")
)

// Mapping from string to ApplicationGatewaySku_Name_STATUS
var applicationGatewaySku_Name_STATUS_Values = map[string]ApplicationGatewaySku_Name_STATUS{
	"standard_large":  ApplicationGatewaySku_Name_STATUS_Standard_Large,
	"standard_medium": ApplicationGatewaySku_Name_STATUS_Standard_Medium,
	"standard_small":  ApplicationGatewaySku_Name_STATUS_Standard_Small,
	"standard_v2":     ApplicationGatewaySku_Name_STATUS_Standard_V2,
	"waf_large":       ApplicationGatewaySku_Name_STATUS_WAF_Large,
	"waf_medium":      ApplicationGatewaySku_Name_STATUS_WAF_Medium,
	"waf_v2":          ApplicationGatewaySku_Name_STATUS_WAF_V2,
}

type ApplicationGatewaySku_Tier_STATUS string

const (
	ApplicationGatewaySku_Tier_STATUS_Standard    = ApplicationGatewaySku_Tier_STATUS("Standard")
	ApplicationGatewaySku_Tier_STATUS_Standard_V2 = ApplicationGatewaySku_Tier_STATUS("Standard_v2")
	ApplicationGatewaySku_Tier_STATUS_WAF         = ApplicationGatewaySku_Tier_STATUS("WAF")
	ApplicationGatewaySku_Tier_STATUS_WAF_V2      = ApplicationGatewaySku_Tier_STATUS("WAF_v2")
)

// Mapping from string to ApplicationGatewaySku_Tier_STATUS
var applicationGatewaySku_Tier_STATUS_Values = map[string]ApplicationGatewaySku_Tier_STATUS{
	"standard":    ApplicationGatewaySku_Tier_STATUS_Standard,
	"standard_v2": ApplicationGatewaySku_Tier_STATUS_Standard_V2,
	"waf":         ApplicationGatewaySku_Tier_STATUS_WAF,
	"waf_v2":      ApplicationGatewaySku_Tier_STATUS_WAF_V2,
}

type ApplicationGatewaySslPolicy_PolicyType_STATUS string

const (
	ApplicationGatewaySslPolicy_PolicyType_STATUS_Custom     = ApplicationGatewaySslPolicy_PolicyType_STATUS("Custom")
	ApplicationGatewaySslPolicy_PolicyType_STATUS_CustomV2   = ApplicationGatewaySslPolicy_PolicyType_STATUS("CustomV2")
	ApplicationGatewaySslPolicy_PolicyType_STATUS_Predefined = ApplicationGatewaySslPolicy_PolicyType_STATUS("Predefined")
)

// Mapping from string to ApplicationGatewaySslPolicy_PolicyType_STATUS
var applicationGatewaySslPolicy_PolicyType_STATUS_Values = map[string]ApplicationGatewaySslPolicy_PolicyType_STATUS{
	"custom":     ApplicationGatewaySslPolicy_PolicyType_STATUS_Custom,
	"customv2":   ApplicationGatewaySslPolicy_PolicyType_STATUS_CustomV2,
	"predefined": ApplicationGatewaySslPolicy_PolicyType_STATUS_Predefined,
}

type ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS string

const (
	ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS_Detection  = ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS("Detection")
	ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS_Prevention = ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS("Prevention")
)

// Mapping from string to ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS
var applicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS_Values = map[string]ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS{
	"detection":  ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS_Detection,
	"prevention": ApplicationGatewayWebApplicationFirewallConfiguration_FirewallMode_STATUS_Prevention,
}

// Ssl cipher suites enums.
type CipherSuitesEnum_STATUS string

const (
	CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA       = CipherSuitesEnum_STATUS("TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_128_CBC_SHA        = CipherSuitesEnum_STATUS("TLS_DHE_DSS_WITH_AES_128_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256     = CipherSuitesEnum_STATUS("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256")
	CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_256_CBC_SHA        = CipherSuitesEnum_STATUS("TLS_DHE_DSS_WITH_AES_256_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256     = CipherSuitesEnum_STATUS("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256")
	CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA        = CipherSuitesEnum_STATUS("TLS_DHE_RSA_WITH_AES_128_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256     = CipherSuitesEnum_STATUS("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256")
	CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA        = CipherSuitesEnum_STATUS("TLS_DHE_RSA_WITH_AES_256_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384     = CipherSuitesEnum_STATUS("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384")
	CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA    = CipherSuitesEnum_STATUS("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = CipherSuitesEnum_STATUS("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256")
	CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = CipherSuitesEnum_STATUS("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256")
	CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA    = CipherSuitesEnum_STATUS("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = CipherSuitesEnum_STATUS("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384")
	CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = CipherSuitesEnum_STATUS("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384")
	CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA      = CipherSuitesEnum_STATUS("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256   = CipherSuitesEnum_STATUS("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256")
	CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256   = CipherSuitesEnum_STATUS("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256")
	CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA      = CipherSuitesEnum_STATUS("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384   = CipherSuitesEnum_STATUS("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384")
	CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384   = CipherSuitesEnum_STATUS("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384")
	CipherSuitesEnum_STATUS_TLS_RSA_WITH_3DES_EDE_CBC_SHA           = CipherSuitesEnum_STATUS("TLS_RSA_WITH_3DES_EDE_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_128_CBC_SHA            = CipherSuitesEnum_STATUS("TLS_RSA_WITH_AES_128_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_128_CBC_SHA256         = CipherSuitesEnum_STATUS("TLS_RSA_WITH_AES_128_CBC_SHA256")
	CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_128_GCM_SHA256         = CipherSuitesEnum_STATUS("TLS_RSA_WITH_AES_128_GCM_SHA256")
	CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_256_CBC_SHA            = CipherSuitesEnum_STATUS("TLS_RSA_WITH_AES_256_CBC_SHA")
	CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_256_CBC_SHA256         = CipherSuitesEnum_STATUS("TLS_RSA_WITH_AES_256_CBC_SHA256")
	CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_256_GCM_SHA384         = CipherSuitesEnum_STATUS("TLS_RSA_WITH_AES_256_GCM_SHA384")
)

// Mapping from string to CipherSuitesEnum_STATUS
var cipherSuitesEnum_STATUS_Values = map[string]CipherSuitesEnum_STATUS{
	"tls_dhe_dss_with_3des_ede_cbc_sha":       CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,
	"tls_dhe_dss_with_aes_128_cbc_sha":        CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
	"tls_dhe_dss_with_aes_128_cbc_sha256":     CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,
	"tls_dhe_dss_with_aes_256_cbc_sha":        CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
	"tls_dhe_dss_with_aes_256_cbc_sha256":     CipherSuitesEnum_STATUS_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,
	"tls_dhe_rsa_with_aes_128_cbc_sha":        CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
	"tls_dhe_rsa_with_aes_128_gcm_sha256":     CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
	"tls_dhe_rsa_with_aes_256_cbc_sha":        CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
	"tls_dhe_rsa_with_aes_256_gcm_sha384":     CipherSuitesEnum_STATUS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
	"tls_ecdhe_ecdsa_with_aes_128_cbc_sha":    CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
	"tls_ecdhe_ecdsa_with_aes_128_cbc_sha256": CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
	"tls_ecdhe_ecdsa_with_aes_128_gcm_sha256": CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
	"tls_ecdhe_ecdsa_with_aes_256_cbc_sha":    CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
	"tls_ecdhe_ecdsa_with_aes_256_cbc_sha384": CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
	"tls_ecdhe_ecdsa_with_aes_256_gcm_sha384": CipherSuitesEnum_STATUS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
	"tls_ecdhe_rsa_with_aes_128_cbc_sha":      CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
	"tls_ecdhe_rsa_with_aes_128_cbc_sha256":   CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
	"tls_ecdhe_rsa_with_aes_128_gcm_sha256":   CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
	"tls_ecdhe_rsa_with_aes_256_cbc_sha":      CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
	"tls_ecdhe_rsa_with_aes_256_cbc_sha384":   CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
	"tls_ecdhe_rsa_with_aes_256_gcm_sha384":   CipherSuitesEnum_STATUS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
	"tls_rsa_with_3des_ede_cbc_sha":           CipherSuitesEnum_STATUS_TLS_RSA_WITH_3DES_EDE_CBC_SHA,
	"tls_rsa_with_aes_128_cbc_sha":            CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_128_CBC_SHA,
	"tls_rsa_with_aes_128_cbc_sha256":         CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_128_CBC_SHA256,
	"tls_rsa_with_aes_128_gcm_sha256":         CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_128_GCM_SHA256,
	"tls_rsa_with_aes_256_cbc_sha":            CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_256_CBC_SHA,
	"tls_rsa_with_aes_256_cbc_sha256":         CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_256_CBC_SHA256,
	"tls_rsa_with_aes_256_gcm_sha384":         CipherSuitesEnum_STATUS_TLS_RSA_WITH_AES_256_GCM_SHA384,
}

// Ssl predefined policy name enums.
type PolicyNameEnum_STATUS string

const (
	PolicyNameEnum_STATUS_AppGwSslPolicy20150501  = PolicyNameEnum_STATUS("AppGwSslPolicy20150501")
	PolicyNameEnum_STATUS_AppGwSslPolicy20170401  = PolicyNameEnum_STATUS("AppGwSslPolicy20170401")
	PolicyNameEnum_STATUS_AppGwSslPolicy20170401S = PolicyNameEnum_STATUS("AppGwSslPolicy20170401S")
	PolicyNameEnum_STATUS_AppGwSslPolicy20220101  = PolicyNameEnum_STATUS("AppGwSslPolicy20220101")
	PolicyNameEnum_STATUS_AppGwSslPolicy20220101S = PolicyNameEnum_STATUS("AppGwSslPolicy20220101S")
)

// Mapping from string to PolicyNameEnum_STATUS
var policyNameEnum_STATUS_Values = map[string]PolicyNameEnum_STATUS{
	"appgwsslpolicy20150501":  PolicyNameEnum_STATUS_AppGwSslPolicy20150501,
	"appgwsslpolicy20170401":  PolicyNameEnum_STATUS_AppGwSslPolicy20170401,
	"appgwsslpolicy20170401s": PolicyNameEnum_STATUS_AppGwSslPolicy20170401S,
	"appgwsslpolicy20220101":  PolicyNameEnum_STATUS_AppGwSslPolicy20220101,
	"appgwsslpolicy20220101s": PolicyNameEnum_STATUS_AppGwSslPolicy20220101S,
}

// Ssl protocol enums.
type ProtocolsEnum_STATUS string

const (
	ProtocolsEnum_STATUS_TLSv1_0 = ProtocolsEnum_STATUS("TLSv1_0")
	ProtocolsEnum_STATUS_TLSv1_1 = ProtocolsEnum_STATUS("TLSv1_1")
	ProtocolsEnum_STATUS_TLSv1_2 = ProtocolsEnum_STATUS("TLSv1_2")
	ProtocolsEnum_STATUS_TLSv1_3 = ProtocolsEnum_STATUS("TLSv1_3")
)

// Mapping from string to ProtocolsEnum_STATUS
var protocolsEnum_STATUS_Values = map[string]ProtocolsEnum_STATUS{
	"tlsv1_0": ProtocolsEnum_STATUS_TLSv1_0,
	"tlsv1_1": ProtocolsEnum_STATUS_TLSv1_1,
	"tlsv1_2": ProtocolsEnum_STATUS_TLSv1_2,
	"tlsv1_3": ProtocolsEnum_STATUS_TLSv1_3,
}
