// 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) Go Code Generator. DO NOT EDIT.

package armcdn

// AFDEndpointProtocols - Supported protocols for the customer's endpoint.
type AFDEndpointProtocols string

const (
	AFDEndpointProtocolsHTTP  AFDEndpointProtocols = "Http"
	AFDEndpointProtocolsHTTPS AFDEndpointProtocols = "Https"
)

// PossibleAFDEndpointProtocolsValues returns the possible values for the AFDEndpointProtocols const type.
func PossibleAFDEndpointProtocolsValues() []AFDEndpointProtocols {
	return []AFDEndpointProtocols{
		AFDEndpointProtocolsHTTP,
		AFDEndpointProtocolsHTTPS,
	}
}

// ActionType - Defines the action to take on rule match.
type ActionType string

const (
	ActionTypeAllow    ActionType = "Allow"
	ActionTypeBlock    ActionType = "Block"
	ActionTypeLog      ActionType = "Log"
	ActionTypeRedirect ActionType = "Redirect"
)

// PossibleActionTypeValues returns the possible values for the ActionType const type.
func PossibleActionTypeValues() []ActionType {
	return []ActionType{
		ActionTypeAllow,
		ActionTypeBlock,
		ActionTypeLog,
		ActionTypeRedirect,
	}
}

// AfdCertificateType - Defines the source of the SSL certificate.
type AfdCertificateType string

const (
	AfdCertificateTypeAzureFirstPartyManagedCertificate AfdCertificateType = "AzureFirstPartyManagedCertificate"
	AfdCertificateTypeCustomerCertificate               AfdCertificateType = "CustomerCertificate"
	AfdCertificateTypeManagedCertificate                AfdCertificateType = "ManagedCertificate"
)

// PossibleAfdCertificateTypeValues returns the possible values for the AfdCertificateType const type.
func PossibleAfdCertificateTypeValues() []AfdCertificateType {
	return []AfdCertificateType{
		AfdCertificateTypeAzureFirstPartyManagedCertificate,
		AfdCertificateTypeCustomerCertificate,
		AfdCertificateTypeManagedCertificate,
	}
}

// AfdCipherSuiteSetType - cipher suite set type that will be used for Https
type AfdCipherSuiteSetType string

const (
	AfdCipherSuiteSetTypeCustomized AfdCipherSuiteSetType = "Customized"
	AfdCipherSuiteSetTypeTLS102019  AfdCipherSuiteSetType = "TLS10_2019"
	AfdCipherSuiteSetTypeTLS122022  AfdCipherSuiteSetType = "TLS12_2022"
	AfdCipherSuiteSetTypeTLS122023  AfdCipherSuiteSetType = "TLS12_2023"
)

// PossibleAfdCipherSuiteSetTypeValues returns the possible values for the AfdCipherSuiteSetType const type.
func PossibleAfdCipherSuiteSetTypeValues() []AfdCipherSuiteSetType {
	return []AfdCipherSuiteSetType{
		AfdCipherSuiteSetTypeCustomized,
		AfdCipherSuiteSetTypeTLS102019,
		AfdCipherSuiteSetTypeTLS122022,
		AfdCipherSuiteSetTypeTLS122023,
	}
}

type AfdCustomizedCipherSuiteForTls12 string

const (
	AfdCustomizedCipherSuiteForTls12DHERSAAES128GCMSHA256   AfdCustomizedCipherSuiteForTls12 = "DHE_RSA_AES128_GCM_SHA256"
	AfdCustomizedCipherSuiteForTls12DHERSAAES256GCMSHA384   AfdCustomizedCipherSuiteForTls12 = "DHE_RSA_AES256_GCM_SHA384"
	AfdCustomizedCipherSuiteForTls12ECDHERSAAES128GCMSHA256 AfdCustomizedCipherSuiteForTls12 = "ECDHE_RSA_AES128_GCM_SHA256"
	AfdCustomizedCipherSuiteForTls12ECDHERSAAES128SHA256    AfdCustomizedCipherSuiteForTls12 = "ECDHE_RSA_AES128_SHA256"
	AfdCustomizedCipherSuiteForTls12ECDHERSAAES256GCMSHA384 AfdCustomizedCipherSuiteForTls12 = "ECDHE_RSA_AES256_GCM_SHA384"
	AfdCustomizedCipherSuiteForTls12ECDHERSAAES256SHA384    AfdCustomizedCipherSuiteForTls12 = "ECDHE_RSA_AES256_SHA384"
)

// PossibleAfdCustomizedCipherSuiteForTls12Values returns the possible values for the AfdCustomizedCipherSuiteForTls12 const type.
func PossibleAfdCustomizedCipherSuiteForTls12Values() []AfdCustomizedCipherSuiteForTls12 {
	return []AfdCustomizedCipherSuiteForTls12{
		AfdCustomizedCipherSuiteForTls12DHERSAAES128GCMSHA256,
		AfdCustomizedCipherSuiteForTls12DHERSAAES256GCMSHA384,
		AfdCustomizedCipherSuiteForTls12ECDHERSAAES128GCMSHA256,
		AfdCustomizedCipherSuiteForTls12ECDHERSAAES128SHA256,
		AfdCustomizedCipherSuiteForTls12ECDHERSAAES256GCMSHA384,
		AfdCustomizedCipherSuiteForTls12ECDHERSAAES256SHA384,
	}
}

type AfdCustomizedCipherSuiteForTls13 string

const (
	AfdCustomizedCipherSuiteForTls13TLSAES128GCMSHA256 AfdCustomizedCipherSuiteForTls13 = "TLS_AES_128_GCM_SHA256"
	AfdCustomizedCipherSuiteForTls13TLSAES256GCMSHA384 AfdCustomizedCipherSuiteForTls13 = "TLS_AES_256_GCM_SHA384"
)

// PossibleAfdCustomizedCipherSuiteForTls13Values returns the possible values for the AfdCustomizedCipherSuiteForTls13 const type.
func PossibleAfdCustomizedCipherSuiteForTls13Values() []AfdCustomizedCipherSuiteForTls13 {
	return []AfdCustomizedCipherSuiteForTls13{
		AfdCustomizedCipherSuiteForTls13TLSAES128GCMSHA256,
		AfdCustomizedCipherSuiteForTls13TLSAES256GCMSHA384,
	}
}

// AfdMinimumTLSVersion - TLS protocol version that will be used for Https when cipherSuiteSetType is Customized.
type AfdMinimumTLSVersion string

const (
	AfdMinimumTLSVersionTLS10 AfdMinimumTLSVersion = "TLS10"
	AfdMinimumTLSVersionTLS12 AfdMinimumTLSVersion = "TLS12"
	AfdMinimumTLSVersionTLS13 AfdMinimumTLSVersion = "TLS13"
)

// PossibleAfdMinimumTLSVersionValues returns the possible values for the AfdMinimumTLSVersion const type.
func PossibleAfdMinimumTLSVersionValues() []AfdMinimumTLSVersion {
	return []AfdMinimumTLSVersion{
		AfdMinimumTLSVersionTLS10,
		AfdMinimumTLSVersionTLS12,
		AfdMinimumTLSVersionTLS13,
	}
}

// AfdProvisioningState - Provisioning status
type AfdProvisioningState string

const (
	AfdProvisioningStateCreating  AfdProvisioningState = "Creating"
	AfdProvisioningStateDeleting  AfdProvisioningState = "Deleting"
	AfdProvisioningStateFailed    AfdProvisioningState = "Failed"
	AfdProvisioningStateSucceeded AfdProvisioningState = "Succeeded"
	AfdProvisioningStateUpdating  AfdProvisioningState = "Updating"
)

// PossibleAfdProvisioningStateValues returns the possible values for the AfdProvisioningState const type.
func PossibleAfdProvisioningStateValues() []AfdProvisioningState {
	return []AfdProvisioningState{
		AfdProvisioningStateCreating,
		AfdProvisioningStateDeleting,
		AfdProvisioningStateFailed,
		AfdProvisioningStateSucceeded,
		AfdProvisioningStateUpdating,
	}
}

// AfdQueryStringCachingBehavior - Defines how Frontdoor caches requests that include query strings. You can ignore any query
// strings when caching, ignore specific query strings, cache every request with a unique URL, or cache specific query strings.
type AfdQueryStringCachingBehavior string

const (
	AfdQueryStringCachingBehaviorIgnoreQueryString            AfdQueryStringCachingBehavior = "IgnoreQueryString"
	AfdQueryStringCachingBehaviorIgnoreSpecifiedQueryStrings  AfdQueryStringCachingBehavior = "IgnoreSpecifiedQueryStrings"
	AfdQueryStringCachingBehaviorIncludeSpecifiedQueryStrings AfdQueryStringCachingBehavior = "IncludeSpecifiedQueryStrings"
	AfdQueryStringCachingBehaviorUseQueryString               AfdQueryStringCachingBehavior = "UseQueryString"
)

// PossibleAfdQueryStringCachingBehaviorValues returns the possible values for the AfdQueryStringCachingBehavior const type.
func PossibleAfdQueryStringCachingBehaviorValues() []AfdQueryStringCachingBehavior {
	return []AfdQueryStringCachingBehavior{
		AfdQueryStringCachingBehaviorIgnoreQueryString,
		AfdQueryStringCachingBehaviorIgnoreSpecifiedQueryStrings,
		AfdQueryStringCachingBehaviorIncludeSpecifiedQueryStrings,
		AfdQueryStringCachingBehaviorUseQueryString,
	}
}

// Algorithm - Algorithm to use for URL signing
type Algorithm string

const (
	AlgorithmSHA256 Algorithm = "SHA256"
)

// PossibleAlgorithmValues returns the possible values for the Algorithm const type.
func PossibleAlgorithmValues() []Algorithm {
	return []Algorithm{
		AlgorithmSHA256,
	}
}

// AutoGeneratedDomainNameLabelScope - Indicates the endpoint name reuse scope. The default value is TenantReuse.
type AutoGeneratedDomainNameLabelScope string

const (
	AutoGeneratedDomainNameLabelScopeNoReuse            AutoGeneratedDomainNameLabelScope = "NoReuse"
	AutoGeneratedDomainNameLabelScopeResourceGroupReuse AutoGeneratedDomainNameLabelScope = "ResourceGroupReuse"
	AutoGeneratedDomainNameLabelScopeSubscriptionReuse  AutoGeneratedDomainNameLabelScope = "SubscriptionReuse"
	AutoGeneratedDomainNameLabelScopeTenantReuse        AutoGeneratedDomainNameLabelScope = "TenantReuse"
)

// PossibleAutoGeneratedDomainNameLabelScopeValues returns the possible values for the AutoGeneratedDomainNameLabelScope const type.
func PossibleAutoGeneratedDomainNameLabelScopeValues() []AutoGeneratedDomainNameLabelScope {
	return []AutoGeneratedDomainNameLabelScope{
		AutoGeneratedDomainNameLabelScopeNoReuse,
		AutoGeneratedDomainNameLabelScopeResourceGroupReuse,
		AutoGeneratedDomainNameLabelScopeSubscriptionReuse,
		AutoGeneratedDomainNameLabelScopeTenantReuse,
	}
}

// CacheBehavior - Caching behavior for the requests
type CacheBehavior string

const (
	CacheBehaviorBypassCache  CacheBehavior = "BypassCache"
	CacheBehaviorOverride     CacheBehavior = "Override"
	CacheBehaviorSetIfMissing CacheBehavior = "SetIfMissing"
)

// PossibleCacheBehaviorValues returns the possible values for the CacheBehavior const type.
func PossibleCacheBehaviorValues() []CacheBehavior {
	return []CacheBehavior{
		CacheBehaviorBypassCache,
		CacheBehaviorOverride,
		CacheBehaviorSetIfMissing,
	}
}

// CacheType - The level at which the content needs to be cached.
type CacheType string

const (
	CacheTypeAll CacheType = "All"
)

// PossibleCacheTypeValues returns the possible values for the CacheType const type.
func PossibleCacheTypeValues() []CacheType {
	return []CacheType{
		CacheTypeAll,
	}
}

// CanMigrateDefaultSKU - Recommended sku for the migration
type CanMigrateDefaultSKU string

const (
	CanMigrateDefaultSKUPremiumAzureFrontDoor  CanMigrateDefaultSKU = "Premium_AzureFrontDoor"
	CanMigrateDefaultSKUStandardAzureFrontDoor CanMigrateDefaultSKU = "Standard_AzureFrontDoor"
)

// PossibleCanMigrateDefaultSKUValues returns the possible values for the CanMigrateDefaultSKU const type.
func PossibleCanMigrateDefaultSKUValues() []CanMigrateDefaultSKU {
	return []CanMigrateDefaultSKU{
		CanMigrateDefaultSKUPremiumAzureFrontDoor,
		CanMigrateDefaultSKUStandardAzureFrontDoor,
	}
}

// CertificateSource - Defines the source of the SSL certificate.
type CertificateSource string

const (
	CertificateSourceAzureKeyVault CertificateSource = "AzureKeyVault"
	CertificateSourceCdn           CertificateSource = "Cdn"
)

// PossibleCertificateSourceValues returns the possible values for the CertificateSource const type.
func PossibleCertificateSourceValues() []CertificateSource {
	return []CertificateSource{
		CertificateSourceAzureKeyVault,
		CertificateSourceCdn,
	}
}

type CertificateSourceParametersType string

const (
	CertificateSourceParametersTypeCdnCertificateSourceParameters      CertificateSourceParametersType = "CdnCertificateSourceParameters"
	CertificateSourceParametersTypeKeyVaultCertificateSourceParameters CertificateSourceParametersType = "KeyVaultCertificateSourceParameters"
)

// PossibleCertificateSourceParametersTypeValues returns the possible values for the CertificateSourceParametersType const type.
func PossibleCertificateSourceParametersTypeValues() []CertificateSourceParametersType {
	return []CertificateSourceParametersType{
		CertificateSourceParametersTypeCdnCertificateSourceParameters,
		CertificateSourceParametersTypeKeyVaultCertificateSourceParameters,
	}
}

// CertificateType - Type of certificate used
type CertificateType string

const (
	CertificateTypeDedicated CertificateType = "Dedicated"
	CertificateTypeShared    CertificateType = "Shared"
)

// PossibleCertificateTypeValues returns the possible values for the CertificateType const type.
func PossibleCertificateTypeValues() []CertificateType {
	return []CertificateType{
		CertificateTypeDedicated,
		CertificateTypeShared,
	}
}

// ClientPortOperator - Describes operator to be matched
type ClientPortOperator string

const (
	ClientPortOperatorAny                ClientPortOperator = "Any"
	ClientPortOperatorBeginsWith         ClientPortOperator = "BeginsWith"
	ClientPortOperatorContains           ClientPortOperator = "Contains"
	ClientPortOperatorEndsWith           ClientPortOperator = "EndsWith"
	ClientPortOperatorEqual              ClientPortOperator = "Equal"
	ClientPortOperatorGreaterThan        ClientPortOperator = "GreaterThan"
	ClientPortOperatorGreaterThanOrEqual ClientPortOperator = "GreaterThanOrEqual"
	ClientPortOperatorLessThan           ClientPortOperator = "LessThan"
	ClientPortOperatorLessThanOrEqual    ClientPortOperator = "LessThanOrEqual"
	ClientPortOperatorRegEx              ClientPortOperator = "RegEx"
)

// PossibleClientPortOperatorValues returns the possible values for the ClientPortOperator const type.
func PossibleClientPortOperatorValues() []ClientPortOperator {
	return []ClientPortOperator{
		ClientPortOperatorAny,
		ClientPortOperatorBeginsWith,
		ClientPortOperatorContains,
		ClientPortOperatorEndsWith,
		ClientPortOperatorEqual,
		ClientPortOperatorGreaterThan,
		ClientPortOperatorGreaterThanOrEqual,
		ClientPortOperatorLessThan,
		ClientPortOperatorLessThanOrEqual,
		ClientPortOperatorRegEx,
	}
}

// CookiesOperator - Describes operator to be matched
type CookiesOperator string

const (
	CookiesOperatorAny                CookiesOperator = "Any"
	CookiesOperatorBeginsWith         CookiesOperator = "BeginsWith"
	CookiesOperatorContains           CookiesOperator = "Contains"
	CookiesOperatorEndsWith           CookiesOperator = "EndsWith"
	CookiesOperatorEqual              CookiesOperator = "Equal"
	CookiesOperatorGreaterThan        CookiesOperator = "GreaterThan"
	CookiesOperatorGreaterThanOrEqual CookiesOperator = "GreaterThanOrEqual"
	CookiesOperatorLessThan           CookiesOperator = "LessThan"
	CookiesOperatorLessThanOrEqual    CookiesOperator = "LessThanOrEqual"
	CookiesOperatorRegEx              CookiesOperator = "RegEx"
)

// PossibleCookiesOperatorValues returns the possible values for the CookiesOperator const type.
func PossibleCookiesOperatorValues() []CookiesOperator {
	return []CookiesOperator{
		CookiesOperatorAny,
		CookiesOperatorBeginsWith,
		CookiesOperatorContains,
		CookiesOperatorEndsWith,
		CookiesOperatorEqual,
		CookiesOperatorGreaterThan,
		CookiesOperatorGreaterThanOrEqual,
		CookiesOperatorLessThan,
		CookiesOperatorLessThanOrEqual,
		CookiesOperatorRegEx,
	}
}

// CreatedByType - The kind of entity that created the resource.
type CreatedByType string

const (
	// CreatedByTypeApplication - The entity was created by an application.
	CreatedByTypeApplication CreatedByType = "Application"
	// CreatedByTypeKey - The entity was created by a key.
	CreatedByTypeKey CreatedByType = "Key"
	// CreatedByTypeManagedIdentity - The entity was created by a managed identity.
	CreatedByTypeManagedIdentity CreatedByType = "ManagedIdentity"
	// CreatedByTypeUser - The entity was created by a user.
	CreatedByTypeUser CreatedByType = "User"
)

// PossibleCreatedByTypeValues returns the possible values for the CreatedByType const type.
func PossibleCreatedByTypeValues() []CreatedByType {
	return []CreatedByType{
		CreatedByTypeApplication,
		CreatedByTypeKey,
		CreatedByTypeManagedIdentity,
		CreatedByTypeUser,
	}
}

// CustomDomainResourceState - Resource status of the custom domain.
type CustomDomainResourceState string

const (
	CustomDomainResourceStateActive   CustomDomainResourceState = "Active"
	CustomDomainResourceStateCreating CustomDomainResourceState = "Creating"
	CustomDomainResourceStateDeleting CustomDomainResourceState = "Deleting"
)

// PossibleCustomDomainResourceStateValues returns the possible values for the CustomDomainResourceState const type.
func PossibleCustomDomainResourceStateValues() []CustomDomainResourceState {
	return []CustomDomainResourceState{
		CustomDomainResourceStateActive,
		CustomDomainResourceStateCreating,
		CustomDomainResourceStateDeleting,
	}
}

// CustomHTTPSProvisioningState - Provisioning status of the custom domain.
type CustomHTTPSProvisioningState string

const (
	CustomHTTPSProvisioningStateDisabled  CustomHTTPSProvisioningState = "Disabled"
	CustomHTTPSProvisioningStateDisabling CustomHTTPSProvisioningState = "Disabling"
	CustomHTTPSProvisioningStateEnabled   CustomHTTPSProvisioningState = "Enabled"
	CustomHTTPSProvisioningStateEnabling  CustomHTTPSProvisioningState = "Enabling"
	CustomHTTPSProvisioningStateFailed    CustomHTTPSProvisioningState = "Failed"
)

// PossibleCustomHTTPSProvisioningStateValues returns the possible values for the CustomHTTPSProvisioningState const type.
func PossibleCustomHTTPSProvisioningStateValues() []CustomHTTPSProvisioningState {
	return []CustomHTTPSProvisioningState{
		CustomHTTPSProvisioningStateDisabled,
		CustomHTTPSProvisioningStateDisabling,
		CustomHTTPSProvisioningStateEnabled,
		CustomHTTPSProvisioningStateEnabling,
		CustomHTTPSProvisioningStateFailed,
	}
}

// CustomHTTPSProvisioningSubstate - Provisioning substate shows the progress of custom HTTPS enabling/disabling process step
// by step.
type CustomHTTPSProvisioningSubstate string

const (
	CustomHTTPSProvisioningSubstateCertificateDeleted                            CustomHTTPSProvisioningSubstate = "CertificateDeleted"
	CustomHTTPSProvisioningSubstateCertificateDeployed                           CustomHTTPSProvisioningSubstate = "CertificateDeployed"
	CustomHTTPSProvisioningSubstateDeletingCertificate                           CustomHTTPSProvisioningSubstate = "DeletingCertificate"
	CustomHTTPSProvisioningSubstateDeployingCertificate                          CustomHTTPSProvisioningSubstate = "DeployingCertificate"
	CustomHTTPSProvisioningSubstateDomainControlValidationRequestApproved        CustomHTTPSProvisioningSubstate = "DomainControlValidationRequestApproved"
	CustomHTTPSProvisioningSubstateDomainControlValidationRequestRejected        CustomHTTPSProvisioningSubstate = "DomainControlValidationRequestRejected"
	CustomHTTPSProvisioningSubstateDomainControlValidationRequestTimedOut        CustomHTTPSProvisioningSubstate = "DomainControlValidationRequestTimedOut"
	CustomHTTPSProvisioningSubstateIssuingCertificate                            CustomHTTPSProvisioningSubstate = "IssuingCertificate"
	CustomHTTPSProvisioningSubstatePendingDomainControlValidationREquestApproval CustomHTTPSProvisioningSubstate = "PendingDomainControlValidationREquestApproval"
	CustomHTTPSProvisioningSubstateSubmittingDomainControlValidationRequest      CustomHTTPSProvisioningSubstate = "SubmittingDomainControlValidationRequest"
)

// PossibleCustomHTTPSProvisioningSubstateValues returns the possible values for the CustomHTTPSProvisioningSubstate const type.
func PossibleCustomHTTPSProvisioningSubstateValues() []CustomHTTPSProvisioningSubstate {
	return []CustomHTTPSProvisioningSubstate{
		CustomHTTPSProvisioningSubstateCertificateDeleted,
		CustomHTTPSProvisioningSubstateCertificateDeployed,
		CustomHTTPSProvisioningSubstateDeletingCertificate,
		CustomHTTPSProvisioningSubstateDeployingCertificate,
		CustomHTTPSProvisioningSubstateDomainControlValidationRequestApproved,
		CustomHTTPSProvisioningSubstateDomainControlValidationRequestRejected,
		CustomHTTPSProvisioningSubstateDomainControlValidationRequestTimedOut,
		CustomHTTPSProvisioningSubstateIssuingCertificate,
		CustomHTTPSProvisioningSubstatePendingDomainControlValidationREquestApproval,
		CustomHTTPSProvisioningSubstateSubmittingDomainControlValidationRequest,
	}
}

// CustomRuleEnabledState - Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified.
type CustomRuleEnabledState string

const (
	CustomRuleEnabledStateDisabled CustomRuleEnabledState = "Disabled"
	CustomRuleEnabledStateEnabled  CustomRuleEnabledState = "Enabled"
)

// PossibleCustomRuleEnabledStateValues returns the possible values for the CustomRuleEnabledState const type.
func PossibleCustomRuleEnabledStateValues() []CustomRuleEnabledState {
	return []CustomRuleEnabledState{
		CustomRuleEnabledStateDisabled,
		CustomRuleEnabledStateEnabled,
	}
}

// DeleteRule - Describes the action that shall be taken when the certificate is removed from Key Vault.
type DeleteRule string

const (
	DeleteRuleNoAction DeleteRule = "NoAction"
)

// PossibleDeleteRuleValues returns the possible values for the DeleteRule const type.
func PossibleDeleteRuleValues() []DeleteRule {
	return []DeleteRule{
		DeleteRuleNoAction,
	}
}

// DeliveryRuleActionName - The name of the action for the delivery rule.
type DeliveryRuleActionName string

const (
	DeliveryRuleActionNameCacheExpiration            DeliveryRuleActionName = "CacheExpiration"
	DeliveryRuleActionNameCacheKeyQueryString        DeliveryRuleActionName = "CacheKeyQueryString"
	DeliveryRuleActionNameModifyRequestHeader        DeliveryRuleActionName = "ModifyRequestHeader"
	DeliveryRuleActionNameModifyResponseHeader       DeliveryRuleActionName = "ModifyResponseHeader"
	DeliveryRuleActionNameOriginGroupOverride        DeliveryRuleActionName = "OriginGroupOverride"
	DeliveryRuleActionNameRouteConfigurationOverride DeliveryRuleActionName = "RouteConfigurationOverride"
	DeliveryRuleActionNameURLRedirect                DeliveryRuleActionName = "UrlRedirect"
	DeliveryRuleActionNameURLRewrite                 DeliveryRuleActionName = "UrlRewrite"
	DeliveryRuleActionNameURLSigning                 DeliveryRuleActionName = "UrlSigning"
)

// PossibleDeliveryRuleActionNameValues returns the possible values for the DeliveryRuleActionName const type.
func PossibleDeliveryRuleActionNameValues() []DeliveryRuleActionName {
	return []DeliveryRuleActionName{
		DeliveryRuleActionNameCacheExpiration,
		DeliveryRuleActionNameCacheKeyQueryString,
		DeliveryRuleActionNameModifyRequestHeader,
		DeliveryRuleActionNameModifyResponseHeader,
		DeliveryRuleActionNameOriginGroupOverride,
		DeliveryRuleActionNameRouteConfigurationOverride,
		DeliveryRuleActionNameURLRedirect,
		DeliveryRuleActionNameURLRewrite,
		DeliveryRuleActionNameURLSigning,
	}
}

type DeliveryRuleActionParametersType string

const (
	DeliveryRuleActionParametersTypeDeliveryRuleCacheExpirationActionParameters             DeliveryRuleActionParametersType = "DeliveryRuleCacheExpirationActionParameters"
	DeliveryRuleActionParametersTypeDeliveryRuleCacheKeyQueryStringBehaviorActionParameters DeliveryRuleActionParametersType = "DeliveryRuleCacheKeyQueryStringBehaviorActionParameters"
	DeliveryRuleActionParametersTypeDeliveryRuleHeaderActionParameters                      DeliveryRuleActionParametersType = "DeliveryRuleHeaderActionParameters"
	DeliveryRuleActionParametersTypeDeliveryRuleOriginGroupOverrideActionParameters         DeliveryRuleActionParametersType = "DeliveryRuleOriginGroupOverrideActionParameters"
	DeliveryRuleActionParametersTypeDeliveryRuleRouteConfigurationOverrideActionParameters  DeliveryRuleActionParametersType = "DeliveryRuleRouteConfigurationOverrideActionParameters"
	DeliveryRuleActionParametersTypeDeliveryRuleURLRedirectActionParameters                 DeliveryRuleActionParametersType = "DeliveryRuleUrlRedirectActionParameters"
	DeliveryRuleActionParametersTypeDeliveryRuleURLRewriteActionParameters                  DeliveryRuleActionParametersType = "DeliveryRuleUrlRewriteActionParameters"
	DeliveryRuleActionParametersTypeDeliveryRuleURLSigningActionParameters                  DeliveryRuleActionParametersType = "DeliveryRuleUrlSigningActionParameters"
)

// PossibleDeliveryRuleActionParametersTypeValues returns the possible values for the DeliveryRuleActionParametersType const type.
func PossibleDeliveryRuleActionParametersTypeValues() []DeliveryRuleActionParametersType {
	return []DeliveryRuleActionParametersType{
		DeliveryRuleActionParametersTypeDeliveryRuleCacheExpirationActionParameters,
		DeliveryRuleActionParametersTypeDeliveryRuleCacheKeyQueryStringBehaviorActionParameters,
		DeliveryRuleActionParametersTypeDeliveryRuleHeaderActionParameters,
		DeliveryRuleActionParametersTypeDeliveryRuleOriginGroupOverrideActionParameters,
		DeliveryRuleActionParametersTypeDeliveryRuleRouteConfigurationOverrideActionParameters,
		DeliveryRuleActionParametersTypeDeliveryRuleURLRedirectActionParameters,
		DeliveryRuleActionParametersTypeDeliveryRuleURLRewriteActionParameters,
		DeliveryRuleActionParametersTypeDeliveryRuleURLSigningActionParameters,
	}
}

type DeliveryRuleConditionParametersType string

const (
	DeliveryRuleConditionParametersTypeDeliveryRuleClientPortConditionParameters            DeliveryRuleConditionParametersType = "DeliveryRuleClientPortConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleCookiesConditionParameters               DeliveryRuleConditionParametersType = "DeliveryRuleCookiesConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleHTTPVersionConditionParameters           DeliveryRuleConditionParametersType = "DeliveryRuleHttpVersionConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleHostNameConditionParameters              DeliveryRuleConditionParametersType = "DeliveryRuleHostNameConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleIsDeviceConditionParameters              DeliveryRuleConditionParametersType = "DeliveryRuleIsDeviceConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRulePostArgsConditionParameters              DeliveryRuleConditionParametersType = "DeliveryRulePostArgsConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleQueryStringConditionParameters           DeliveryRuleConditionParametersType = "DeliveryRuleQueryStringConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleRemoteAddressConditionParameters         DeliveryRuleConditionParametersType = "DeliveryRuleRemoteAddressConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleRequestBodyConditionParameters           DeliveryRuleConditionParametersType = "DeliveryRuleRequestBodyConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleRequestHeaderConditionParameters         DeliveryRuleConditionParametersType = "DeliveryRuleRequestHeaderConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleRequestMethodConditionParameters         DeliveryRuleConditionParametersType = "DeliveryRuleRequestMethodConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleRequestSchemeConditionParameters         DeliveryRuleConditionParametersType = "DeliveryRuleRequestSchemeConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleRequestURIConditionParameters            DeliveryRuleConditionParametersType = "DeliveryRuleRequestUriConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleSSLProtocolConditionParameters           DeliveryRuleConditionParametersType = "DeliveryRuleSslProtocolConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleServerPortConditionParameters            DeliveryRuleConditionParametersType = "DeliveryRuleServerPortConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleSocketAddrConditionParameters            DeliveryRuleConditionParametersType = "DeliveryRuleSocketAddrConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleURLFileExtensionMatchConditionParameters DeliveryRuleConditionParametersType = "DeliveryRuleUrlFileExtensionMatchConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleURLFilenameConditionParameters           DeliveryRuleConditionParametersType = "DeliveryRuleUrlFilenameConditionParameters"
	DeliveryRuleConditionParametersTypeDeliveryRuleURLPathMatchConditionParameters          DeliveryRuleConditionParametersType = "DeliveryRuleUrlPathMatchConditionParameters"
)

// PossibleDeliveryRuleConditionParametersTypeValues returns the possible values for the DeliveryRuleConditionParametersType const type.
func PossibleDeliveryRuleConditionParametersTypeValues() []DeliveryRuleConditionParametersType {
	return []DeliveryRuleConditionParametersType{
		DeliveryRuleConditionParametersTypeDeliveryRuleClientPortConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleCookiesConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleHTTPVersionConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleHostNameConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleIsDeviceConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRulePostArgsConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleQueryStringConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleRemoteAddressConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleRequestBodyConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleRequestHeaderConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleRequestMethodConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleRequestSchemeConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleRequestURIConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleSSLProtocolConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleServerPortConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleSocketAddrConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleURLFileExtensionMatchConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleURLFilenameConditionParameters,
		DeliveryRuleConditionParametersTypeDeliveryRuleURLPathMatchConditionParameters,
	}
}

type DeploymentStatus string

const (
	DeploymentStatusFailed     DeploymentStatus = "Failed"
	DeploymentStatusInProgress DeploymentStatus = "InProgress"
	DeploymentStatusNotStarted DeploymentStatus = "NotStarted"
	DeploymentStatusSucceeded  DeploymentStatus = "Succeeded"
)

// PossibleDeploymentStatusValues returns the possible values for the DeploymentStatus const type.
func PossibleDeploymentStatusValues() []DeploymentStatus {
	return []DeploymentStatus{
		DeploymentStatusFailed,
		DeploymentStatusInProgress,
		DeploymentStatusNotStarted,
		DeploymentStatusSucceeded,
	}
}

// DestinationProtocol - Protocol to use for the redirect. The default value is MatchRequest
type DestinationProtocol string

const (
	DestinationProtocolHTTP         DestinationProtocol = "Http"
	DestinationProtocolHTTPS        DestinationProtocol = "Https"
	DestinationProtocolMatchRequest DestinationProtocol = "MatchRequest"
)

// PossibleDestinationProtocolValues returns the possible values for the DestinationProtocol const type.
func PossibleDestinationProtocolValues() []DestinationProtocol {
	return []DestinationProtocol{
		DestinationProtocolHTTP,
		DestinationProtocolHTTPS,
		DestinationProtocolMatchRequest,
	}
}

// DomainValidationState - Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by step.
// DCV stands for DomainControlValidation.
type DomainValidationState string

const (
	DomainValidationStateApproved                  DomainValidationState = "Approved"
	DomainValidationStateInternalError             DomainValidationState = "InternalError"
	DomainValidationStatePending                   DomainValidationState = "Pending"
	DomainValidationStatePendingRevalidation       DomainValidationState = "PendingRevalidation"
	DomainValidationStateRefreshingValidationToken DomainValidationState = "RefreshingValidationToken"
	DomainValidationStateRejected                  DomainValidationState = "Rejected"
	DomainValidationStateSubmitting                DomainValidationState = "Submitting"
	DomainValidationStateTimedOut                  DomainValidationState = "TimedOut"
	DomainValidationStateUnknown                   DomainValidationState = "Unknown"
)

// PossibleDomainValidationStateValues returns the possible values for the DomainValidationState const type.
func PossibleDomainValidationStateValues() []DomainValidationState {
	return []DomainValidationState{
		DomainValidationStateApproved,
		DomainValidationStateInternalError,
		DomainValidationStatePending,
		DomainValidationStatePendingRevalidation,
		DomainValidationStateRefreshingValidationToken,
		DomainValidationStateRejected,
		DomainValidationStateSubmitting,
		DomainValidationStateTimedOut,
		DomainValidationStateUnknown,
	}
}

// EnabledState - Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled'
type EnabledState string

const (
	EnabledStateDisabled EnabledState = "Disabled"
	EnabledStateEnabled  EnabledState = "Enabled"
)

// PossibleEnabledStateValues returns the possible values for the EnabledState const type.
func PossibleEnabledStateValues() []EnabledState {
	return []EnabledState{
		EnabledStateDisabled,
		EnabledStateEnabled,
	}
}

// EndpointProvisioningState - Provisioning status of the endpoint.
type EndpointProvisioningState string

const (
	EndpointProvisioningStateCreating  EndpointProvisioningState = "Creating"
	EndpointProvisioningStateDeleting  EndpointProvisioningState = "Deleting"
	EndpointProvisioningStateFailed    EndpointProvisioningState = "Failed"
	EndpointProvisioningStateSucceeded EndpointProvisioningState = "Succeeded"
	EndpointProvisioningStateUpdating  EndpointProvisioningState = "Updating"
)

// PossibleEndpointProvisioningStateValues returns the possible values for the EndpointProvisioningState const type.
func PossibleEndpointProvisioningStateValues() []EndpointProvisioningState {
	return []EndpointProvisioningState{
		EndpointProvisioningStateCreating,
		EndpointProvisioningStateDeleting,
		EndpointProvisioningStateFailed,
		EndpointProvisioningStateSucceeded,
		EndpointProvisioningStateUpdating,
	}
}

// EndpointResourceState - Resource status of the endpoint.
type EndpointResourceState string

const (
	EndpointResourceStateCreating EndpointResourceState = "Creating"
	EndpointResourceStateDeleting EndpointResourceState = "Deleting"
	EndpointResourceStateRunning  EndpointResourceState = "Running"
	EndpointResourceStateStarting EndpointResourceState = "Starting"
	EndpointResourceStateStopped  EndpointResourceState = "Stopped"
	EndpointResourceStateStopping EndpointResourceState = "Stopping"
)

// PossibleEndpointResourceStateValues returns the possible values for the EndpointResourceState const type.
func PossibleEndpointResourceStateValues() []EndpointResourceState {
	return []EndpointResourceState{
		EndpointResourceStateCreating,
		EndpointResourceStateDeleting,
		EndpointResourceStateRunning,
		EndpointResourceStateStarting,
		EndpointResourceStateStopped,
		EndpointResourceStateStopping,
	}
}

// ForwardingProtocol - Protocol this rule will use when forwarding traffic to backends.
type ForwardingProtocol string

const (
	ForwardingProtocolHTTPOnly     ForwardingProtocol = "HttpOnly"
	ForwardingProtocolHTTPSOnly    ForwardingProtocol = "HttpsOnly"
	ForwardingProtocolMatchRequest ForwardingProtocol = "MatchRequest"
)

// PossibleForwardingProtocolValues returns the possible values for the ForwardingProtocol const type.
func PossibleForwardingProtocolValues() []ForwardingProtocol {
	return []ForwardingProtocol{
		ForwardingProtocolHTTPOnly,
		ForwardingProtocolHTTPSOnly,
		ForwardingProtocolMatchRequest,
	}
}

// GeoFilterActions - Action of the geo filter, i.e. allow or block access.
type GeoFilterActions string

const (
	GeoFilterActionsAllow GeoFilterActions = "Allow"
	GeoFilterActionsBlock GeoFilterActions = "Block"
)

// PossibleGeoFilterActionsValues returns the possible values for the GeoFilterActions const type.
func PossibleGeoFilterActionsValues() []GeoFilterActions {
	return []GeoFilterActions{
		GeoFilterActionsAllow,
		GeoFilterActionsBlock,
	}
}

// HTTPSRedirect - Whether to automatically redirect HTTP traffic to HTTPS traffic. Note that this is a easy way to set up
// this rule and it will be the first rule that gets executed.
type HTTPSRedirect string

const (
	HTTPSRedirectDisabled HTTPSRedirect = "Disabled"
	HTTPSRedirectEnabled  HTTPSRedirect = "Enabled"
)

// PossibleHTTPSRedirectValues returns the possible values for the HTTPSRedirect const type.
func PossibleHTTPSRedirectValues() []HTTPSRedirect {
	return []HTTPSRedirect{
		HTTPSRedirectDisabled,
		HTTPSRedirectEnabled,
	}
}

// HTTPVersionOperator - Describes operator to be matched
type HTTPVersionOperator string

const (
	HTTPVersionOperatorEqual HTTPVersionOperator = "Equal"
)

// PossibleHTTPVersionOperatorValues returns the possible values for the HTTPVersionOperator const type.
func PossibleHTTPVersionOperatorValues() []HTTPVersionOperator {
	return []HTTPVersionOperator{
		HTTPVersionOperatorEqual,
	}
}

// HeaderAction - Action to perform
type HeaderAction string

const (
	HeaderActionAppend    HeaderAction = "Append"
	HeaderActionDelete    HeaderAction = "Delete"
	HeaderActionOverwrite HeaderAction = "Overwrite"
)

// PossibleHeaderActionValues returns the possible values for the HeaderAction const type.
func PossibleHeaderActionValues() []HeaderAction {
	return []HeaderAction{
		HeaderActionAppend,
		HeaderActionDelete,
		HeaderActionOverwrite,
	}
}

// HealthProbeRequestType - The type of health probe request that is made.
type HealthProbeRequestType string

const (
	HealthProbeRequestTypeGET    HealthProbeRequestType = "GET"
	HealthProbeRequestTypeHEAD   HealthProbeRequestType = "HEAD"
	HealthProbeRequestTypeNotSet HealthProbeRequestType = "NotSet"
)

// PossibleHealthProbeRequestTypeValues returns the possible values for the HealthProbeRequestType const type.
func PossibleHealthProbeRequestTypeValues() []HealthProbeRequestType {
	return []HealthProbeRequestType{
		HealthProbeRequestTypeGET,
		HealthProbeRequestTypeHEAD,
		HealthProbeRequestTypeNotSet,
	}
}

// HostNameOperator - Describes operator to be matched
type HostNameOperator string

const (
	HostNameOperatorAny                HostNameOperator = "Any"
	HostNameOperatorBeginsWith         HostNameOperator = "BeginsWith"
	HostNameOperatorContains           HostNameOperator = "Contains"
	HostNameOperatorEndsWith           HostNameOperator = "EndsWith"
	HostNameOperatorEqual              HostNameOperator = "Equal"
	HostNameOperatorGreaterThan        HostNameOperator = "GreaterThan"
	HostNameOperatorGreaterThanOrEqual HostNameOperator = "GreaterThanOrEqual"
	HostNameOperatorLessThan           HostNameOperator = "LessThan"
	HostNameOperatorLessThanOrEqual    HostNameOperator = "LessThanOrEqual"
	HostNameOperatorRegEx              HostNameOperator = "RegEx"
)

// PossibleHostNameOperatorValues returns the possible values for the HostNameOperator const type.
func PossibleHostNameOperatorValues() []HostNameOperator {
	return []HostNameOperator{
		HostNameOperatorAny,
		HostNameOperatorBeginsWith,
		HostNameOperatorContains,
		HostNameOperatorEndsWith,
		HostNameOperatorEqual,
		HostNameOperatorGreaterThan,
		HostNameOperatorGreaterThanOrEqual,
		HostNameOperatorLessThan,
		HostNameOperatorLessThanOrEqual,
		HostNameOperatorRegEx,
	}
}

type IsDeviceMatchValue string

const (
	IsDeviceMatchValueDesktop IsDeviceMatchValue = "Desktop"
	IsDeviceMatchValueMobile  IsDeviceMatchValue = "Mobile"
)

// PossibleIsDeviceMatchValueValues returns the possible values for the IsDeviceMatchValue const type.
func PossibleIsDeviceMatchValueValues() []IsDeviceMatchValue {
	return []IsDeviceMatchValue{
		IsDeviceMatchValueDesktop,
		IsDeviceMatchValueMobile,
	}
}

// IsDeviceOperator - Describes operator to be matched
type IsDeviceOperator string

const (
	IsDeviceOperatorEqual IsDeviceOperator = "Equal"
)

// PossibleIsDeviceOperatorValues returns the possible values for the IsDeviceOperator const type.
func PossibleIsDeviceOperatorValues() []IsDeviceOperator {
	return []IsDeviceOperator{
		IsDeviceOperatorEqual,
	}
}

type KeyVaultSigningKeyParametersType string

const (
	KeyVaultSigningKeyParametersTypeKeyVaultSigningKeyParameters KeyVaultSigningKeyParametersType = "KeyVaultSigningKeyParameters"
)

// PossibleKeyVaultSigningKeyParametersTypeValues returns the possible values for the KeyVaultSigningKeyParametersType const type.
func PossibleKeyVaultSigningKeyParametersTypeValues() []KeyVaultSigningKeyParametersType {
	return []KeyVaultSigningKeyParametersType{
		KeyVaultSigningKeyParametersTypeKeyVaultSigningKeyParameters,
	}
}

// LinkToDefaultDomain - whether this route will be linked to the default endpoint domain.
type LinkToDefaultDomain string

const (
	LinkToDefaultDomainDisabled LinkToDefaultDomain = "Disabled"
	LinkToDefaultDomainEnabled  LinkToDefaultDomain = "Enabled"
)

// PossibleLinkToDefaultDomainValues returns the possible values for the LinkToDefaultDomain const type.
func PossibleLinkToDefaultDomainValues() []LinkToDefaultDomain {
	return []LinkToDefaultDomain{
		LinkToDefaultDomainDisabled,
		LinkToDefaultDomainEnabled,
	}
}

type LogMetric string

const (
	LogMetricClientRequestBandwidth LogMetric = "clientRequestBandwidth"
	LogMetricClientRequestCount     LogMetric = "clientRequestCount"
	LogMetricClientRequestTraffic   LogMetric = "clientRequestTraffic"
	LogMetricOriginRequestBandwidth LogMetric = "originRequestBandwidth"
	LogMetricOriginRequestTraffic   LogMetric = "originRequestTraffic"
	LogMetricTotalLatency           LogMetric = "totalLatency"
)

// PossibleLogMetricValues returns the possible values for the LogMetric const type.
func PossibleLogMetricValues() []LogMetric {
	return []LogMetric{
		LogMetricClientRequestBandwidth,
		LogMetricClientRequestCount,
		LogMetricClientRequestTraffic,
		LogMetricOriginRequestBandwidth,
		LogMetricOriginRequestTraffic,
		LogMetricTotalLatency,
	}
}

type LogMetricsGranularity string

const (
	LogMetricsGranularityP1D  LogMetricsGranularity = "P1D"
	LogMetricsGranularityPT1H LogMetricsGranularity = "PT1H"
	LogMetricsGranularityPT5M LogMetricsGranularity = "PT5M"
)

// PossibleLogMetricsGranularityValues returns the possible values for the LogMetricsGranularity const type.
func PossibleLogMetricsGranularityValues() []LogMetricsGranularity {
	return []LogMetricsGranularity{
		LogMetricsGranularityP1D,
		LogMetricsGranularityPT1H,
		LogMetricsGranularityPT5M,
	}
}

type LogMetricsGroupBy string

const (
	LogMetricsGroupByCacheStatus     LogMetricsGroupBy = "cacheStatus"
	LogMetricsGroupByCountryOrRegion LogMetricsGroupBy = "countryOrRegion"
	LogMetricsGroupByCustomDomain    LogMetricsGroupBy = "customDomain"
	LogMetricsGroupByHTTPStatusCode  LogMetricsGroupBy = "httpStatusCode"
	LogMetricsGroupByProtocol        LogMetricsGroupBy = "protocol"
)

// PossibleLogMetricsGroupByValues returns the possible values for the LogMetricsGroupBy const type.
func PossibleLogMetricsGroupByValues() []LogMetricsGroupBy {
	return []LogMetricsGroupBy{
		LogMetricsGroupByCacheStatus,
		LogMetricsGroupByCountryOrRegion,
		LogMetricsGroupByCustomDomain,
		LogMetricsGroupByHTTPStatusCode,
		LogMetricsGroupByProtocol,
	}
}

type LogRanking string

const (
	LogRankingBrowser         LogRanking = "browser"
	LogRankingCountryOrRegion LogRanking = "countryOrRegion"
	LogRankingReferrer        LogRanking = "referrer"
	LogRankingURL             LogRanking = "url"
	LogRankingUserAgent       LogRanking = "userAgent"
)

// PossibleLogRankingValues returns the possible values for the LogRanking const type.
func PossibleLogRankingValues() []LogRanking {
	return []LogRanking{
		LogRankingBrowser,
		LogRankingCountryOrRegion,
		LogRankingReferrer,
		LogRankingURL,
		LogRankingUserAgent,
	}
}

type LogRankingMetric string

const (
	LogRankingMetricClientRequestCount   LogRankingMetric = "clientRequestCount"
	LogRankingMetricClientRequestTraffic LogRankingMetric = "clientRequestTraffic"
	LogRankingMetricErrorCount           LogRankingMetric = "errorCount"
	LogRankingMetricHitCount             LogRankingMetric = "hitCount"
	LogRankingMetricMissCount            LogRankingMetric = "missCount"
	LogRankingMetricUserErrorCount       LogRankingMetric = "userErrorCount"
)

// PossibleLogRankingMetricValues returns the possible values for the LogRankingMetric const type.
func PossibleLogRankingMetricValues() []LogRankingMetric {
	return []LogRankingMetric{
		LogRankingMetricClientRequestCount,
		LogRankingMetricClientRequestTraffic,
		LogRankingMetricErrorCount,
		LogRankingMetricHitCount,
		LogRankingMetricMissCount,
		LogRankingMetricUserErrorCount,
	}
}

// ManagedRuleEnabledState - Describes if the managed rule is in enabled or disabled state.
type ManagedRuleEnabledState string

const (
	ManagedRuleEnabledStateDisabled ManagedRuleEnabledState = "Disabled"
	ManagedRuleEnabledStateEnabled  ManagedRuleEnabledState = "Enabled"
)

// PossibleManagedRuleEnabledStateValues returns the possible values for the ManagedRuleEnabledState const type.
func PossibleManagedRuleEnabledStateValues() []ManagedRuleEnabledState {
	return []ManagedRuleEnabledState{
		ManagedRuleEnabledStateDisabled,
		ManagedRuleEnabledStateEnabled,
	}
}

// ManagedServiceIdentityType - Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
type ManagedServiceIdentityType string

const (
	// ManagedServiceIdentityTypeNone - No managed identity.
	ManagedServiceIdentityTypeNone ManagedServiceIdentityType = "None"
	// ManagedServiceIdentityTypeSystemAssigned - System assigned managed identity.
	ManagedServiceIdentityTypeSystemAssigned ManagedServiceIdentityType = "SystemAssigned"
	// ManagedServiceIdentityTypeSystemAssignedUserAssigned - System and user assigned managed identity.
	ManagedServiceIdentityTypeSystemAssignedUserAssigned ManagedServiceIdentityType = "SystemAssigned,UserAssigned"
	// ManagedServiceIdentityTypeUserAssigned - User assigned managed identity.
	ManagedServiceIdentityTypeUserAssigned ManagedServiceIdentityType = "UserAssigned"
)

// PossibleManagedServiceIdentityTypeValues returns the possible values for the ManagedServiceIdentityType const type.
func PossibleManagedServiceIdentityTypeValues() []ManagedServiceIdentityType {
	return []ManagedServiceIdentityType{
		ManagedServiceIdentityTypeNone,
		ManagedServiceIdentityTypeSystemAssigned,
		ManagedServiceIdentityTypeSystemAssignedUserAssigned,
		ManagedServiceIdentityTypeUserAssigned,
	}
}

// MatchProcessingBehavior - If this rule is a match should the rules engine continue running the remaining rules or stop.
// If not present, defaults to Continue.
type MatchProcessingBehavior string

const (
	MatchProcessingBehaviorContinue MatchProcessingBehavior = "Continue"
	MatchProcessingBehaviorStop     MatchProcessingBehavior = "Stop"
)

// PossibleMatchProcessingBehaviorValues returns the possible values for the MatchProcessingBehavior const type.
func PossibleMatchProcessingBehaviorValues() []MatchProcessingBehavior {
	return []MatchProcessingBehavior{
		MatchProcessingBehaviorContinue,
		MatchProcessingBehaviorStop,
	}
}

// MatchVariable - Request variable to compare with.
type MatchVariable string

const (
	MatchVariableClientPort       MatchVariable = "ClientPort"
	MatchVariableCookies          MatchVariable = "Cookies"
	MatchVariableHTTPVersion      MatchVariable = "HttpVersion"
	MatchVariableHostName         MatchVariable = "HostName"
	MatchVariableIsDevice         MatchVariable = "IsDevice"
	MatchVariablePostArgs         MatchVariable = "PostArgs"
	MatchVariableQueryString      MatchVariable = "QueryString"
	MatchVariableRemoteAddress    MatchVariable = "RemoteAddress"
	MatchVariableRequestBody      MatchVariable = "RequestBody"
	MatchVariableRequestHeader    MatchVariable = "RequestHeader"
	MatchVariableRequestMethod    MatchVariable = "RequestMethod"
	MatchVariableRequestScheme    MatchVariable = "RequestScheme"
	MatchVariableRequestURI       MatchVariable = "RequestUri"
	MatchVariableSSLProtocol      MatchVariable = "SslProtocol"
	MatchVariableServerPort       MatchVariable = "ServerPort"
	MatchVariableSocketAddr       MatchVariable = "SocketAddr"
	MatchVariableURLFileExtension MatchVariable = "UrlFileExtension"
	MatchVariableURLFileName      MatchVariable = "UrlFileName"
	MatchVariableURLPath          MatchVariable = "UrlPath"
)

// PossibleMatchVariableValues returns the possible values for the MatchVariable const type.
func PossibleMatchVariableValues() []MatchVariable {
	return []MatchVariable{
		MatchVariableClientPort,
		MatchVariableCookies,
		MatchVariableHTTPVersion,
		MatchVariableHostName,
		MatchVariableIsDevice,
		MatchVariablePostArgs,
		MatchVariableQueryString,
		MatchVariableRemoteAddress,
		MatchVariableRequestBody,
		MatchVariableRequestHeader,
		MatchVariableRequestMethod,
		MatchVariableRequestScheme,
		MatchVariableRequestURI,
		MatchVariableSSLProtocol,
		MatchVariableServerPort,
		MatchVariableSocketAddr,
		MatchVariableURLFileExtension,
		MatchVariableURLFileName,
		MatchVariableURLPath,
	}
}

type MetricsGranularity string

const (
	MetricsGranularityP1D  MetricsGranularity = "P1D"
	MetricsGranularityPT1H MetricsGranularity = "PT1H"
	MetricsGranularityPT5M MetricsGranularity = "PT5M"
)

// PossibleMetricsGranularityValues returns the possible values for the MetricsGranularity const type.
func PossibleMetricsGranularityValues() []MetricsGranularity {
	return []MetricsGranularity{
		MetricsGranularityP1D,
		MetricsGranularityPT1H,
		MetricsGranularityPT5M,
	}
}

type MetricsSeriesUnit string

const (
	MetricsSeriesUnitBitsPerSecond MetricsSeriesUnit = "bitsPerSecond"
	MetricsSeriesUnitBytes         MetricsSeriesUnit = "bytes"
	MetricsSeriesUnitCount         MetricsSeriesUnit = "count"
	MetricsSeriesUnitMilliSeconds  MetricsSeriesUnit = "milliSeconds"
)

// PossibleMetricsSeriesUnitValues returns the possible values for the MetricsSeriesUnit const type.
func PossibleMetricsSeriesUnitValues() []MetricsSeriesUnit {
	return []MetricsSeriesUnit{
		MetricsSeriesUnitBitsPerSecond,
		MetricsSeriesUnitBytes,
		MetricsSeriesUnitCount,
		MetricsSeriesUnitMilliSeconds,
	}
}

// MinimumTLSVersion - TLS protocol version that will be used for Https
type MinimumTLSVersion string

const (
	MinimumTLSVersionNone  MinimumTLSVersion = "None"
	MinimumTLSVersionTLS10 MinimumTLSVersion = "TLS10"
	MinimumTLSVersionTLS12 MinimumTLSVersion = "TLS12"
)

// PossibleMinimumTLSVersionValues returns the possible values for the MinimumTLSVersion const type.
func PossibleMinimumTLSVersionValues() []MinimumTLSVersion {
	return []MinimumTLSVersion{
		MinimumTLSVersionNone,
		MinimumTLSVersionTLS10,
		MinimumTLSVersionTLS12,
	}
}

// Operator - Describes operator to be matched
type Operator string

const (
	OperatorAny                Operator = "Any"
	OperatorBeginsWith         Operator = "BeginsWith"
	OperatorContains           Operator = "Contains"
	OperatorEndsWith           Operator = "EndsWith"
	OperatorEqual              Operator = "Equal"
	OperatorGeoMatch           Operator = "GeoMatch"
	OperatorGreaterThan        Operator = "GreaterThan"
	OperatorGreaterThanOrEqual Operator = "GreaterThanOrEqual"
	OperatorIPMatch            Operator = "IPMatch"
	OperatorLessThan           Operator = "LessThan"
	OperatorLessThanOrEqual    Operator = "LessThanOrEqual"
	OperatorRegEx              Operator = "RegEx"
)

// PossibleOperatorValues returns the possible values for the Operator const type.
func PossibleOperatorValues() []Operator {
	return []Operator{
		OperatorAny,
		OperatorBeginsWith,
		OperatorContains,
		OperatorEndsWith,
		OperatorEqual,
		OperatorGeoMatch,
		OperatorGreaterThan,
		OperatorGreaterThanOrEqual,
		OperatorIPMatch,
		OperatorLessThan,
		OperatorLessThanOrEqual,
		OperatorRegEx,
	}
}

// OptimizationType - Specifies what scenario the customer wants this CDN endpoint to optimize, e.g. Download, Media services.
// With this information we can apply scenario driven optimization.
type OptimizationType string

const (
	OptimizationTypeDynamicSiteAcceleration     OptimizationType = "DynamicSiteAcceleration"
	OptimizationTypeGeneralMediaStreaming       OptimizationType = "GeneralMediaStreaming"
	OptimizationTypeGeneralWebDelivery          OptimizationType = "GeneralWebDelivery"
	OptimizationTypeLargeFileDownload           OptimizationType = "LargeFileDownload"
	OptimizationTypeVideoOnDemandMediaStreaming OptimizationType = "VideoOnDemandMediaStreaming"
)

// PossibleOptimizationTypeValues returns the possible values for the OptimizationType const type.
func PossibleOptimizationTypeValues() []OptimizationType {
	return []OptimizationType{
		OptimizationTypeDynamicSiteAcceleration,
		OptimizationTypeGeneralMediaStreaming,
		OptimizationTypeGeneralWebDelivery,
		OptimizationTypeLargeFileDownload,
		OptimizationTypeVideoOnDemandMediaStreaming,
	}
}

// OriginAuthenticationType - The type of the authentication for the origin.
type OriginAuthenticationType string

const (
	OriginAuthenticationTypeSystemAssignedIdentity OriginAuthenticationType = "SystemAssignedIdentity"
	OriginAuthenticationTypeUserAssignedIdentity   OriginAuthenticationType = "UserAssignedIdentity"
)

// PossibleOriginAuthenticationTypeValues returns the possible values for the OriginAuthenticationType const type.
func PossibleOriginAuthenticationTypeValues() []OriginAuthenticationType {
	return []OriginAuthenticationType{
		OriginAuthenticationTypeSystemAssignedIdentity,
		OriginAuthenticationTypeUserAssignedIdentity,
	}
}

// OriginGroupProvisioningState - Provisioning status of the origin group.
type OriginGroupProvisioningState string

const (
	OriginGroupProvisioningStateCreating  OriginGroupProvisioningState = "Creating"
	OriginGroupProvisioningStateDeleting  OriginGroupProvisioningState = "Deleting"
	OriginGroupProvisioningStateFailed    OriginGroupProvisioningState = "Failed"
	OriginGroupProvisioningStateSucceeded OriginGroupProvisioningState = "Succeeded"
	OriginGroupProvisioningStateUpdating  OriginGroupProvisioningState = "Updating"
)

// PossibleOriginGroupProvisioningStateValues returns the possible values for the OriginGroupProvisioningState const type.
func PossibleOriginGroupProvisioningStateValues() []OriginGroupProvisioningState {
	return []OriginGroupProvisioningState{
		OriginGroupProvisioningStateCreating,
		OriginGroupProvisioningStateDeleting,
		OriginGroupProvisioningStateFailed,
		OriginGroupProvisioningStateSucceeded,
		OriginGroupProvisioningStateUpdating,
	}
}

// OriginGroupResourceState - Resource status of the origin group.
type OriginGroupResourceState string

const (
	OriginGroupResourceStateActive   OriginGroupResourceState = "Active"
	OriginGroupResourceStateCreating OriginGroupResourceState = "Creating"
	OriginGroupResourceStateDeleting OriginGroupResourceState = "Deleting"
)

// PossibleOriginGroupResourceStateValues returns the possible values for the OriginGroupResourceState const type.
func PossibleOriginGroupResourceStateValues() []OriginGroupResourceState {
	return []OriginGroupResourceState{
		OriginGroupResourceStateActive,
		OriginGroupResourceStateCreating,
		OriginGroupResourceStateDeleting,
	}
}

// OriginProvisioningState - Provisioning status of the origin.
type OriginProvisioningState string

const (
	OriginProvisioningStateCreating  OriginProvisioningState = "Creating"
	OriginProvisioningStateDeleting  OriginProvisioningState = "Deleting"
	OriginProvisioningStateFailed    OriginProvisioningState = "Failed"
	OriginProvisioningStateSucceeded OriginProvisioningState = "Succeeded"
	OriginProvisioningStateUpdating  OriginProvisioningState = "Updating"
)

// PossibleOriginProvisioningStateValues returns the possible values for the OriginProvisioningState const type.
func PossibleOriginProvisioningStateValues() []OriginProvisioningState {
	return []OriginProvisioningState{
		OriginProvisioningStateCreating,
		OriginProvisioningStateDeleting,
		OriginProvisioningStateFailed,
		OriginProvisioningStateSucceeded,
		OriginProvisioningStateUpdating,
	}
}

// OriginResourceState - Resource status of the origin.
type OriginResourceState string

const (
	OriginResourceStateActive   OriginResourceState = "Active"
	OriginResourceStateCreating OriginResourceState = "Creating"
	OriginResourceStateDeleting OriginResourceState = "Deleting"
)

// PossibleOriginResourceStateValues returns the possible values for the OriginResourceState const type.
func PossibleOriginResourceStateValues() []OriginResourceState {
	return []OriginResourceState{
		OriginResourceStateActive,
		OriginResourceStateCreating,
		OriginResourceStateDeleting,
	}
}

// ParamIndicator - Indicates the purpose of the parameter
type ParamIndicator string

const (
	ParamIndicatorExpires   ParamIndicator = "Expires"
	ParamIndicatorKeyID     ParamIndicator = "KeyId"
	ParamIndicatorSignature ParamIndicator = "Signature"
)

// PossibleParamIndicatorValues returns the possible values for the ParamIndicator const type.
func PossibleParamIndicatorValues() []ParamIndicator {
	return []ParamIndicator{
		ParamIndicatorExpires,
		ParamIndicatorKeyID,
		ParamIndicatorSignature,
	}
}

// PolicyEnabledState - Describes if the policy is in enabled or disabled state. Defaults to Enabled if not specified.
type PolicyEnabledState string

const (
	PolicyEnabledStateDisabled PolicyEnabledState = "Disabled"
	PolicyEnabledStateEnabled  PolicyEnabledState = "Enabled"
)

// PossiblePolicyEnabledStateValues returns the possible values for the PolicyEnabledState const type.
func PossiblePolicyEnabledStateValues() []PolicyEnabledState {
	return []PolicyEnabledState{
		PolicyEnabledStateDisabled,
		PolicyEnabledStateEnabled,
	}
}

// PolicyMode - Describes if it is in detection mode or prevention mode at policy level.
type PolicyMode string

const (
	PolicyModeDetection  PolicyMode = "Detection"
	PolicyModePrevention PolicyMode = "Prevention"
)

// PossiblePolicyModeValues returns the possible values for the PolicyMode const type.
func PossiblePolicyModeValues() []PolicyMode {
	return []PolicyMode{
		PolicyModeDetection,
		PolicyModePrevention,
	}
}

// PolicyResourceState - Resource status of the policy.
type PolicyResourceState string

const (
	PolicyResourceStateCreating  PolicyResourceState = "Creating"
	PolicyResourceStateDeleting  PolicyResourceState = "Deleting"
	PolicyResourceStateDisabled  PolicyResourceState = "Disabled"
	PolicyResourceStateDisabling PolicyResourceState = "Disabling"
	PolicyResourceStateEnabled   PolicyResourceState = "Enabled"
	PolicyResourceStateEnabling  PolicyResourceState = "Enabling"
)

// PossiblePolicyResourceStateValues returns the possible values for the PolicyResourceState const type.
func PossiblePolicyResourceStateValues() []PolicyResourceState {
	return []PolicyResourceState{
		PolicyResourceStateCreating,
		PolicyResourceStateDeleting,
		PolicyResourceStateDisabled,
		PolicyResourceStateDisabling,
		PolicyResourceStateEnabled,
		PolicyResourceStateEnabling,
	}
}

// PolicySettingsDefaultCustomBlockResponseStatusCode - If the action type is block, this field defines the default customer
// overridable http response status code.
type PolicySettingsDefaultCustomBlockResponseStatusCode int32

const (
	PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredFive       PolicySettingsDefaultCustomBlockResponseStatusCode = 405
	PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredSix        PolicySettingsDefaultCustomBlockResponseStatusCode = 406
	PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredThree      PolicySettingsDefaultCustomBlockResponseStatusCode = 403
	PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredTwentyNine PolicySettingsDefaultCustomBlockResponseStatusCode = 429
	PolicySettingsDefaultCustomBlockResponseStatusCodeTwoHundred            PolicySettingsDefaultCustomBlockResponseStatusCode = 200
)

// PossiblePolicySettingsDefaultCustomBlockResponseStatusCodeValues returns the possible values for the PolicySettingsDefaultCustomBlockResponseStatusCode const type.
func PossiblePolicySettingsDefaultCustomBlockResponseStatusCodeValues() []PolicySettingsDefaultCustomBlockResponseStatusCode {
	return []PolicySettingsDefaultCustomBlockResponseStatusCode{
		PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredFive,
		PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredSix,
		PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredThree,
		PolicySettingsDefaultCustomBlockResponseStatusCodeFourHundredTwentyNine,
		PolicySettingsDefaultCustomBlockResponseStatusCodeTwoHundred,
	}
}

// PostArgsOperator - Describes operator to be matched
type PostArgsOperator string

const (
	PostArgsOperatorAny                PostArgsOperator = "Any"
	PostArgsOperatorBeginsWith         PostArgsOperator = "BeginsWith"
	PostArgsOperatorContains           PostArgsOperator = "Contains"
	PostArgsOperatorEndsWith           PostArgsOperator = "EndsWith"
	PostArgsOperatorEqual              PostArgsOperator = "Equal"
	PostArgsOperatorGreaterThan        PostArgsOperator = "GreaterThan"
	PostArgsOperatorGreaterThanOrEqual PostArgsOperator = "GreaterThanOrEqual"
	PostArgsOperatorLessThan           PostArgsOperator = "LessThan"
	PostArgsOperatorLessThanOrEqual    PostArgsOperator = "LessThanOrEqual"
	PostArgsOperatorRegEx              PostArgsOperator = "RegEx"
)

// PossiblePostArgsOperatorValues returns the possible values for the PostArgsOperator const type.
func PossiblePostArgsOperatorValues() []PostArgsOperator {
	return []PostArgsOperator{
		PostArgsOperatorAny,
		PostArgsOperatorBeginsWith,
		PostArgsOperatorContains,
		PostArgsOperatorEndsWith,
		PostArgsOperatorEqual,
		PostArgsOperatorGreaterThan,
		PostArgsOperatorGreaterThanOrEqual,
		PostArgsOperatorLessThan,
		PostArgsOperatorLessThanOrEqual,
		PostArgsOperatorRegEx,
	}
}

// PrivateEndpointStatus - The approval status for the connection to the Private Link
type PrivateEndpointStatus string

const (
	PrivateEndpointStatusApproved     PrivateEndpointStatus = "Approved"
	PrivateEndpointStatusDisconnected PrivateEndpointStatus = "Disconnected"
	PrivateEndpointStatusPending      PrivateEndpointStatus = "Pending"
	PrivateEndpointStatusRejected     PrivateEndpointStatus = "Rejected"
	PrivateEndpointStatusTimeout      PrivateEndpointStatus = "Timeout"
)

// PossiblePrivateEndpointStatusValues returns the possible values for the PrivateEndpointStatus const type.
func PossiblePrivateEndpointStatusValues() []PrivateEndpointStatus {
	return []PrivateEndpointStatus{
		PrivateEndpointStatusApproved,
		PrivateEndpointStatusDisconnected,
		PrivateEndpointStatusPending,
		PrivateEndpointStatusRejected,
		PrivateEndpointStatusTimeout,
	}
}

// ProbeProtocol - Protocol to use for health probe.
type ProbeProtocol string

const (
	ProbeProtocolHTTP   ProbeProtocol = "Http"
	ProbeProtocolHTTPS  ProbeProtocol = "Https"
	ProbeProtocolNotSet ProbeProtocol = "NotSet"
)

// PossibleProbeProtocolValues returns the possible values for the ProbeProtocol const type.
func PossibleProbeProtocolValues() []ProbeProtocol {
	return []ProbeProtocol{
		ProbeProtocolHTTP,
		ProbeProtocolHTTPS,
		ProbeProtocolNotSet,
	}
}

// ProfileProvisioningState - Provisioning status of the profile.
type ProfileProvisioningState string

const (
	ProfileProvisioningStateCreating  ProfileProvisioningState = "Creating"
	ProfileProvisioningStateDeleting  ProfileProvisioningState = "Deleting"
	ProfileProvisioningStateFailed    ProfileProvisioningState = "Failed"
	ProfileProvisioningStateSucceeded ProfileProvisioningState = "Succeeded"
	ProfileProvisioningStateUpdating  ProfileProvisioningState = "Updating"
)

// PossibleProfileProvisioningStateValues returns the possible values for the ProfileProvisioningState const type.
func PossibleProfileProvisioningStateValues() []ProfileProvisioningState {
	return []ProfileProvisioningState{
		ProfileProvisioningStateCreating,
		ProfileProvisioningStateDeleting,
		ProfileProvisioningStateFailed,
		ProfileProvisioningStateSucceeded,
		ProfileProvisioningStateUpdating,
	}
}

// ProfileResourceState - Resource status of the profile.
type ProfileResourceState string

const (
	ProfileResourceStateAbortingMigration      ProfileResourceState = "AbortingMigration"
	ProfileResourceStateActive                 ProfileResourceState = "Active"
	ProfileResourceStateCommittingMigration    ProfileResourceState = "CommittingMigration"
	ProfileResourceStateCreating               ProfileResourceState = "Creating"
	ProfileResourceStateDeleting               ProfileResourceState = "Deleting"
	ProfileResourceStateDisabled               ProfileResourceState = "Disabled"
	ProfileResourceStateMigrated               ProfileResourceState = "Migrated"
	ProfileResourceStateMigrating              ProfileResourceState = "Migrating"
	ProfileResourceStatePendingMigrationCommit ProfileResourceState = "PendingMigrationCommit"
)

// PossibleProfileResourceStateValues returns the possible values for the ProfileResourceState const type.
func PossibleProfileResourceStateValues() []ProfileResourceState {
	return []ProfileResourceState{
		ProfileResourceStateAbortingMigration,
		ProfileResourceStateActive,
		ProfileResourceStateCommittingMigration,
		ProfileResourceStateCreating,
		ProfileResourceStateDeleting,
		ProfileResourceStateDisabled,
		ProfileResourceStateMigrated,
		ProfileResourceStateMigrating,
		ProfileResourceStatePendingMigrationCommit,
	}
}

// ProfileScrubbingState - State of the log scrubbing config. Default value is Enabled.
type ProfileScrubbingState string

const (
	ProfileScrubbingStateDisabled ProfileScrubbingState = "Disabled"
	ProfileScrubbingStateEnabled  ProfileScrubbingState = "Enabled"
)

// PossibleProfileScrubbingStateValues returns the possible values for the ProfileScrubbingState const type.
func PossibleProfileScrubbingStateValues() []ProfileScrubbingState {
	return []ProfileScrubbingState{
		ProfileScrubbingStateDisabled,
		ProfileScrubbingStateEnabled,
	}
}

// ProtocolType - Defines the TLS extension protocol that is used for secure delivery.
type ProtocolType string

const (
	ProtocolTypeIPBased              ProtocolType = "IPBased"
	ProtocolTypeServerNameIndication ProtocolType = "ServerNameIndication"
)

// PossibleProtocolTypeValues returns the possible values for the ProtocolType const type.
func PossibleProtocolTypeValues() []ProtocolType {
	return []ProtocolType{
		ProtocolTypeIPBased,
		ProtocolTypeServerNameIndication,
	}
}

// ProvisioningState - Provisioning state of the WebApplicationFirewallPolicy.
type ProvisioningState string

const (
	ProvisioningStateCreating  ProvisioningState = "Creating"
	ProvisioningStateFailed    ProvisioningState = "Failed"
	ProvisioningStateSucceeded ProvisioningState = "Succeeded"
)

// PossibleProvisioningStateValues returns the possible values for the ProvisioningState const type.
func PossibleProvisioningStateValues() []ProvisioningState {
	return []ProvisioningState{
		ProvisioningStateCreating,
		ProvisioningStateFailed,
		ProvisioningStateSucceeded,
	}
}

// QueryStringBehavior - Caching behavior for the requests
type QueryStringBehavior string

const (
	QueryStringBehaviorExclude    QueryStringBehavior = "Exclude"
	QueryStringBehaviorExcludeAll QueryStringBehavior = "ExcludeAll"
	QueryStringBehaviorInclude    QueryStringBehavior = "Include"
	QueryStringBehaviorIncludeAll QueryStringBehavior = "IncludeAll"
)

// PossibleQueryStringBehaviorValues returns the possible values for the QueryStringBehavior const type.
func PossibleQueryStringBehaviorValues() []QueryStringBehavior {
	return []QueryStringBehavior{
		QueryStringBehaviorExclude,
		QueryStringBehaviorExcludeAll,
		QueryStringBehaviorInclude,
		QueryStringBehaviorIncludeAll,
	}
}

// QueryStringCachingBehavior - Defines how CDN caches requests that include query strings. You can ignore any query strings
// when caching, bypass caching to prevent requests that contain query strings from being cached, or cache every request with
// a unique URL.
type QueryStringCachingBehavior string

const (
	QueryStringCachingBehaviorBypassCaching     QueryStringCachingBehavior = "BypassCaching"
	QueryStringCachingBehaviorIgnoreQueryString QueryStringCachingBehavior = "IgnoreQueryString"
	QueryStringCachingBehaviorNotSet            QueryStringCachingBehavior = "NotSet"
	QueryStringCachingBehaviorUseQueryString    QueryStringCachingBehavior = "UseQueryString"
)

// PossibleQueryStringCachingBehaviorValues returns the possible values for the QueryStringCachingBehavior const type.
func PossibleQueryStringCachingBehaviorValues() []QueryStringCachingBehavior {
	return []QueryStringCachingBehavior{
		QueryStringCachingBehaviorBypassCaching,
		QueryStringCachingBehaviorIgnoreQueryString,
		QueryStringCachingBehaviorNotSet,
		QueryStringCachingBehaviorUseQueryString,
	}
}

// QueryStringOperator - Describes operator to be matched
type QueryStringOperator string

const (
	QueryStringOperatorAny                QueryStringOperator = "Any"
	QueryStringOperatorBeginsWith         QueryStringOperator = "BeginsWith"
	QueryStringOperatorContains           QueryStringOperator = "Contains"
	QueryStringOperatorEndsWith           QueryStringOperator = "EndsWith"
	QueryStringOperatorEqual              QueryStringOperator = "Equal"
	QueryStringOperatorGreaterThan        QueryStringOperator = "GreaterThan"
	QueryStringOperatorGreaterThanOrEqual QueryStringOperator = "GreaterThanOrEqual"
	QueryStringOperatorLessThan           QueryStringOperator = "LessThan"
	QueryStringOperatorLessThanOrEqual    QueryStringOperator = "LessThanOrEqual"
	QueryStringOperatorRegEx              QueryStringOperator = "RegEx"
)

// PossibleQueryStringOperatorValues returns the possible values for the QueryStringOperator const type.
func PossibleQueryStringOperatorValues() []QueryStringOperator {
	return []QueryStringOperator{
		QueryStringOperatorAny,
		QueryStringOperatorBeginsWith,
		QueryStringOperatorContains,
		QueryStringOperatorEndsWith,
		QueryStringOperatorEqual,
		QueryStringOperatorGreaterThan,
		QueryStringOperatorGreaterThanOrEqual,
		QueryStringOperatorLessThan,
		QueryStringOperatorLessThanOrEqual,
		QueryStringOperatorRegEx,
	}
}

// RedirectType - The redirect type the rule will use when redirecting traffic.
type RedirectType string

const (
	RedirectTypeFound             RedirectType = "Found"
	RedirectTypeMoved             RedirectType = "Moved"
	RedirectTypePermanentRedirect RedirectType = "PermanentRedirect"
	RedirectTypeTemporaryRedirect RedirectType = "TemporaryRedirect"
)

// PossibleRedirectTypeValues returns the possible values for the RedirectType const type.
func PossibleRedirectTypeValues() []RedirectType {
	return []RedirectType{
		RedirectTypeFound,
		RedirectTypeMoved,
		RedirectTypePermanentRedirect,
		RedirectTypeTemporaryRedirect,
	}
}

// RemoteAddressOperator - Describes operator to be matched
type RemoteAddressOperator string

const (
	RemoteAddressOperatorAny      RemoteAddressOperator = "Any"
	RemoteAddressOperatorGeoMatch RemoteAddressOperator = "GeoMatch"
	RemoteAddressOperatorIPMatch  RemoteAddressOperator = "IPMatch"
)

// PossibleRemoteAddressOperatorValues returns the possible values for the RemoteAddressOperator const type.
func PossibleRemoteAddressOperatorValues() []RemoteAddressOperator {
	return []RemoteAddressOperator{
		RemoteAddressOperatorAny,
		RemoteAddressOperatorGeoMatch,
		RemoteAddressOperatorIPMatch,
	}
}

// RequestBodyOperator - Describes operator to be matched
type RequestBodyOperator string

const (
	RequestBodyOperatorAny                RequestBodyOperator = "Any"
	RequestBodyOperatorBeginsWith         RequestBodyOperator = "BeginsWith"
	RequestBodyOperatorContains           RequestBodyOperator = "Contains"
	RequestBodyOperatorEndsWith           RequestBodyOperator = "EndsWith"
	RequestBodyOperatorEqual              RequestBodyOperator = "Equal"
	RequestBodyOperatorGreaterThan        RequestBodyOperator = "GreaterThan"
	RequestBodyOperatorGreaterThanOrEqual RequestBodyOperator = "GreaterThanOrEqual"
	RequestBodyOperatorLessThan           RequestBodyOperator = "LessThan"
	RequestBodyOperatorLessThanOrEqual    RequestBodyOperator = "LessThanOrEqual"
	RequestBodyOperatorRegEx              RequestBodyOperator = "RegEx"
)

// PossibleRequestBodyOperatorValues returns the possible values for the RequestBodyOperator const type.
func PossibleRequestBodyOperatorValues() []RequestBodyOperator {
	return []RequestBodyOperator{
		RequestBodyOperatorAny,
		RequestBodyOperatorBeginsWith,
		RequestBodyOperatorContains,
		RequestBodyOperatorEndsWith,
		RequestBodyOperatorEqual,
		RequestBodyOperatorGreaterThan,
		RequestBodyOperatorGreaterThanOrEqual,
		RequestBodyOperatorLessThan,
		RequestBodyOperatorLessThanOrEqual,
		RequestBodyOperatorRegEx,
	}
}

// RequestHeaderOperator - Describes operator to be matched
type RequestHeaderOperator string

const (
	RequestHeaderOperatorAny                RequestHeaderOperator = "Any"
	RequestHeaderOperatorBeginsWith         RequestHeaderOperator = "BeginsWith"
	RequestHeaderOperatorContains           RequestHeaderOperator = "Contains"
	RequestHeaderOperatorEndsWith           RequestHeaderOperator = "EndsWith"
	RequestHeaderOperatorEqual              RequestHeaderOperator = "Equal"
	RequestHeaderOperatorGreaterThan        RequestHeaderOperator = "GreaterThan"
	RequestHeaderOperatorGreaterThanOrEqual RequestHeaderOperator = "GreaterThanOrEqual"
	RequestHeaderOperatorLessThan           RequestHeaderOperator = "LessThan"
	RequestHeaderOperatorLessThanOrEqual    RequestHeaderOperator = "LessThanOrEqual"
	RequestHeaderOperatorRegEx              RequestHeaderOperator = "RegEx"
)

// PossibleRequestHeaderOperatorValues returns the possible values for the RequestHeaderOperator const type.
func PossibleRequestHeaderOperatorValues() []RequestHeaderOperator {
	return []RequestHeaderOperator{
		RequestHeaderOperatorAny,
		RequestHeaderOperatorBeginsWith,
		RequestHeaderOperatorContains,
		RequestHeaderOperatorEndsWith,
		RequestHeaderOperatorEqual,
		RequestHeaderOperatorGreaterThan,
		RequestHeaderOperatorGreaterThanOrEqual,
		RequestHeaderOperatorLessThan,
		RequestHeaderOperatorLessThanOrEqual,
		RequestHeaderOperatorRegEx,
	}
}

type RequestMethodMatchValue string

const (
	RequestMethodMatchValueDELETE  RequestMethodMatchValue = "DELETE"
	RequestMethodMatchValueGET     RequestMethodMatchValue = "GET"
	RequestMethodMatchValueHEAD    RequestMethodMatchValue = "HEAD"
	RequestMethodMatchValueOPTIONS RequestMethodMatchValue = "OPTIONS"
	RequestMethodMatchValuePOST    RequestMethodMatchValue = "POST"
	RequestMethodMatchValuePUT     RequestMethodMatchValue = "PUT"
	RequestMethodMatchValueTRACE   RequestMethodMatchValue = "TRACE"
)

// PossibleRequestMethodMatchValueValues returns the possible values for the RequestMethodMatchValue const type.
func PossibleRequestMethodMatchValueValues() []RequestMethodMatchValue {
	return []RequestMethodMatchValue{
		RequestMethodMatchValueDELETE,
		RequestMethodMatchValueGET,
		RequestMethodMatchValueHEAD,
		RequestMethodMatchValueOPTIONS,
		RequestMethodMatchValuePOST,
		RequestMethodMatchValuePUT,
		RequestMethodMatchValueTRACE,
	}
}

// RequestMethodOperator - Describes operator to be matched
type RequestMethodOperator string

const (
	RequestMethodOperatorEqual RequestMethodOperator = "Equal"
)

// PossibleRequestMethodOperatorValues returns the possible values for the RequestMethodOperator const type.
func PossibleRequestMethodOperatorValues() []RequestMethodOperator {
	return []RequestMethodOperator{
		RequestMethodOperatorEqual,
	}
}

// RequestSchemeMatchConditionParametersOperator - Describes operator to be matched
type RequestSchemeMatchConditionParametersOperator string

const (
	RequestSchemeMatchConditionParametersOperatorEqual RequestSchemeMatchConditionParametersOperator = "Equal"
)

// PossibleRequestSchemeMatchConditionParametersOperatorValues returns the possible values for the RequestSchemeMatchConditionParametersOperator const type.
func PossibleRequestSchemeMatchConditionParametersOperatorValues() []RequestSchemeMatchConditionParametersOperator {
	return []RequestSchemeMatchConditionParametersOperator{
		RequestSchemeMatchConditionParametersOperatorEqual,
	}
}

type RequestSchemeMatchValue string

const (
	RequestSchemeMatchValueHTTP  RequestSchemeMatchValue = "HTTP"
	RequestSchemeMatchValueHTTPS RequestSchemeMatchValue = "HTTPS"
)

// PossibleRequestSchemeMatchValueValues returns the possible values for the RequestSchemeMatchValue const type.
func PossibleRequestSchemeMatchValueValues() []RequestSchemeMatchValue {
	return []RequestSchemeMatchValue{
		RequestSchemeMatchValueHTTP,
		RequestSchemeMatchValueHTTPS,
	}
}

// RequestURIOperator - Describes operator to be matched
type RequestURIOperator string

const (
	RequestURIOperatorAny                RequestURIOperator = "Any"
	RequestURIOperatorBeginsWith         RequestURIOperator = "BeginsWith"
	RequestURIOperatorContains           RequestURIOperator = "Contains"
	RequestURIOperatorEndsWith           RequestURIOperator = "EndsWith"
	RequestURIOperatorEqual              RequestURIOperator = "Equal"
	RequestURIOperatorGreaterThan        RequestURIOperator = "GreaterThan"
	RequestURIOperatorGreaterThanOrEqual RequestURIOperator = "GreaterThanOrEqual"
	RequestURIOperatorLessThan           RequestURIOperator = "LessThan"
	RequestURIOperatorLessThanOrEqual    RequestURIOperator = "LessThanOrEqual"
	RequestURIOperatorRegEx              RequestURIOperator = "RegEx"
)

// PossibleRequestURIOperatorValues returns the possible values for the RequestURIOperator const type.
func PossibleRequestURIOperatorValues() []RequestURIOperator {
	return []RequestURIOperator{
		RequestURIOperatorAny,
		RequestURIOperatorBeginsWith,
		RequestURIOperatorContains,
		RequestURIOperatorEndsWith,
		RequestURIOperatorEqual,
		RequestURIOperatorGreaterThan,
		RequestURIOperatorGreaterThanOrEqual,
		RequestURIOperatorLessThan,
		RequestURIOperatorLessThanOrEqual,
		RequestURIOperatorRegEx,
	}
}

// ResourceType - Type of CDN resource used in CheckNameAvailability.
type ResourceType string

const (
	ResourceTypeMicrosoftCdnProfilesAfdEndpoints ResourceType = "Microsoft.Cdn/Profiles/AfdEndpoints"
	ResourceTypeMicrosoftCdnProfilesEndpoints    ResourceType = "Microsoft.Cdn/Profiles/Endpoints"
)

// PossibleResourceTypeValues returns the possible values for the ResourceType const type.
func PossibleResourceTypeValues() []ResourceType {
	return []ResourceType{
		ResourceTypeMicrosoftCdnProfilesAfdEndpoints,
		ResourceTypeMicrosoftCdnProfilesEndpoints,
	}
}

// ResourceUsageUnit - Unit of the usage. e.g. count.
type ResourceUsageUnit string

const (
	ResourceUsageUnitCount ResourceUsageUnit = "count"
)

// PossibleResourceUsageUnitValues returns the possible values for the ResourceUsageUnit const type.
func PossibleResourceUsageUnitValues() []ResourceUsageUnit {
	return []ResourceUsageUnit{
		ResourceUsageUnitCount,
	}
}

// ResponseBasedDetectedErrorTypes - Type of response errors for real user requests for which origin will be deemed unhealthy
type ResponseBasedDetectedErrorTypes string

const (
	ResponseBasedDetectedErrorTypesNone             ResponseBasedDetectedErrorTypes = "None"
	ResponseBasedDetectedErrorTypesTCPAndHTTPErrors ResponseBasedDetectedErrorTypes = "TcpAndHttpErrors"
	ResponseBasedDetectedErrorTypesTCPErrorsOnly    ResponseBasedDetectedErrorTypes = "TcpErrorsOnly"
)

// PossibleResponseBasedDetectedErrorTypesValues returns the possible values for the ResponseBasedDetectedErrorTypes const type.
func PossibleResponseBasedDetectedErrorTypesValues() []ResponseBasedDetectedErrorTypes {
	return []ResponseBasedDetectedErrorTypes{
		ResponseBasedDetectedErrorTypesNone,
		ResponseBasedDetectedErrorTypesTCPAndHTTPErrors,
		ResponseBasedDetectedErrorTypesTCPErrorsOnly,
	}
}

// RuleCacheBehavior - Caching behavior for the requests
type RuleCacheBehavior string

const (
	RuleCacheBehaviorHonorOrigin             RuleCacheBehavior = "HonorOrigin"
	RuleCacheBehaviorOverrideAlways          RuleCacheBehavior = "OverrideAlways"
	RuleCacheBehaviorOverrideIfOriginMissing RuleCacheBehavior = "OverrideIfOriginMissing"
)

// PossibleRuleCacheBehaviorValues returns the possible values for the RuleCacheBehavior const type.
func PossibleRuleCacheBehaviorValues() []RuleCacheBehavior {
	return []RuleCacheBehavior{
		RuleCacheBehaviorHonorOrigin,
		RuleCacheBehaviorOverrideAlways,
		RuleCacheBehaviorOverrideIfOriginMissing,
	}
}

// RuleIsCompressionEnabled - Indicates whether content compression is enabled. If compression is enabled, content will be
// served as compressed if user requests for a compressed version. Content won't be compressed on AzureFrontDoor when requested
// content is smaller than 1 byte or larger than 1 MB.
type RuleIsCompressionEnabled string

const (
	RuleIsCompressionEnabledDisabled RuleIsCompressionEnabled = "Disabled"
	RuleIsCompressionEnabledEnabled  RuleIsCompressionEnabled = "Enabled"
)

// PossibleRuleIsCompressionEnabledValues returns the possible values for the RuleIsCompressionEnabled const type.
func PossibleRuleIsCompressionEnabledValues() []RuleIsCompressionEnabled {
	return []RuleIsCompressionEnabled{
		RuleIsCompressionEnabledDisabled,
		RuleIsCompressionEnabledEnabled,
	}
}

// RuleQueryStringCachingBehavior - Defines how Frontdoor caches requests that include query strings. You can ignore any query
// strings when caching, ignore specific query strings, cache every request with a unique URL, or cache specific query strings.
type RuleQueryStringCachingBehavior string

const (
	RuleQueryStringCachingBehaviorIgnoreQueryString            RuleQueryStringCachingBehavior = "IgnoreQueryString"
	RuleQueryStringCachingBehaviorIgnoreSpecifiedQueryStrings  RuleQueryStringCachingBehavior = "IgnoreSpecifiedQueryStrings"
	RuleQueryStringCachingBehaviorIncludeSpecifiedQueryStrings RuleQueryStringCachingBehavior = "IncludeSpecifiedQueryStrings"
	RuleQueryStringCachingBehaviorUseQueryString               RuleQueryStringCachingBehavior = "UseQueryString"
)

// PossibleRuleQueryStringCachingBehaviorValues returns the possible values for the RuleQueryStringCachingBehavior const type.
func PossibleRuleQueryStringCachingBehaviorValues() []RuleQueryStringCachingBehavior {
	return []RuleQueryStringCachingBehavior{
		RuleQueryStringCachingBehaviorIgnoreQueryString,
		RuleQueryStringCachingBehaviorIgnoreSpecifiedQueryStrings,
		RuleQueryStringCachingBehaviorIncludeSpecifiedQueryStrings,
		RuleQueryStringCachingBehaviorUseQueryString,
	}
}

// SKUName - Name of the pricing tier.
type SKUName string

const (
	SKUNameCustomVerizon                    SKUName = "Custom_Verizon"
	SKUNamePremiumAzureFrontDoor            SKUName = "Premium_AzureFrontDoor"
	SKUNamePremiumVerizon                   SKUName = "Premium_Verizon"
	SKUNameStandard955BandWidthChinaCdn     SKUName = "Standard_955BandWidth_ChinaCdn"
	SKUNameStandardAkamai                   SKUName = "Standard_Akamai"
	SKUNameStandardAvgBandWidthChinaCdn     SKUName = "Standard_AvgBandWidth_ChinaCdn"
	SKUNameStandardAzureFrontDoor           SKUName = "Standard_AzureFrontDoor"
	SKUNameStandardChinaCdn                 SKUName = "Standard_ChinaCdn"
	SKUNameStandardMicrosoft                SKUName = "Standard_Microsoft"
	SKUNameStandardPlus955BandWidthChinaCdn SKUName = "StandardPlus_955BandWidth_ChinaCdn"
	SKUNameStandardPlusAvgBandWidthChinaCdn SKUName = "StandardPlus_AvgBandWidth_ChinaCdn"
	SKUNameStandardPlusChinaCdn             SKUName = "StandardPlus_ChinaCdn"
	SKUNameStandardVerizon                  SKUName = "Standard_Verizon"
)

// PossibleSKUNameValues returns the possible values for the SKUName const type.
func PossibleSKUNameValues() []SKUName {
	return []SKUName{
		SKUNameCustomVerizon,
		SKUNamePremiumAzureFrontDoor,
		SKUNamePremiumVerizon,
		SKUNameStandard955BandWidthChinaCdn,
		SKUNameStandardAkamai,
		SKUNameStandardAvgBandWidthChinaCdn,
		SKUNameStandardAzureFrontDoor,
		SKUNameStandardChinaCdn,
		SKUNameStandardMicrosoft,
		SKUNameStandardPlus955BandWidthChinaCdn,
		SKUNameStandardPlusAvgBandWidthChinaCdn,
		SKUNameStandardPlusChinaCdn,
		SKUNameStandardVerizon,
	}
}

// SSLProtocol - The protocol of an established TLS connection.
type SSLProtocol string

const (
	SSLProtocolTLSv1  SSLProtocol = "TLSv1"
	SSLProtocolTLSv11 SSLProtocol = "TLSv1.1"
	SSLProtocolTLSv12 SSLProtocol = "TLSv1.2"
)

// PossibleSSLProtocolValues returns the possible values for the SSLProtocol const type.
func PossibleSSLProtocolValues() []SSLProtocol {
	return []SSLProtocol{
		SSLProtocolTLSv1,
		SSLProtocolTLSv11,
		SSLProtocolTLSv12,
	}
}

// SSLProtocolOperator - Describes operator to be matched
type SSLProtocolOperator string

const (
	SSLProtocolOperatorEqual SSLProtocolOperator = "Equal"
)

// PossibleSSLProtocolOperatorValues returns the possible values for the SSLProtocolOperator const type.
func PossibleSSLProtocolOperatorValues() []SSLProtocolOperator {
	return []SSLProtocolOperator{
		SSLProtocolOperatorEqual,
	}
}

// ScrubbingRuleEntryMatchOperator - When matchVariable is a collection, operate on the selector to specify which elements
// in the collection this rule applies to.
type ScrubbingRuleEntryMatchOperator string

const (
	ScrubbingRuleEntryMatchOperatorEqualsAny ScrubbingRuleEntryMatchOperator = "EqualsAny"
)

// PossibleScrubbingRuleEntryMatchOperatorValues returns the possible values for the ScrubbingRuleEntryMatchOperator const type.
func PossibleScrubbingRuleEntryMatchOperatorValues() []ScrubbingRuleEntryMatchOperator {
	return []ScrubbingRuleEntryMatchOperator{
		ScrubbingRuleEntryMatchOperatorEqualsAny,
	}
}

// ScrubbingRuleEntryMatchVariable - The variable to be scrubbed from the logs.
type ScrubbingRuleEntryMatchVariable string

const (
	ScrubbingRuleEntryMatchVariableQueryStringArgNames ScrubbingRuleEntryMatchVariable = "QueryStringArgNames"
	ScrubbingRuleEntryMatchVariableRequestIPAddress    ScrubbingRuleEntryMatchVariable = "RequestIPAddress"
	ScrubbingRuleEntryMatchVariableRequestURI          ScrubbingRuleEntryMatchVariable = "RequestUri"
)

// PossibleScrubbingRuleEntryMatchVariableValues returns the possible values for the ScrubbingRuleEntryMatchVariable const type.
func PossibleScrubbingRuleEntryMatchVariableValues() []ScrubbingRuleEntryMatchVariable {
	return []ScrubbingRuleEntryMatchVariable{
		ScrubbingRuleEntryMatchVariableQueryStringArgNames,
		ScrubbingRuleEntryMatchVariableRequestIPAddress,
		ScrubbingRuleEntryMatchVariableRequestURI,
	}
}

// ScrubbingRuleEntryState - Defines the state of a log scrubbing rule. Default value is enabled.
type ScrubbingRuleEntryState string

const (
	ScrubbingRuleEntryStateDisabled ScrubbingRuleEntryState = "Disabled"
	ScrubbingRuleEntryStateEnabled  ScrubbingRuleEntryState = "Enabled"
)

// PossibleScrubbingRuleEntryStateValues returns the possible values for the ScrubbingRuleEntryState const type.
func PossibleScrubbingRuleEntryStateValues() []ScrubbingRuleEntryState {
	return []ScrubbingRuleEntryState{
		ScrubbingRuleEntryStateDisabled,
		ScrubbingRuleEntryStateEnabled,
	}
}

// SecretType - The type of the secret resource.
type SecretType string

const (
	SecretTypeAzureFirstPartyManagedCertificate SecretType = "AzureFirstPartyManagedCertificate"
	SecretTypeCustomerCertificate               SecretType = "CustomerCertificate"
	SecretTypeManagedCertificate                SecretType = "ManagedCertificate"
	SecretTypeURLSigningKey                     SecretType = "UrlSigningKey"
)

// PossibleSecretTypeValues returns the possible values for the SecretType const type.
func PossibleSecretTypeValues() []SecretType {
	return []SecretType{
		SecretTypeAzureFirstPartyManagedCertificate,
		SecretTypeCustomerCertificate,
		SecretTypeManagedCertificate,
		SecretTypeURLSigningKey,
	}
}

// SecurityPolicyType - The type of the Security policy to create.
type SecurityPolicyType string

const (
	SecurityPolicyTypeWebApplicationFirewall SecurityPolicyType = "WebApplicationFirewall"
)

// PossibleSecurityPolicyTypeValues returns the possible values for the SecurityPolicyType const type.
func PossibleSecurityPolicyTypeValues() []SecurityPolicyType {
	return []SecurityPolicyType{
		SecurityPolicyTypeWebApplicationFirewall,
	}
}

// ServerPortOperator - Describes operator to be matched
type ServerPortOperator string

const (
	ServerPortOperatorAny                ServerPortOperator = "Any"
	ServerPortOperatorBeginsWith         ServerPortOperator = "BeginsWith"
	ServerPortOperatorContains           ServerPortOperator = "Contains"
	ServerPortOperatorEndsWith           ServerPortOperator = "EndsWith"
	ServerPortOperatorEqual              ServerPortOperator = "Equal"
	ServerPortOperatorGreaterThan        ServerPortOperator = "GreaterThan"
	ServerPortOperatorGreaterThanOrEqual ServerPortOperator = "GreaterThanOrEqual"
	ServerPortOperatorLessThan           ServerPortOperator = "LessThan"
	ServerPortOperatorLessThanOrEqual    ServerPortOperator = "LessThanOrEqual"
	ServerPortOperatorRegEx              ServerPortOperator = "RegEx"
)

// PossibleServerPortOperatorValues returns the possible values for the ServerPortOperator const type.
func PossibleServerPortOperatorValues() []ServerPortOperator {
	return []ServerPortOperator{
		ServerPortOperatorAny,
		ServerPortOperatorBeginsWith,
		ServerPortOperatorContains,
		ServerPortOperatorEndsWith,
		ServerPortOperatorEqual,
		ServerPortOperatorGreaterThan,
		ServerPortOperatorGreaterThanOrEqual,
		ServerPortOperatorLessThan,
		ServerPortOperatorLessThanOrEqual,
		ServerPortOperatorRegEx,
	}
}

// SharedPrivateLinkResourceStatus - Status of the shared private link resource. Can be Pending, Approved, Rejected, Disconnected,
// or Timeout.
type SharedPrivateLinkResourceStatus string

const (
	SharedPrivateLinkResourceStatusApproved     SharedPrivateLinkResourceStatus = "Approved"
	SharedPrivateLinkResourceStatusDisconnected SharedPrivateLinkResourceStatus = "Disconnected"
	SharedPrivateLinkResourceStatusPending      SharedPrivateLinkResourceStatus = "Pending"
	SharedPrivateLinkResourceStatusRejected     SharedPrivateLinkResourceStatus = "Rejected"
	SharedPrivateLinkResourceStatusTimeout      SharedPrivateLinkResourceStatus = "Timeout"
)

// PossibleSharedPrivateLinkResourceStatusValues returns the possible values for the SharedPrivateLinkResourceStatus const type.
func PossibleSharedPrivateLinkResourceStatusValues() []SharedPrivateLinkResourceStatus {
	return []SharedPrivateLinkResourceStatus{
		SharedPrivateLinkResourceStatusApproved,
		SharedPrivateLinkResourceStatusDisconnected,
		SharedPrivateLinkResourceStatusPending,
		SharedPrivateLinkResourceStatusRejected,
		SharedPrivateLinkResourceStatusTimeout,
	}
}

// SocketAddrOperator - Describes operator to be matched
type SocketAddrOperator string

const (
	SocketAddrOperatorAny     SocketAddrOperator = "Any"
	SocketAddrOperatorIPMatch SocketAddrOperator = "IPMatch"
)

// PossibleSocketAddrOperatorValues returns the possible values for the SocketAddrOperator const type.
func PossibleSocketAddrOperatorValues() []SocketAddrOperator {
	return []SocketAddrOperator{
		SocketAddrOperatorAny,
		SocketAddrOperatorIPMatch,
	}
}

// Status - The validation status.
type Status string

const (
	StatusAccessDenied       Status = "AccessDenied"
	StatusCertificateExpired Status = "CertificateExpired"
	StatusInvalid            Status = "Invalid"
	StatusValid              Status = "Valid"
)

// PossibleStatusValues returns the possible values for the Status const type.
func PossibleStatusValues() []Status {
	return []Status{
		StatusAccessDenied,
		StatusCertificateExpired,
		StatusInvalid,
		StatusValid,
	}
}

// Transform - Describes what transforms are applied before matching
type Transform string

const (
	TransformLowercase   Transform = "Lowercase"
	TransformRemoveNulls Transform = "RemoveNulls"
	TransformTrim        Transform = "Trim"
	TransformURLDecode   Transform = "UrlDecode"
	TransformURLEncode   Transform = "UrlEncode"
	TransformUppercase   Transform = "Uppercase"
)

// PossibleTransformValues returns the possible values for the Transform const type.
func PossibleTransformValues() []Transform {
	return []Transform{
		TransformLowercase,
		TransformRemoveNulls,
		TransformTrim,
		TransformURLDecode,
		TransformURLEncode,
		TransformUppercase,
	}
}

// TransformType - Describes what transforms were applied before matching.
type TransformType string

const (
	TransformTypeLowercase   TransformType = "Lowercase"
	TransformTypeRemoveNulls TransformType = "RemoveNulls"
	TransformTypeTrim        TransformType = "Trim"
	TransformTypeURLDecode   TransformType = "UrlDecode"
	TransformTypeURLEncode   TransformType = "UrlEncode"
	TransformTypeUppercase   TransformType = "Uppercase"
)

// PossibleTransformTypeValues returns the possible values for the TransformType const type.
func PossibleTransformTypeValues() []TransformType {
	return []TransformType{
		TransformTypeLowercase,
		TransformTypeRemoveNulls,
		TransformTypeTrim,
		TransformTypeURLDecode,
		TransformTypeURLEncode,
		TransformTypeUppercase,
	}
}

// URLFileExtensionOperator - Describes operator to be matched
type URLFileExtensionOperator string

const (
	URLFileExtensionOperatorAny                URLFileExtensionOperator = "Any"
	URLFileExtensionOperatorBeginsWith         URLFileExtensionOperator = "BeginsWith"
	URLFileExtensionOperatorContains           URLFileExtensionOperator = "Contains"
	URLFileExtensionOperatorEndsWith           URLFileExtensionOperator = "EndsWith"
	URLFileExtensionOperatorEqual              URLFileExtensionOperator = "Equal"
	URLFileExtensionOperatorGreaterThan        URLFileExtensionOperator = "GreaterThan"
	URLFileExtensionOperatorGreaterThanOrEqual URLFileExtensionOperator = "GreaterThanOrEqual"
	URLFileExtensionOperatorLessThan           URLFileExtensionOperator = "LessThan"
	URLFileExtensionOperatorLessThanOrEqual    URLFileExtensionOperator = "LessThanOrEqual"
	URLFileExtensionOperatorRegEx              URLFileExtensionOperator = "RegEx"
)

// PossibleURLFileExtensionOperatorValues returns the possible values for the URLFileExtensionOperator const type.
func PossibleURLFileExtensionOperatorValues() []URLFileExtensionOperator {
	return []URLFileExtensionOperator{
		URLFileExtensionOperatorAny,
		URLFileExtensionOperatorBeginsWith,
		URLFileExtensionOperatorContains,
		URLFileExtensionOperatorEndsWith,
		URLFileExtensionOperatorEqual,
		URLFileExtensionOperatorGreaterThan,
		URLFileExtensionOperatorGreaterThanOrEqual,
		URLFileExtensionOperatorLessThan,
		URLFileExtensionOperatorLessThanOrEqual,
		URLFileExtensionOperatorRegEx,
	}
}

// URLFileNameOperator - Describes operator to be matched
type URLFileNameOperator string

const (
	URLFileNameOperatorAny                URLFileNameOperator = "Any"
	URLFileNameOperatorBeginsWith         URLFileNameOperator = "BeginsWith"
	URLFileNameOperatorContains           URLFileNameOperator = "Contains"
	URLFileNameOperatorEndsWith           URLFileNameOperator = "EndsWith"
	URLFileNameOperatorEqual              URLFileNameOperator = "Equal"
	URLFileNameOperatorGreaterThan        URLFileNameOperator = "GreaterThan"
	URLFileNameOperatorGreaterThanOrEqual URLFileNameOperator = "GreaterThanOrEqual"
	URLFileNameOperatorLessThan           URLFileNameOperator = "LessThan"
	URLFileNameOperatorLessThanOrEqual    URLFileNameOperator = "LessThanOrEqual"
	URLFileNameOperatorRegEx              URLFileNameOperator = "RegEx"
)

// PossibleURLFileNameOperatorValues returns the possible values for the URLFileNameOperator const type.
func PossibleURLFileNameOperatorValues() []URLFileNameOperator {
	return []URLFileNameOperator{
		URLFileNameOperatorAny,
		URLFileNameOperatorBeginsWith,
		URLFileNameOperatorContains,
		URLFileNameOperatorEndsWith,
		URLFileNameOperatorEqual,
		URLFileNameOperatorGreaterThan,
		URLFileNameOperatorGreaterThanOrEqual,
		URLFileNameOperatorLessThan,
		URLFileNameOperatorLessThanOrEqual,
		URLFileNameOperatorRegEx,
	}
}

// URLPathOperator - Describes operator to be matched
type URLPathOperator string

const (
	URLPathOperatorAny                URLPathOperator = "Any"
	URLPathOperatorBeginsWith         URLPathOperator = "BeginsWith"
	URLPathOperatorContains           URLPathOperator = "Contains"
	URLPathOperatorEndsWith           URLPathOperator = "EndsWith"
	URLPathOperatorEqual              URLPathOperator = "Equal"
	URLPathOperatorGreaterThan        URLPathOperator = "GreaterThan"
	URLPathOperatorGreaterThanOrEqual URLPathOperator = "GreaterThanOrEqual"
	URLPathOperatorLessThan           URLPathOperator = "LessThan"
	URLPathOperatorLessThanOrEqual    URLPathOperator = "LessThanOrEqual"
	URLPathOperatorRegEx              URLPathOperator = "RegEx"
	URLPathOperatorWildcard           URLPathOperator = "Wildcard"
)

// PossibleURLPathOperatorValues returns the possible values for the URLPathOperator const type.
func PossibleURLPathOperatorValues() []URLPathOperator {
	return []URLPathOperator{
		URLPathOperatorAny,
		URLPathOperatorBeginsWith,
		URLPathOperatorContains,
		URLPathOperatorEndsWith,
		URLPathOperatorEqual,
		URLPathOperatorGreaterThan,
		URLPathOperatorGreaterThanOrEqual,
		URLPathOperatorLessThan,
		URLPathOperatorLessThanOrEqual,
		URLPathOperatorRegEx,
		URLPathOperatorWildcard,
	}
}

// UpdateRule - Describes the action that shall be taken when the certificate is updated in Key Vault.
type UpdateRule string

const (
	UpdateRuleNoAction UpdateRule = "NoAction"
)

// PossibleUpdateRuleValues returns the possible values for the UpdateRule const type.
func PossibleUpdateRuleValues() []UpdateRule {
	return []UpdateRule{
		UpdateRuleNoAction,
	}
}

// UsageUnit - An enum describing the unit of measurement.
type UsageUnit string

const (
	UsageUnitCount UsageUnit = "Count"
)

// PossibleUsageUnitValues returns the possible values for the UsageUnit const type.
func PossibleUsageUnitValues() []UsageUnit {
	return []UsageUnit{
		UsageUnitCount,
	}
}

type WafAction string

const (
	WafActionAllow    WafAction = "allow"
	WafActionBlock    WafAction = "block"
	WafActionLog      WafAction = "log"
	WafActionRedirect WafAction = "redirect"
)

// PossibleWafActionValues returns the possible values for the WafAction const type.
func PossibleWafActionValues() []WafAction {
	return []WafAction{
		WafActionAllow,
		WafActionBlock,
		WafActionLog,
		WafActionRedirect,
	}
}

type WafGranularity string

const (
	WafGranularityP1D  WafGranularity = "P1D"
	WafGranularityPT1H WafGranularity = "PT1H"
	WafGranularityPT5M WafGranularity = "PT5M"
)

// PossibleWafGranularityValues returns the possible values for the WafGranularity const type.
func PossibleWafGranularityValues() []WafGranularity {
	return []WafGranularity{
		WafGranularityP1D,
		WafGranularityPT1H,
		WafGranularityPT5M,
	}
}

// WafMatchVariable - Match variable to compare against.
type WafMatchVariable string

const (
	WafMatchVariableCookies       WafMatchVariable = "Cookies"
	WafMatchVariablePostArgs      WafMatchVariable = "PostArgs"
	WafMatchVariableQueryString   WafMatchVariable = "QueryString"
	WafMatchVariableRemoteAddr    WafMatchVariable = "RemoteAddr"
	WafMatchVariableRequestBody   WafMatchVariable = "RequestBody"
	WafMatchVariableRequestHeader WafMatchVariable = "RequestHeader"
	WafMatchVariableRequestMethod WafMatchVariable = "RequestMethod"
	WafMatchVariableRequestURI    WafMatchVariable = "RequestUri"
	WafMatchVariableSocketAddr    WafMatchVariable = "SocketAddr"
)

// PossibleWafMatchVariableValues returns the possible values for the WafMatchVariable const type.
func PossibleWafMatchVariableValues() []WafMatchVariable {
	return []WafMatchVariable{
		WafMatchVariableCookies,
		WafMatchVariablePostArgs,
		WafMatchVariableQueryString,
		WafMatchVariableRemoteAddr,
		WafMatchVariableRequestBody,
		WafMatchVariableRequestHeader,
		WafMatchVariableRequestMethod,
		WafMatchVariableRequestURI,
		WafMatchVariableSocketAddr,
	}
}

type WafMetric string

const (
	WafMetricClientRequestCount WafMetric = "clientRequestCount"
)

// PossibleWafMetricValues returns the possible values for the WafMetric const type.
func PossibleWafMetricValues() []WafMetric {
	return []WafMetric{
		WafMetricClientRequestCount,
	}
}

type WafMetricsGranularity string

const (
	WafMetricsGranularityP1D  WafMetricsGranularity = "P1D"
	WafMetricsGranularityPT1H WafMetricsGranularity = "PT1H"
	WafMetricsGranularityPT5M WafMetricsGranularity = "PT5M"
)

// PossibleWafMetricsGranularityValues returns the possible values for the WafMetricsGranularity const type.
func PossibleWafMetricsGranularityValues() []WafMetricsGranularity {
	return []WafMetricsGranularity{
		WafMetricsGranularityP1D,
		WafMetricsGranularityPT1H,
		WafMetricsGranularityPT5M,
	}
}

type WafMetricsSeriesUnit string

const (
	WafMetricsSeriesUnitCount WafMetricsSeriesUnit = "count"
)

// PossibleWafMetricsSeriesUnitValues returns the possible values for the WafMetricsSeriesUnit const type.
func PossibleWafMetricsSeriesUnitValues() []WafMetricsSeriesUnit {
	return []WafMetricsSeriesUnit{
		WafMetricsSeriesUnitCount,
	}
}

type WafRankingGroupBy string

const (
	WafRankingGroupByCustomDomain   WafRankingGroupBy = "customDomain"
	WafRankingGroupByHTTPStatusCode WafRankingGroupBy = "httpStatusCode"
)

// PossibleWafRankingGroupByValues returns the possible values for the WafRankingGroupBy const type.
func PossibleWafRankingGroupByValues() []WafRankingGroupBy {
	return []WafRankingGroupBy{
		WafRankingGroupByCustomDomain,
		WafRankingGroupByHTTPStatusCode,
	}
}

type WafRankingType string

const (
	WafRankingTypeAction          WafRankingType = "action"
	WafRankingTypeClientIP        WafRankingType = "clientIp"
	WafRankingTypeCountryOrRegion WafRankingType = "countryOrRegion"
	WafRankingTypeRuleGroup       WafRankingType = "ruleGroup"
	WafRankingTypeRuleID          WafRankingType = "ruleId"
	WafRankingTypeRuleType        WafRankingType = "ruleType"
	WafRankingTypeURL             WafRankingType = "url"
	WafRankingTypeUserAgent       WafRankingType = "userAgent"
)

// PossibleWafRankingTypeValues returns the possible values for the WafRankingType const type.
func PossibleWafRankingTypeValues() []WafRankingType {
	return []WafRankingType{
		WafRankingTypeAction,
		WafRankingTypeClientIP,
		WafRankingTypeCountryOrRegion,
		WafRankingTypeRuleGroup,
		WafRankingTypeRuleID,
		WafRankingTypeRuleType,
		WafRankingTypeURL,
		WafRankingTypeUserAgent,
	}
}

type WafRuleType string

const (
	WafRuleTypeBot     WafRuleType = "bot"
	WafRuleTypeCustom  WafRuleType = "custom"
	WafRuleTypeManaged WafRuleType = "managed"
)

// PossibleWafRuleTypeValues returns the possible values for the WafRuleType const type.
func PossibleWafRuleTypeValues() []WafRuleType {
	return []WafRuleType{
		WafRuleTypeBot,
		WafRuleTypeCustom,
		WafRuleTypeManaged,
	}
}
