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

import "encoding/json"

type ProfilesEndpoint_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`

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

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

	// Properties: The JSON object that contains the properties required to create an endpoint.
	Properties *EndpointProperties_STATUS `json:"properties,omitempty"`

	// SystemData: Read only system data
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

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

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

// The JSON object that contains the properties required to create an endpoint.
type EndpointProperties_STATUS struct {
	// ContentTypesToCompress: List of content types on which compression applies. The value should be a valid MIME type.
	ContentTypesToCompress []string `json:"contentTypesToCompress,omitempty"`

	// CustomDomains: The custom domains under the endpoint.
	CustomDomains []DeepCreatedCustomDomain_STATUS `json:"customDomains,omitempty"`

	// DefaultOriginGroup: A reference to the origin group.
	DefaultOriginGroup *ResourceReference_STATUS `json:"defaultOriginGroup,omitempty"`

	// DeliveryPolicy: A policy that specifies the delivery rules to be used for an endpoint.
	DeliveryPolicy *EndpointProperties_DeliveryPolicy_STATUS `json:"deliveryPolicy,omitempty"`

	// GeoFilters: List of rules defining the user's geo access within a CDN endpoint. Each geo filter defines an access rule
	// to a specified path or content, e.g. block APAC for path /pictures/
	GeoFilters []GeoFilter_STATUS `json:"geoFilters,omitempty"`

	// HostName: The host name of the endpoint structured as {endpointName}.{DNSZone}, e.g. contoso.azureedge.net
	HostName *string `json:"hostName,omitempty"`

	// IsCompressionEnabled: Indicates whether content compression is enabled on CDN. Default value is false. If compression is
	// enabled, content will be served as compressed if user requests for a compressed version. Content won't be compressed on
	// CDN when requested content is smaller than 1 byte or larger than 1 MB.
	IsCompressionEnabled *bool `json:"isCompressionEnabled,omitempty"`

	// IsHttpAllowed: Indicates whether HTTP traffic is allowed on the endpoint. Default value is true. At least one protocol
	// (HTTP or HTTPS) must be allowed.
	IsHttpAllowed *bool `json:"isHttpAllowed,omitempty"`

	// IsHttpsAllowed: Indicates whether HTTPS traffic is allowed on the endpoint. Default value is true. At least one protocol
	// (HTTP or HTTPS) must be allowed.
	IsHttpsAllowed *bool `json:"isHttpsAllowed,omitempty"`

	// OptimizationType: Specifies what scenario the customer wants this CDN endpoint to optimize for, e.g. Download, Media
	// services. With this information, CDN can apply scenario driven optimization.
	OptimizationType *OptimizationType_STATUS `json:"optimizationType,omitempty"`

	// OriginGroups: The origin groups comprising of origins that are used for load balancing the traffic based on availability.
	OriginGroups []DeepCreatedOriginGroup_STATUS `json:"originGroups,omitempty"`

	// OriginHostHeader: The host header value sent to the origin with each request. This property at Endpoint is only allowed
	// when endpoint uses single origin and can be overridden by the same property specified at origin.If you leave this blank,
	// the request hostname determines this value. Azure CDN origins, such as Web Apps, Blob Storage, and Cloud Services
	// require this host header value to match the origin hostname by default.
	OriginHostHeader *string `json:"originHostHeader,omitempty"`

	// OriginPath: A directory path on the origin that CDN can use to retrieve content from, e.g.
	// contoso.cloudapp.net/originpath.
	OriginPath *string `json:"originPath,omitempty"`

	// Origins: The source of the content being delivered via CDN.
	Origins []DeepCreatedOrigin_STATUS `json:"origins,omitempty"`

	// ProbePath: Path to a file hosted on the origin which helps accelerate delivery of the dynamic content and calculate the
	// most optimal routes for the CDN. This is relative to the origin path. This property is only relevant when using a single
	// origin.
	ProbePath *string `json:"probePath,omitempty"`

	// ProvisioningState: Provisioning status of the endpoint.
	ProvisioningState *EndpointProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// 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.
	QueryStringCachingBehavior *QueryStringCachingBehavior_STATUS `json:"queryStringCachingBehavior,omitempty"`

	// ResourceState: Resource status of the endpoint.
	ResourceState *EndpointProperties_ResourceState_STATUS `json:"resourceState,omitempty"`

	// UrlSigningKeys: List of keys used to validate the signed URL hashes.
	UrlSigningKeys []UrlSigningKey_STATUS `json:"urlSigningKeys,omitempty"`

	// WebApplicationFirewallPolicyLink: Defines the Web Application Firewall policy for the endpoint (if applicable)
	WebApplicationFirewallPolicyLink *EndpointProperties_WebApplicationFirewallPolicyLink_STATUS `json:"webApplicationFirewallPolicyLink,omitempty"`
}

// Custom domains created on the CDN endpoint.
type DeepCreatedCustomDomain_STATUS struct {
	// Name: Custom domain name.
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the custom domain created on the CDN endpoint.
	Properties *DeepCreatedCustomDomainProperties_STATUS `json:"properties,omitempty"`
}

// The main origin of CDN content which is added when creating a CDN endpoint.
type DeepCreatedOrigin_STATUS struct {
	// Name: Origin name which must be unique within the endpoint.
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the origin created on the CDN endpoint.
	Properties *DeepCreatedOriginProperties_STATUS `json:"properties,omitempty"`
}

// The origin group for CDN content which is added when creating a CDN endpoint. Traffic is sent to the origins within the
// origin group based on origin health.
type DeepCreatedOriginGroup_STATUS struct {
	// Name: Origin group name which must be unique within the endpoint.
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the origin group created on the CDN endpoint.
	Properties *DeepCreatedOriginGroupProperties_STATUS `json:"properties,omitempty"`
}

type EndpointProperties_DeliveryPolicy_STATUS struct {
	// Description: User-friendly description of the policy.
	Description *string `json:"description,omitempty"`

	// Rules: A list of the delivery rules.
	Rules []DeliveryRule_STATUS `json:"rules,omitempty"`
}

type EndpointProperties_ProvisioningState_STATUS string

const (
	EndpointProperties_ProvisioningState_STATUS_Creating  = EndpointProperties_ProvisioningState_STATUS("Creating")
	EndpointProperties_ProvisioningState_STATUS_Deleting  = EndpointProperties_ProvisioningState_STATUS("Deleting")
	EndpointProperties_ProvisioningState_STATUS_Failed    = EndpointProperties_ProvisioningState_STATUS("Failed")
	EndpointProperties_ProvisioningState_STATUS_Succeeded = EndpointProperties_ProvisioningState_STATUS("Succeeded")
	EndpointProperties_ProvisioningState_STATUS_Updating  = EndpointProperties_ProvisioningState_STATUS("Updating")
)

// Mapping from string to EndpointProperties_ProvisioningState_STATUS
var endpointProperties_ProvisioningState_STATUS_Values = map[string]EndpointProperties_ProvisioningState_STATUS{
	"creating":  EndpointProperties_ProvisioningState_STATUS_Creating,
	"deleting":  EndpointProperties_ProvisioningState_STATUS_Deleting,
	"failed":    EndpointProperties_ProvisioningState_STATUS_Failed,
	"succeeded": EndpointProperties_ProvisioningState_STATUS_Succeeded,
	"updating":  EndpointProperties_ProvisioningState_STATUS_Updating,
}

type EndpointProperties_ResourceState_STATUS string

const (
	EndpointProperties_ResourceState_STATUS_Creating = EndpointProperties_ResourceState_STATUS("Creating")
	EndpointProperties_ResourceState_STATUS_Deleting = EndpointProperties_ResourceState_STATUS("Deleting")
	EndpointProperties_ResourceState_STATUS_Running  = EndpointProperties_ResourceState_STATUS("Running")
	EndpointProperties_ResourceState_STATUS_Starting = EndpointProperties_ResourceState_STATUS("Starting")
	EndpointProperties_ResourceState_STATUS_Stopped  = EndpointProperties_ResourceState_STATUS("Stopped")
	EndpointProperties_ResourceState_STATUS_Stopping = EndpointProperties_ResourceState_STATUS("Stopping")
)

// Mapping from string to EndpointProperties_ResourceState_STATUS
var endpointProperties_ResourceState_STATUS_Values = map[string]EndpointProperties_ResourceState_STATUS{
	"creating": EndpointProperties_ResourceState_STATUS_Creating,
	"deleting": EndpointProperties_ResourceState_STATUS_Deleting,
	"running":  EndpointProperties_ResourceState_STATUS_Running,
	"starting": EndpointProperties_ResourceState_STATUS_Starting,
	"stopped":  EndpointProperties_ResourceState_STATUS_Stopped,
	"stopping": EndpointProperties_ResourceState_STATUS_Stopping,
}

type EndpointProperties_WebApplicationFirewallPolicyLink_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Rules defining user's geo access within a CDN endpoint.
type GeoFilter_STATUS struct {
	// Action: Action of the geo filter, i.e. allow or block access.
	Action *GeoFilter_Action_STATUS `json:"action,omitempty"`

	// CountryCodes: Two letter country or region codes defining user country or region access in a geo filter, e.g. AU, MX, US.
	CountryCodes []string `json:"countryCodes,omitempty"`

	// RelativePath: Relative path applicable to geo filter. (e.g. '/mypictures', '/mypicture/kitty.jpg', and etc.)
	RelativePath *string `json:"relativePath,omitempty"`
}

// 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_STATUS string

const (
	OptimizationType_STATUS_DynamicSiteAcceleration     = OptimizationType_STATUS("DynamicSiteAcceleration")
	OptimizationType_STATUS_GeneralMediaStreaming       = OptimizationType_STATUS("GeneralMediaStreaming")
	OptimizationType_STATUS_GeneralWebDelivery          = OptimizationType_STATUS("GeneralWebDelivery")
	OptimizationType_STATUS_LargeFileDownload           = OptimizationType_STATUS("LargeFileDownload")
	OptimizationType_STATUS_VideoOnDemandMediaStreaming = OptimizationType_STATUS("VideoOnDemandMediaStreaming")
)

// Mapping from string to OptimizationType_STATUS
var optimizationType_STATUS_Values = map[string]OptimizationType_STATUS{
	"dynamicsiteacceleration":     OptimizationType_STATUS_DynamicSiteAcceleration,
	"generalmediastreaming":       OptimizationType_STATUS_GeneralMediaStreaming,
	"generalwebdelivery":          OptimizationType_STATUS_GeneralWebDelivery,
	"largefiledownload":           OptimizationType_STATUS_LargeFileDownload,
	"videoondemandmediastreaming": OptimizationType_STATUS_VideoOnDemandMediaStreaming,
}

// 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_STATUS string

const (
	QueryStringCachingBehavior_STATUS_BypassCaching     = QueryStringCachingBehavior_STATUS("BypassCaching")
	QueryStringCachingBehavior_STATUS_IgnoreQueryString = QueryStringCachingBehavior_STATUS("IgnoreQueryString")
	QueryStringCachingBehavior_STATUS_NotSet            = QueryStringCachingBehavior_STATUS("NotSet")
	QueryStringCachingBehavior_STATUS_UseQueryString    = QueryStringCachingBehavior_STATUS("UseQueryString")
)

// Mapping from string to QueryStringCachingBehavior_STATUS
var queryStringCachingBehavior_STATUS_Values = map[string]QueryStringCachingBehavior_STATUS{
	"bypasscaching":     QueryStringCachingBehavior_STATUS_BypassCaching,
	"ignorequerystring": QueryStringCachingBehavior_STATUS_IgnoreQueryString,
	"notset":            QueryStringCachingBehavior_STATUS_NotSet,
	"usequerystring":    QueryStringCachingBehavior_STATUS_UseQueryString,
}

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

// Url signing key
type UrlSigningKey_STATUS struct {
	// KeyId: Defines the customer defined key Id. This id will exist in the incoming request to indicate the key used to form
	// the hash.
	KeyId *string `json:"keyId,omitempty"`

	// KeySourceParameters: Defines the parameters for using customer key vault for Url Signing Key.
	KeySourceParameters *KeyVaultSigningKeyParameters_STATUS `json:"keySourceParameters,omitempty"`
}

// Properties of the custom domain created on the CDN endpoint.
type DeepCreatedCustomDomainProperties_STATUS struct {
	// HostName: The host name of the custom domain. Must be a domain name.
	HostName *string `json:"hostName,omitempty"`

	// ValidationData: Special validation or data may be required when delivering CDN to some regions due to local compliance
	// reasons. E.g. ICP license number of a custom domain is required to deliver content in China.
	ValidationData *string `json:"validationData,omitempty"`
}

// Properties of the origin group created on the CDN endpoint.
type DeepCreatedOriginGroupProperties_STATUS struct {
	// HealthProbeSettings: Health probe settings to the origin that is used to determine the health of the origin.
	HealthProbeSettings *HealthProbeParameters_STATUS `json:"healthProbeSettings,omitempty"`

	// Origins: The source of the content being delivered via CDN within given origin group.
	Origins []ResourceReference_STATUS `json:"origins,omitempty"`

	// ResponseBasedOriginErrorDetectionSettings: The JSON object that contains the properties to determine origin health using
	// real requests/responses.This property is currently not supported.
	ResponseBasedOriginErrorDetectionSettings *ResponseBasedOriginErrorDetectionParameters_STATUS `json:"responseBasedOriginErrorDetectionSettings,omitempty"`

	// TrafficRestorationTimeToHealedOrNewEndpointsInMinutes: Time in minutes to shift the traffic to the endpoint gradually
	// when an unhealthy endpoint comes healthy or a new endpoint is added. Default is 10 mins. This property is currently not
	// supported.
	TrafficRestorationTimeToHealedOrNewEndpointsInMinutes *int `json:"trafficRestorationTimeToHealedOrNewEndpointsInMinutes,omitempty"`
}

// Properties of the origin created on the CDN endpoint.
type DeepCreatedOriginProperties_STATUS struct {
	// Enabled: Origin is enabled for load balancing or not. By default, origin is always enabled.
	Enabled *bool `json:"enabled,omitempty"`

	// HostName: The address of the origin. It can be a domain name, IPv4 address, or IPv6 address. This should be unique
	// across all origins in an endpoint.
	HostName *string `json:"hostName,omitempty"`

	// HttpPort: The value of the HTTP port. Must be between 1 and 65535.
	HttpPort *int `json:"httpPort,omitempty"`

	// HttpsPort: The value of the HTTPS port. Must be between 1 and 65535.
	HttpsPort *int `json:"httpsPort,omitempty"`

	// OriginHostHeader: The host header value sent to the origin with each request. If you leave this blank, the request
	// hostname determines this value. Azure CDN origins, such as Web Apps, Blob Storage, and Cloud Services require this host
	// header value to match the origin hostname by default.
	OriginHostHeader *string `json:"originHostHeader,omitempty"`

	// Priority: Priority of origin in given origin group for load balancing. Higher priorities will not be used for load
	// balancing if any lower priority origin is healthy.Must be between 1 and 5.
	Priority *int `json:"priority,omitempty"`

	// PrivateEndpointStatus: The approval status for the connection to the Private Link
	PrivateEndpointStatus *PrivateEndpointStatus_STATUS `json:"privateEndpointStatus,omitempty"`

	// PrivateLinkAlias: The Alias of the Private Link resource. Populating this optional field indicates that this origin is
	// 'Private'
	PrivateLinkAlias *string `json:"privateLinkAlias,omitempty"`

	// PrivateLinkApprovalMessage: A custom message to be included in the approval request to connect to the Private Link.
	PrivateLinkApprovalMessage *string `json:"privateLinkApprovalMessage,omitempty"`

	// PrivateLinkLocation: The location of the Private Link resource. Required only if 'privateLinkResourceId' is populated
	PrivateLinkLocation *string `json:"privateLinkLocation,omitempty"`

	// PrivateLinkResourceId: The Resource Id of the Private Link resource. Populating this optional field indicates that this
	// backend is 'Private'
	PrivateLinkResourceId *string `json:"privateLinkResourceId,omitempty"`

	// Weight: Weight of the origin in given origin group for load balancing. Must be between 1 and 1000
	Weight *int `json:"weight,omitempty"`
}

// A rule that specifies a set of actions and conditions
type DeliveryRule_STATUS struct {
	// Actions: A list of actions that are executed when all the conditions of a rule are satisfied.
	Actions []DeliveryRuleAction_STATUS `json:"actions,omitempty"`

	// Conditions: A list of conditions that must be matched for the actions to be executed
	Conditions []DeliveryRuleCondition_STATUS `json:"conditions,omitempty"`

	// Name: Name of the rule
	Name *string `json:"name,omitempty"`

	// Order: The order in which the rules are applied for the endpoint. Possible values {0,1,2,3,………}. A rule with a
	// lesser order will be applied before a rule with a greater order. Rule with order 0 is a special rule. It does not
	// require any condition and actions listed in it will always be applied.
	Order *int `json:"order,omitempty"`
}

type GeoFilter_Action_STATUS string

const (
	GeoFilter_Action_STATUS_Allow = GeoFilter_Action_STATUS("Allow")
	GeoFilter_Action_STATUS_Block = GeoFilter_Action_STATUS("Block")
)

// Mapping from string to GeoFilter_Action_STATUS
var geoFilter_Action_STATUS_Values = map[string]GeoFilter_Action_STATUS{
	"allow": GeoFilter_Action_STATUS_Allow,
	"block": GeoFilter_Action_STATUS_Block,
}

// Describes the parameters for using a user's KeyVault for URL Signing Key.
type KeyVaultSigningKeyParameters_STATUS struct {
	// ResourceGroupName: Resource group of the user's Key Vault containing the secret
	ResourceGroupName *string `json:"resourceGroupName,omitempty"`

	// SecretName: The name of secret in Key Vault.
	SecretName *string `json:"secretName,omitempty"`

	// SecretVersion: The version(GUID) of secret in Key Vault.
	SecretVersion *string `json:"secretVersion,omitempty"`

	// SubscriptionId: Subscription Id of the user's Key Vault containing the secret
	SubscriptionId *string                                       `json:"subscriptionId,omitempty"`
	TypeName       *KeyVaultSigningKeyParameters_TypeName_STATUS `json:"typeName,omitempty"`

	// VaultName: The name of the user's Key Vault containing the secret
	VaultName *string `json:"vaultName,omitempty"`
}

// An action for the delivery rule.
type DeliveryRuleAction_STATUS struct {
	// CacheExpiration: Mutually exclusive with all other properties
	CacheExpiration *DeliveryRuleCacheExpirationAction_STATUS `json:"cacheExpiration,omitempty"`

	// CacheKeyQueryString: Mutually exclusive with all other properties
	CacheKeyQueryString *DeliveryRuleCacheKeyQueryStringAction_STATUS `json:"cacheKeyQueryString,omitempty"`

	// ModifyRequestHeader: Mutually exclusive with all other properties
	ModifyRequestHeader *DeliveryRuleRequestHeaderAction_STATUS `json:"modifyRequestHeader,omitempty"`

	// ModifyResponseHeader: Mutually exclusive with all other properties
	ModifyResponseHeader *DeliveryRuleResponseHeaderAction_STATUS `json:"modifyResponseHeader,omitempty"`

	// OriginGroupOverride: Mutually exclusive with all other properties
	OriginGroupOverride *OriginGroupOverrideAction_STATUS `json:"originGroupOverride,omitempty"`

	// RouteConfigurationOverride: Mutually exclusive with all other properties
	RouteConfigurationOverride *DeliveryRuleRouteConfigurationOverrideAction_STATUS `json:"routeConfigurationOverride,omitempty"`

	// UrlRedirect: Mutually exclusive with all other properties
	UrlRedirect *UrlRedirectAction_STATUS `json:"urlRedirect,omitempty"`

	// UrlRewrite: Mutually exclusive with all other properties
	UrlRewrite *UrlRewriteAction_STATUS `json:"urlRewrite,omitempty"`

	// UrlSigning: Mutually exclusive with all other properties
	UrlSigning *UrlSigningAction_STATUS `json:"urlSigning,omitempty"`
}

// MarshalJSON defers JSON marshaling to the first non-nil property, because DeliveryRuleAction_STATUS represents a discriminated union (JSON OneOf)
func (action DeliveryRuleAction_STATUS) MarshalJSON() ([]byte, error) {
	if action.CacheExpiration != nil {
		return json.Marshal(action.CacheExpiration)
	}

	if action.CacheKeyQueryString != nil {
		return json.Marshal(action.CacheKeyQueryString)
	}

	if action.ModifyRequestHeader != nil {
		return json.Marshal(action.ModifyRequestHeader)
	}

	if action.ModifyResponseHeader != nil {
		return json.Marshal(action.ModifyResponseHeader)
	}

	if action.OriginGroupOverride != nil {
		return json.Marshal(action.OriginGroupOverride)
	}

	if action.RouteConfigurationOverride != nil {
		return json.Marshal(action.RouteConfigurationOverride)
	}

	if action.UrlRedirect != nil {
		return json.Marshal(action.UrlRedirect)
	}

	if action.UrlRewrite != nil {
		return json.Marshal(action.UrlRewrite)
	}

	if action.UrlSigning != nil {
		return json.Marshal(action.UrlSigning)
	}

	return nil, nil
}

// UnmarshalJSON unmarshals the DeliveryRuleAction_STATUS
func (action *DeliveryRuleAction_STATUS) UnmarshalJSON(data []byte) error {
	var rawJson map[string]interface{}
	err := json.Unmarshal(data, &rawJson)
	if err != nil {
		return err
	}
	discriminator := rawJson["name"]
	if discriminator == "CacheExpiration" {
		action.CacheExpiration = &DeliveryRuleCacheExpirationAction_STATUS{}
		return json.Unmarshal(data, action.CacheExpiration)
	}
	if discriminator == "CacheKeyQueryString" {
		action.CacheKeyQueryString = &DeliveryRuleCacheKeyQueryStringAction_STATUS{}
		return json.Unmarshal(data, action.CacheKeyQueryString)
	}
	if discriminator == "ModifyRequestHeader" {
		action.ModifyRequestHeader = &DeliveryRuleRequestHeaderAction_STATUS{}
		return json.Unmarshal(data, action.ModifyRequestHeader)
	}
	if discriminator == "ModifyResponseHeader" {
		action.ModifyResponseHeader = &DeliveryRuleResponseHeaderAction_STATUS{}
		return json.Unmarshal(data, action.ModifyResponseHeader)
	}
	if discriminator == "OriginGroupOverride" {
		action.OriginGroupOverride = &OriginGroupOverrideAction_STATUS{}
		return json.Unmarshal(data, action.OriginGroupOverride)
	}
	if discriminator == "RouteConfigurationOverride" {
		action.RouteConfigurationOverride = &DeliveryRuleRouteConfigurationOverrideAction_STATUS{}
		return json.Unmarshal(data, action.RouteConfigurationOverride)
	}
	if discriminator == "UrlRedirect" {
		action.UrlRedirect = &UrlRedirectAction_STATUS{}
		return json.Unmarshal(data, action.UrlRedirect)
	}
	if discriminator == "UrlRewrite" {
		action.UrlRewrite = &UrlRewriteAction_STATUS{}
		return json.Unmarshal(data, action.UrlRewrite)
	}
	if discriminator == "UrlSigning" {
		action.UrlSigning = &UrlSigningAction_STATUS{}
		return json.Unmarshal(data, action.UrlSigning)
	}

	// No error
	return nil
}

// A condition for the delivery rule.
type DeliveryRuleCondition_STATUS struct {
	// ClientPort: Mutually exclusive with all other properties
	ClientPort *DeliveryRuleClientPortCondition_STATUS `json:"clientPort,omitempty"`

	// Cookies: Mutually exclusive with all other properties
	Cookies *DeliveryRuleCookiesCondition_STATUS `json:"cookies,omitempty"`

	// HostName: Mutually exclusive with all other properties
	HostName *DeliveryRuleHostNameCondition_STATUS `json:"hostName,omitempty"`

	// HttpVersion: Mutually exclusive with all other properties
	HttpVersion *DeliveryRuleHttpVersionCondition_STATUS `json:"httpVersion,omitempty"`

	// IsDevice: Mutually exclusive with all other properties
	IsDevice *DeliveryRuleIsDeviceCondition_STATUS `json:"isDevice,omitempty"`

	// PostArgs: Mutually exclusive with all other properties
	PostArgs *DeliveryRulePostArgsCondition_STATUS `json:"postArgs,omitempty"`

	// QueryString: Mutually exclusive with all other properties
	QueryString *DeliveryRuleQueryStringCondition_STATUS `json:"queryString,omitempty"`

	// RemoteAddress: Mutually exclusive with all other properties
	RemoteAddress *DeliveryRuleRemoteAddressCondition_STATUS `json:"remoteAddress,omitempty"`

	// RequestBody: Mutually exclusive with all other properties
	RequestBody *DeliveryRuleRequestBodyCondition_STATUS `json:"requestBody,omitempty"`

	// RequestHeader: Mutually exclusive with all other properties
	RequestHeader *DeliveryRuleRequestHeaderCondition_STATUS `json:"requestHeader,omitempty"`

	// RequestMethod: Mutually exclusive with all other properties
	RequestMethod *DeliveryRuleRequestMethodCondition_STATUS `json:"requestMethod,omitempty"`

	// RequestScheme: Mutually exclusive with all other properties
	RequestScheme *DeliveryRuleRequestSchemeCondition_STATUS `json:"requestScheme,omitempty"`

	// RequestUri: Mutually exclusive with all other properties
	RequestUri *DeliveryRuleRequestUriCondition_STATUS `json:"requestUri,omitempty"`

	// ServerPort: Mutually exclusive with all other properties
	ServerPort *DeliveryRuleServerPortCondition_STATUS `json:"serverPort,omitempty"`

	// SocketAddr: Mutually exclusive with all other properties
	SocketAddr *DeliveryRuleSocketAddrCondition_STATUS `json:"socketAddr,omitempty"`

	// SslProtocol: Mutually exclusive with all other properties
	SslProtocol *DeliveryRuleSslProtocolCondition_STATUS `json:"sslProtocol,omitempty"`

	// UrlFileExtension: Mutually exclusive with all other properties
	UrlFileExtension *DeliveryRuleUrlFileExtensionCondition_STATUS `json:"urlFileExtension,omitempty"`

	// UrlFileName: Mutually exclusive with all other properties
	UrlFileName *DeliveryRuleUrlFileNameCondition_STATUS `json:"urlFileName,omitempty"`

	// UrlPath: Mutually exclusive with all other properties
	UrlPath *DeliveryRuleUrlPathCondition_STATUS `json:"urlPath,omitempty"`
}

// MarshalJSON defers JSON marshaling to the first non-nil property, because DeliveryRuleCondition_STATUS represents a discriminated union (JSON OneOf)
func (condition DeliveryRuleCondition_STATUS) MarshalJSON() ([]byte, error) {
	if condition.ClientPort != nil {
		return json.Marshal(condition.ClientPort)
	}

	if condition.Cookies != nil {
		return json.Marshal(condition.Cookies)
	}

	if condition.HostName != nil {
		return json.Marshal(condition.HostName)
	}

	if condition.HttpVersion != nil {
		return json.Marshal(condition.HttpVersion)
	}

	if condition.IsDevice != nil {
		return json.Marshal(condition.IsDevice)
	}

	if condition.PostArgs != nil {
		return json.Marshal(condition.PostArgs)
	}

	if condition.QueryString != nil {
		return json.Marshal(condition.QueryString)
	}

	if condition.RemoteAddress != nil {
		return json.Marshal(condition.RemoteAddress)
	}

	if condition.RequestBody != nil {
		return json.Marshal(condition.RequestBody)
	}

	if condition.RequestHeader != nil {
		return json.Marshal(condition.RequestHeader)
	}

	if condition.RequestMethod != nil {
		return json.Marshal(condition.RequestMethod)
	}

	if condition.RequestScheme != nil {
		return json.Marshal(condition.RequestScheme)
	}

	if condition.RequestUri != nil {
		return json.Marshal(condition.RequestUri)
	}

	if condition.ServerPort != nil {
		return json.Marshal(condition.ServerPort)
	}

	if condition.SocketAddr != nil {
		return json.Marshal(condition.SocketAddr)
	}

	if condition.SslProtocol != nil {
		return json.Marshal(condition.SslProtocol)
	}

	if condition.UrlFileExtension != nil {
		return json.Marshal(condition.UrlFileExtension)
	}

	if condition.UrlFileName != nil {
		return json.Marshal(condition.UrlFileName)
	}

	if condition.UrlPath != nil {
		return json.Marshal(condition.UrlPath)
	}

	return nil, nil
}

// UnmarshalJSON unmarshals the DeliveryRuleCondition_STATUS
func (condition *DeliveryRuleCondition_STATUS) UnmarshalJSON(data []byte) error {
	var rawJson map[string]interface{}
	err := json.Unmarshal(data, &rawJson)
	if err != nil {
		return err
	}
	discriminator := rawJson["name"]
	if discriminator == "ClientPort" {
		condition.ClientPort = &DeliveryRuleClientPortCondition_STATUS{}
		return json.Unmarshal(data, condition.ClientPort)
	}
	if discriminator == "Cookies" {
		condition.Cookies = &DeliveryRuleCookiesCondition_STATUS{}
		return json.Unmarshal(data, condition.Cookies)
	}
	if discriminator == "HostName" {
		condition.HostName = &DeliveryRuleHostNameCondition_STATUS{}
		return json.Unmarshal(data, condition.HostName)
	}
	if discriminator == "HttpVersion" {
		condition.HttpVersion = &DeliveryRuleHttpVersionCondition_STATUS{}
		return json.Unmarshal(data, condition.HttpVersion)
	}
	if discriminator == "IsDevice" {
		condition.IsDevice = &DeliveryRuleIsDeviceCondition_STATUS{}
		return json.Unmarshal(data, condition.IsDevice)
	}
	if discriminator == "PostArgs" {
		condition.PostArgs = &DeliveryRulePostArgsCondition_STATUS{}
		return json.Unmarshal(data, condition.PostArgs)
	}
	if discriminator == "QueryString" {
		condition.QueryString = &DeliveryRuleQueryStringCondition_STATUS{}
		return json.Unmarshal(data, condition.QueryString)
	}
	if discriminator == "RemoteAddress" {
		condition.RemoteAddress = &DeliveryRuleRemoteAddressCondition_STATUS{}
		return json.Unmarshal(data, condition.RemoteAddress)
	}
	if discriminator == "RequestBody" {
		condition.RequestBody = &DeliveryRuleRequestBodyCondition_STATUS{}
		return json.Unmarshal(data, condition.RequestBody)
	}
	if discriminator == "RequestHeader" {
		condition.RequestHeader = &DeliveryRuleRequestHeaderCondition_STATUS{}
		return json.Unmarshal(data, condition.RequestHeader)
	}
	if discriminator == "RequestMethod" {
		condition.RequestMethod = &DeliveryRuleRequestMethodCondition_STATUS{}
		return json.Unmarshal(data, condition.RequestMethod)
	}
	if discriminator == "RequestScheme" {
		condition.RequestScheme = &DeliveryRuleRequestSchemeCondition_STATUS{}
		return json.Unmarshal(data, condition.RequestScheme)
	}
	if discriminator == "RequestUri" {
		condition.RequestUri = &DeliveryRuleRequestUriCondition_STATUS{}
		return json.Unmarshal(data, condition.RequestUri)
	}
	if discriminator == "ServerPort" {
		condition.ServerPort = &DeliveryRuleServerPortCondition_STATUS{}
		return json.Unmarshal(data, condition.ServerPort)
	}
	if discriminator == "SocketAddr" {
		condition.SocketAddr = &DeliveryRuleSocketAddrCondition_STATUS{}
		return json.Unmarshal(data, condition.SocketAddr)
	}
	if discriminator == "SslProtocol" {
		condition.SslProtocol = &DeliveryRuleSslProtocolCondition_STATUS{}
		return json.Unmarshal(data, condition.SslProtocol)
	}
	if discriminator == "UrlFileExtension" {
		condition.UrlFileExtension = &DeliveryRuleUrlFileExtensionCondition_STATUS{}
		return json.Unmarshal(data, condition.UrlFileExtension)
	}
	if discriminator == "UrlFileName" {
		condition.UrlFileName = &DeliveryRuleUrlFileNameCondition_STATUS{}
		return json.Unmarshal(data, condition.UrlFileName)
	}
	if discriminator == "UrlPath" {
		condition.UrlPath = &DeliveryRuleUrlPathCondition_STATUS{}
		return json.Unmarshal(data, condition.UrlPath)
	}

	// No error
	return nil
}

// The JSON object that contains the properties to send health probes to origin.
type HealthProbeParameters_STATUS struct {
	// ProbeIntervalInSeconds: The number of seconds between health probes.Default is 240sec.
	ProbeIntervalInSeconds *int `json:"probeIntervalInSeconds,omitempty"`

	// ProbePath: The path relative to the origin that is used to determine the health of the origin.
	ProbePath *string `json:"probePath,omitempty"`

	// ProbeProtocol: Protocol to use for health probe.
	ProbeProtocol *HealthProbeParameters_ProbeProtocol_STATUS `json:"probeProtocol,omitempty"`

	// ProbeRequestType: The type of health probe request that is made.
	ProbeRequestType *HealthProbeParameters_ProbeRequestType_STATUS `json:"probeRequestType,omitempty"`
}

type KeyVaultSigningKeyParameters_TypeName_STATUS string

const KeyVaultSigningKeyParameters_TypeName_STATUS_KeyVaultSigningKeyParameters = KeyVaultSigningKeyParameters_TypeName_STATUS("KeyVaultSigningKeyParameters")

// Mapping from string to KeyVaultSigningKeyParameters_TypeName_STATUS
var keyVaultSigningKeyParameters_TypeName_STATUS_Values = map[string]KeyVaultSigningKeyParameters_TypeName_STATUS{
	"keyvaultsigningkeyparameters": KeyVaultSigningKeyParameters_TypeName_STATUS_KeyVaultSigningKeyParameters,
}

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

const (
	PrivateEndpointStatus_STATUS_Approved     = PrivateEndpointStatus_STATUS("Approved")
	PrivateEndpointStatus_STATUS_Disconnected = PrivateEndpointStatus_STATUS("Disconnected")
	PrivateEndpointStatus_STATUS_Pending      = PrivateEndpointStatus_STATUS("Pending")
	PrivateEndpointStatus_STATUS_Rejected     = PrivateEndpointStatus_STATUS("Rejected")
	PrivateEndpointStatus_STATUS_Timeout      = PrivateEndpointStatus_STATUS("Timeout")
)

// Mapping from string to PrivateEndpointStatus_STATUS
var privateEndpointStatus_STATUS_Values = map[string]PrivateEndpointStatus_STATUS{
	"approved":     PrivateEndpointStatus_STATUS_Approved,
	"disconnected": PrivateEndpointStatus_STATUS_Disconnected,
	"pending":      PrivateEndpointStatus_STATUS_Pending,
	"rejected":     PrivateEndpointStatus_STATUS_Rejected,
	"timeout":      PrivateEndpointStatus_STATUS_Timeout,
}

// The JSON object that contains the properties to determine origin health using real requests/responses.
type ResponseBasedOriginErrorDetectionParameters_STATUS struct {
	// HttpErrorRanges: The list of Http status code ranges that are considered as server errors for origin and it is marked as
	// unhealthy.
	HttpErrorRanges []HttpErrorRangeParameters_STATUS `json:"httpErrorRanges,omitempty"`

	// ResponseBasedDetectedErrorTypes: Type of response errors for real user requests for which origin will be deemed unhealthy
	ResponseBasedDetectedErrorTypes *ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS `json:"responseBasedDetectedErrorTypes,omitempty"`

	// ResponseBasedFailoverThresholdPercentage: The percentage of failed requests in the sample where failover should trigger.
	ResponseBasedFailoverThresholdPercentage *int `json:"responseBasedFailoverThresholdPercentage,omitempty"`
}

type DeliveryRuleCacheExpirationAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name DeliveryRuleCacheExpirationAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *CacheExpirationActionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleCacheKeyQueryStringAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name DeliveryRuleCacheKeyQueryStringAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *CacheKeyQueryStringActionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleClientPortCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleClientPortCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *ClientPortMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleCookiesCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleCookiesCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *CookiesMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleHostNameCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleHostNameCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *HostNameMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleHttpVersionCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleHttpVersionCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *HttpVersionMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleIsDeviceCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleIsDeviceCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *IsDeviceMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRulePostArgsCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRulePostArgsCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *PostArgsMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleQueryStringCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleQueryStringCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *QueryStringMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRemoteAddressCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleRemoteAddressCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *RemoteAddressMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRequestBodyCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleRequestBodyCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *RequestBodyMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRequestHeaderAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name DeliveryRuleRequestHeaderAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *HeaderActionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRequestHeaderCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleRequestHeaderCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *RequestHeaderMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRequestMethodCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleRequestMethodCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *RequestMethodMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRequestSchemeCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleRequestSchemeCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *RequestSchemeMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRequestUriCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleRequestUriCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *RequestUriMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleResponseHeaderAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name DeliveryRuleResponseHeaderAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *HeaderActionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleRouteConfigurationOverrideAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name DeliveryRuleRouteConfigurationOverrideAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *RouteConfigurationOverrideActionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleServerPortCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleServerPortCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *ServerPortMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleSocketAddrCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleSocketAddrCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *SocketAddrMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleSslProtocolCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleSslProtocolCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *SslProtocolMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleUrlFileExtensionCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleUrlFileExtensionCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *UrlFileExtensionMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleUrlFileNameCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleUrlFileNameCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *UrlFileNameMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type DeliveryRuleUrlPathCondition_STATUS struct {
	// Name: The name of the condition for the delivery rule.
	Name DeliveryRuleUrlPathCondition_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the condition.
	Parameters *UrlPathMatchConditionParameters_STATUS `json:"parameters,omitempty"`
}

type HealthProbeParameters_ProbeProtocol_STATUS string

const (
	HealthProbeParameters_ProbeProtocol_STATUS_Http   = HealthProbeParameters_ProbeProtocol_STATUS("Http")
	HealthProbeParameters_ProbeProtocol_STATUS_Https  = HealthProbeParameters_ProbeProtocol_STATUS("Https")
	HealthProbeParameters_ProbeProtocol_STATUS_NotSet = HealthProbeParameters_ProbeProtocol_STATUS("NotSet")
)

// Mapping from string to HealthProbeParameters_ProbeProtocol_STATUS
var healthProbeParameters_ProbeProtocol_STATUS_Values = map[string]HealthProbeParameters_ProbeProtocol_STATUS{
	"http":   HealthProbeParameters_ProbeProtocol_STATUS_Http,
	"https":  HealthProbeParameters_ProbeProtocol_STATUS_Https,
	"notset": HealthProbeParameters_ProbeProtocol_STATUS_NotSet,
}

type HealthProbeParameters_ProbeRequestType_STATUS string

const (
	HealthProbeParameters_ProbeRequestType_STATUS_GET    = HealthProbeParameters_ProbeRequestType_STATUS("GET")
	HealthProbeParameters_ProbeRequestType_STATUS_HEAD   = HealthProbeParameters_ProbeRequestType_STATUS("HEAD")
	HealthProbeParameters_ProbeRequestType_STATUS_NotSet = HealthProbeParameters_ProbeRequestType_STATUS("NotSet")
)

// Mapping from string to HealthProbeParameters_ProbeRequestType_STATUS
var healthProbeParameters_ProbeRequestType_STATUS_Values = map[string]HealthProbeParameters_ProbeRequestType_STATUS{
	"get":    HealthProbeParameters_ProbeRequestType_STATUS_GET,
	"head":   HealthProbeParameters_ProbeRequestType_STATUS_HEAD,
	"notset": HealthProbeParameters_ProbeRequestType_STATUS_NotSet,
}

// The JSON object that represents the range for http status codes
type HttpErrorRangeParameters_STATUS struct {
	// Begin: The inclusive start of the http status code range.
	Begin *int `json:"begin,omitempty"`

	// End: The inclusive end of the http status code range.
	End *int `json:"end,omitempty"`
}

type OriginGroupOverrideAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name OriginGroupOverrideAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *OriginGroupOverrideActionParameters_STATUS `json:"parameters,omitempty"`
}

type ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS string

const (
	ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS_None             = ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS("None")
	ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS_TcpAndHttpErrors = ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS("TcpAndHttpErrors")
	ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS_TcpErrorsOnly    = ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS("TcpErrorsOnly")
)

// Mapping from string to ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS
var responseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS_Values = map[string]ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS{
	"none":             ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS_None,
	"tcpandhttperrors": ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS_TcpAndHttpErrors,
	"tcperrorsonly":    ResponseBasedOriginErrorDetectionParameters_ResponseBasedDetectedErrorTypes_STATUS_TcpErrorsOnly,
}

type UrlRedirectAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name UrlRedirectAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *UrlRedirectActionParameters_STATUS `json:"parameters,omitempty"`
}

type UrlRewriteAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name UrlRewriteAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *UrlRewriteActionParameters_STATUS `json:"parameters,omitempty"`
}

type UrlSigningAction_STATUS struct {
	// Name: The name of the action for the delivery rule.
	Name UrlSigningAction_Name_STATUS `json:"name,omitempty"`

	// Parameters: Defines the parameters for the action.
	Parameters *UrlSigningActionParameters_STATUS `json:"parameters,omitempty"`
}

// Defines the parameters for the cache expiration action.
type CacheExpirationActionParameters_STATUS struct {
	// CacheBehavior: Caching behavior for the requests
	CacheBehavior *CacheExpirationActionParameters_CacheBehavior_STATUS `json:"cacheBehavior,omitempty"`

	// CacheDuration: The duration for which the content needs to be cached. Allowed format is [d.]hh:mm:ss
	CacheDuration *string `json:"cacheDuration,omitempty"`

	// CacheType: The level at which the content needs to be cached.
	CacheType *CacheExpirationActionParameters_CacheType_STATUS `json:"cacheType,omitempty"`
	TypeName  *CacheExpirationActionParameters_TypeName_STATUS  `json:"typeName,omitempty"`
}

// Defines the parameters for the cache-key query string action.
type CacheKeyQueryStringActionParameters_STATUS struct {
	// QueryParameters: query parameters to include or exclude (comma separated).
	QueryParameters *string `json:"queryParameters,omitempty"`

	// QueryStringBehavior: Caching behavior for the requests
	QueryStringBehavior *CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS `json:"queryStringBehavior,omitempty"`
	TypeName            *CacheKeyQueryStringActionParameters_TypeName_STATUS            `json:"typeName,omitempty"`
}

// Defines the parameters for ClientPort match conditions
type ClientPortMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *ClientPortMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                  `json:"transforms,omitempty"`
	TypeName   *ClientPortMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for Cookies match conditions
type CookiesMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *CookiesMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Selector: Name of Cookies to be matched
	Selector *string `json:"selector,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                               `json:"transforms,omitempty"`
	TypeName   *CookiesMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

type DeliveryRuleCacheExpirationAction_Name_STATUS string

const DeliveryRuleCacheExpirationAction_Name_STATUS_CacheExpiration = DeliveryRuleCacheExpirationAction_Name_STATUS("CacheExpiration")

// Mapping from string to DeliveryRuleCacheExpirationAction_Name_STATUS
var deliveryRuleCacheExpirationAction_Name_STATUS_Values = map[string]DeliveryRuleCacheExpirationAction_Name_STATUS{
	"cacheexpiration": DeliveryRuleCacheExpirationAction_Name_STATUS_CacheExpiration,
}

type DeliveryRuleCacheKeyQueryStringAction_Name_STATUS string

const DeliveryRuleCacheKeyQueryStringAction_Name_STATUS_CacheKeyQueryString = DeliveryRuleCacheKeyQueryStringAction_Name_STATUS("CacheKeyQueryString")

// Mapping from string to DeliveryRuleCacheKeyQueryStringAction_Name_STATUS
var deliveryRuleCacheKeyQueryStringAction_Name_STATUS_Values = map[string]DeliveryRuleCacheKeyQueryStringAction_Name_STATUS{
	"cachekeyquerystring": DeliveryRuleCacheKeyQueryStringAction_Name_STATUS_CacheKeyQueryString,
}

type DeliveryRuleClientPortCondition_Name_STATUS string

const DeliveryRuleClientPortCondition_Name_STATUS_ClientPort = DeliveryRuleClientPortCondition_Name_STATUS("ClientPort")

// Mapping from string to DeliveryRuleClientPortCondition_Name_STATUS
var deliveryRuleClientPortCondition_Name_STATUS_Values = map[string]DeliveryRuleClientPortCondition_Name_STATUS{
	"clientport": DeliveryRuleClientPortCondition_Name_STATUS_ClientPort,
}

type DeliveryRuleCookiesCondition_Name_STATUS string

const DeliveryRuleCookiesCondition_Name_STATUS_Cookies = DeliveryRuleCookiesCondition_Name_STATUS("Cookies")

// Mapping from string to DeliveryRuleCookiesCondition_Name_STATUS
var deliveryRuleCookiesCondition_Name_STATUS_Values = map[string]DeliveryRuleCookiesCondition_Name_STATUS{
	"cookies": DeliveryRuleCookiesCondition_Name_STATUS_Cookies,
}

type DeliveryRuleHostNameCondition_Name_STATUS string

const DeliveryRuleHostNameCondition_Name_STATUS_HostName = DeliveryRuleHostNameCondition_Name_STATUS("HostName")

// Mapping from string to DeliveryRuleHostNameCondition_Name_STATUS
var deliveryRuleHostNameCondition_Name_STATUS_Values = map[string]DeliveryRuleHostNameCondition_Name_STATUS{
	"hostname": DeliveryRuleHostNameCondition_Name_STATUS_HostName,
}

type DeliveryRuleHttpVersionCondition_Name_STATUS string

const DeliveryRuleHttpVersionCondition_Name_STATUS_HttpVersion = DeliveryRuleHttpVersionCondition_Name_STATUS("HttpVersion")

// Mapping from string to DeliveryRuleHttpVersionCondition_Name_STATUS
var deliveryRuleHttpVersionCondition_Name_STATUS_Values = map[string]DeliveryRuleHttpVersionCondition_Name_STATUS{
	"httpversion": DeliveryRuleHttpVersionCondition_Name_STATUS_HttpVersion,
}

type DeliveryRuleIsDeviceCondition_Name_STATUS string

const DeliveryRuleIsDeviceCondition_Name_STATUS_IsDevice = DeliveryRuleIsDeviceCondition_Name_STATUS("IsDevice")

// Mapping from string to DeliveryRuleIsDeviceCondition_Name_STATUS
var deliveryRuleIsDeviceCondition_Name_STATUS_Values = map[string]DeliveryRuleIsDeviceCondition_Name_STATUS{
	"isdevice": DeliveryRuleIsDeviceCondition_Name_STATUS_IsDevice,
}

type DeliveryRulePostArgsCondition_Name_STATUS string

const DeliveryRulePostArgsCondition_Name_STATUS_PostArgs = DeliveryRulePostArgsCondition_Name_STATUS("PostArgs")

// Mapping from string to DeliveryRulePostArgsCondition_Name_STATUS
var deliveryRulePostArgsCondition_Name_STATUS_Values = map[string]DeliveryRulePostArgsCondition_Name_STATUS{
	"postargs": DeliveryRulePostArgsCondition_Name_STATUS_PostArgs,
}

type DeliveryRuleQueryStringCondition_Name_STATUS string

const DeliveryRuleQueryStringCondition_Name_STATUS_QueryString = DeliveryRuleQueryStringCondition_Name_STATUS("QueryString")

// Mapping from string to DeliveryRuleQueryStringCondition_Name_STATUS
var deliveryRuleQueryStringCondition_Name_STATUS_Values = map[string]DeliveryRuleQueryStringCondition_Name_STATUS{
	"querystring": DeliveryRuleQueryStringCondition_Name_STATUS_QueryString,
}

type DeliveryRuleRemoteAddressCondition_Name_STATUS string

const DeliveryRuleRemoteAddressCondition_Name_STATUS_RemoteAddress = DeliveryRuleRemoteAddressCondition_Name_STATUS("RemoteAddress")

// Mapping from string to DeliveryRuleRemoteAddressCondition_Name_STATUS
var deliveryRuleRemoteAddressCondition_Name_STATUS_Values = map[string]DeliveryRuleRemoteAddressCondition_Name_STATUS{
	"remoteaddress": DeliveryRuleRemoteAddressCondition_Name_STATUS_RemoteAddress,
}

type DeliveryRuleRequestBodyCondition_Name_STATUS string

const DeliveryRuleRequestBodyCondition_Name_STATUS_RequestBody = DeliveryRuleRequestBodyCondition_Name_STATUS("RequestBody")

// Mapping from string to DeliveryRuleRequestBodyCondition_Name_STATUS
var deliveryRuleRequestBodyCondition_Name_STATUS_Values = map[string]DeliveryRuleRequestBodyCondition_Name_STATUS{
	"requestbody": DeliveryRuleRequestBodyCondition_Name_STATUS_RequestBody,
}

type DeliveryRuleRequestHeaderAction_Name_STATUS string

const DeliveryRuleRequestHeaderAction_Name_STATUS_ModifyRequestHeader = DeliveryRuleRequestHeaderAction_Name_STATUS("ModifyRequestHeader")

// Mapping from string to DeliveryRuleRequestHeaderAction_Name_STATUS
var deliveryRuleRequestHeaderAction_Name_STATUS_Values = map[string]DeliveryRuleRequestHeaderAction_Name_STATUS{
	"modifyrequestheader": DeliveryRuleRequestHeaderAction_Name_STATUS_ModifyRequestHeader,
}

type DeliveryRuleRequestHeaderCondition_Name_STATUS string

const DeliveryRuleRequestHeaderCondition_Name_STATUS_RequestHeader = DeliveryRuleRequestHeaderCondition_Name_STATUS("RequestHeader")

// Mapping from string to DeliveryRuleRequestHeaderCondition_Name_STATUS
var deliveryRuleRequestHeaderCondition_Name_STATUS_Values = map[string]DeliveryRuleRequestHeaderCondition_Name_STATUS{
	"requestheader": DeliveryRuleRequestHeaderCondition_Name_STATUS_RequestHeader,
}

type DeliveryRuleRequestMethodCondition_Name_STATUS string

const DeliveryRuleRequestMethodCondition_Name_STATUS_RequestMethod = DeliveryRuleRequestMethodCondition_Name_STATUS("RequestMethod")

// Mapping from string to DeliveryRuleRequestMethodCondition_Name_STATUS
var deliveryRuleRequestMethodCondition_Name_STATUS_Values = map[string]DeliveryRuleRequestMethodCondition_Name_STATUS{
	"requestmethod": DeliveryRuleRequestMethodCondition_Name_STATUS_RequestMethod,
}

type DeliveryRuleRequestSchemeCondition_Name_STATUS string

const DeliveryRuleRequestSchemeCondition_Name_STATUS_RequestScheme = DeliveryRuleRequestSchemeCondition_Name_STATUS("RequestScheme")

// Mapping from string to DeliveryRuleRequestSchemeCondition_Name_STATUS
var deliveryRuleRequestSchemeCondition_Name_STATUS_Values = map[string]DeliveryRuleRequestSchemeCondition_Name_STATUS{
	"requestscheme": DeliveryRuleRequestSchemeCondition_Name_STATUS_RequestScheme,
}

type DeliveryRuleRequestUriCondition_Name_STATUS string

const DeliveryRuleRequestUriCondition_Name_STATUS_RequestUri = DeliveryRuleRequestUriCondition_Name_STATUS("RequestUri")

// Mapping from string to DeliveryRuleRequestUriCondition_Name_STATUS
var deliveryRuleRequestUriCondition_Name_STATUS_Values = map[string]DeliveryRuleRequestUriCondition_Name_STATUS{
	"requesturi": DeliveryRuleRequestUriCondition_Name_STATUS_RequestUri,
}

type DeliveryRuleResponseHeaderAction_Name_STATUS string

const DeliveryRuleResponseHeaderAction_Name_STATUS_ModifyResponseHeader = DeliveryRuleResponseHeaderAction_Name_STATUS("ModifyResponseHeader")

// Mapping from string to DeliveryRuleResponseHeaderAction_Name_STATUS
var deliveryRuleResponseHeaderAction_Name_STATUS_Values = map[string]DeliveryRuleResponseHeaderAction_Name_STATUS{
	"modifyresponseheader": DeliveryRuleResponseHeaderAction_Name_STATUS_ModifyResponseHeader,
}

type DeliveryRuleRouteConfigurationOverrideAction_Name_STATUS string

const DeliveryRuleRouteConfigurationOverrideAction_Name_STATUS_RouteConfigurationOverride = DeliveryRuleRouteConfigurationOverrideAction_Name_STATUS("RouteConfigurationOverride")

// Mapping from string to DeliveryRuleRouteConfigurationOverrideAction_Name_STATUS
var deliveryRuleRouteConfigurationOverrideAction_Name_STATUS_Values = map[string]DeliveryRuleRouteConfigurationOverrideAction_Name_STATUS{
	"routeconfigurationoverride": DeliveryRuleRouteConfigurationOverrideAction_Name_STATUS_RouteConfigurationOverride,
}

type DeliveryRuleServerPortCondition_Name_STATUS string

const DeliveryRuleServerPortCondition_Name_STATUS_ServerPort = DeliveryRuleServerPortCondition_Name_STATUS("ServerPort")

// Mapping from string to DeliveryRuleServerPortCondition_Name_STATUS
var deliveryRuleServerPortCondition_Name_STATUS_Values = map[string]DeliveryRuleServerPortCondition_Name_STATUS{
	"serverport": DeliveryRuleServerPortCondition_Name_STATUS_ServerPort,
}

type DeliveryRuleSocketAddrCondition_Name_STATUS string

const DeliveryRuleSocketAddrCondition_Name_STATUS_SocketAddr = DeliveryRuleSocketAddrCondition_Name_STATUS("SocketAddr")

// Mapping from string to DeliveryRuleSocketAddrCondition_Name_STATUS
var deliveryRuleSocketAddrCondition_Name_STATUS_Values = map[string]DeliveryRuleSocketAddrCondition_Name_STATUS{
	"socketaddr": DeliveryRuleSocketAddrCondition_Name_STATUS_SocketAddr,
}

type DeliveryRuleSslProtocolCondition_Name_STATUS string

const DeliveryRuleSslProtocolCondition_Name_STATUS_SslProtocol = DeliveryRuleSslProtocolCondition_Name_STATUS("SslProtocol")

// Mapping from string to DeliveryRuleSslProtocolCondition_Name_STATUS
var deliveryRuleSslProtocolCondition_Name_STATUS_Values = map[string]DeliveryRuleSslProtocolCondition_Name_STATUS{
	"sslprotocol": DeliveryRuleSslProtocolCondition_Name_STATUS_SslProtocol,
}

type DeliveryRuleUrlFileExtensionCondition_Name_STATUS string

const DeliveryRuleUrlFileExtensionCondition_Name_STATUS_UrlFileExtension = DeliveryRuleUrlFileExtensionCondition_Name_STATUS("UrlFileExtension")

// Mapping from string to DeliveryRuleUrlFileExtensionCondition_Name_STATUS
var deliveryRuleUrlFileExtensionCondition_Name_STATUS_Values = map[string]DeliveryRuleUrlFileExtensionCondition_Name_STATUS{
	"urlfileextension": DeliveryRuleUrlFileExtensionCondition_Name_STATUS_UrlFileExtension,
}

type DeliveryRuleUrlFileNameCondition_Name_STATUS string

const DeliveryRuleUrlFileNameCondition_Name_STATUS_UrlFileName = DeliveryRuleUrlFileNameCondition_Name_STATUS("UrlFileName")

// Mapping from string to DeliveryRuleUrlFileNameCondition_Name_STATUS
var deliveryRuleUrlFileNameCondition_Name_STATUS_Values = map[string]DeliveryRuleUrlFileNameCondition_Name_STATUS{
	"urlfilename": DeliveryRuleUrlFileNameCondition_Name_STATUS_UrlFileName,
}

type DeliveryRuleUrlPathCondition_Name_STATUS string

const DeliveryRuleUrlPathCondition_Name_STATUS_UrlPath = DeliveryRuleUrlPathCondition_Name_STATUS("UrlPath")

// Mapping from string to DeliveryRuleUrlPathCondition_Name_STATUS
var deliveryRuleUrlPathCondition_Name_STATUS_Values = map[string]DeliveryRuleUrlPathCondition_Name_STATUS{
	"urlpath": DeliveryRuleUrlPathCondition_Name_STATUS_UrlPath,
}

// Defines the parameters for the request header action.
type HeaderActionParameters_STATUS struct {
	// HeaderAction: Action to perform
	HeaderAction *HeaderActionParameters_HeaderAction_STATUS `json:"headerAction,omitempty"`

	// HeaderName: Name of the header to modify
	HeaderName *string                                 `json:"headerName,omitempty"`
	TypeName   *HeaderActionParameters_TypeName_STATUS `json:"typeName,omitempty"`

	// Value: Value for the specified action
	Value *string `json:"value,omitempty"`
}

// Defines the parameters for HostName match conditions
type HostNameMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *HostNameMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                `json:"transforms,omitempty"`
	TypeName   *HostNameMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for HttpVersion match conditions
type HttpVersionMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *HttpVersionMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                   `json:"transforms,omitempty"`
	TypeName   *HttpVersionMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for IsDevice match conditions
type IsDeviceMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []IsDeviceMatchConditionParameters_MatchValues_STATUS `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *IsDeviceMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                `json:"transforms,omitempty"`
	TypeName   *IsDeviceMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

type OriginGroupOverrideAction_Name_STATUS string

const OriginGroupOverrideAction_Name_STATUS_OriginGroupOverride = OriginGroupOverrideAction_Name_STATUS("OriginGroupOverride")

// Mapping from string to OriginGroupOverrideAction_Name_STATUS
var originGroupOverrideAction_Name_STATUS_Values = map[string]OriginGroupOverrideAction_Name_STATUS{
	"origingroupoverride": OriginGroupOverrideAction_Name_STATUS_OriginGroupOverride,
}

// Defines the parameters for the origin group override action.
type OriginGroupOverrideActionParameters_STATUS struct {
	// OriginGroup: defines the OriginGroup that would override the DefaultOriginGroup.
	OriginGroup *ResourceReference_STATUS                            `json:"originGroup,omitempty"`
	TypeName    *OriginGroupOverrideActionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for PostArgs match conditions
type PostArgsMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *PostArgsMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Selector: Name of PostArg to be matched
	Selector *string `json:"selector,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                `json:"transforms,omitempty"`
	TypeName   *PostArgsMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for QueryString match conditions
type QueryStringMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *QueryStringMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                   `json:"transforms,omitempty"`
	TypeName   *QueryStringMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for RemoteAddress match conditions
type RemoteAddressMatchConditionParameters_STATUS struct {
	// MatchValues: Match values to match against. The operator will apply to each value in here with OR semantics. If any of
	// them match the variable with the given operator this match condition is considered a match.
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *RemoteAddressMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                     `json:"transforms,omitempty"`
	TypeName   *RemoteAddressMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for RequestBody match conditions
type RequestBodyMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *RequestBodyMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                   `json:"transforms,omitempty"`
	TypeName   *RequestBodyMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for RequestHeader match conditions
type RequestHeaderMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *RequestHeaderMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Selector: Name of Header to be matched
	Selector *string `json:"selector,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                     `json:"transforms,omitempty"`
	TypeName   *RequestHeaderMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for RequestMethod match conditions
type RequestMethodMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []RequestMethodMatchConditionParameters_MatchValues_STATUS `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *RequestMethodMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                     `json:"transforms,omitempty"`
	TypeName   *RequestMethodMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for RequestScheme match conditions
type RequestSchemeMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []RequestSchemeMatchConditionParameters_MatchValues_STATUS `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *RequestSchemeMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                     `json:"transforms,omitempty"`
	TypeName   *RequestSchemeMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for RequestUri match conditions
type RequestUriMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *RequestUriMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                  `json:"transforms,omitempty"`
	TypeName   *RequestUriMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for the route configuration override action.
type RouteConfigurationOverrideActionParameters_STATUS struct {
	// CacheConfiguration: The caching configuration associated with this rule. To disable caching, do not provide a
	// cacheConfiguration object.
	CacheConfiguration *CacheConfiguration_STATUS `json:"cacheConfiguration,omitempty"`

	// OriginGroupOverride: A reference to the origin group override configuration. Leave empty to use the default origin group
	// on route.
	OriginGroupOverride *OriginGroupOverride_STATUS                                 `json:"originGroupOverride,omitempty"`
	TypeName            *RouteConfigurationOverrideActionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for ServerPort match conditions
type ServerPortMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *ServerPortMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                  `json:"transforms,omitempty"`
	TypeName   *ServerPortMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for SocketAddress match conditions
type SocketAddrMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *SocketAddrMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                  `json:"transforms,omitempty"`
	TypeName   *SocketAddrMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for SslProtocol match conditions
type SslProtocolMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []SslProtocol_STATUS `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *SslProtocolMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                   `json:"transforms,omitempty"`
	TypeName   *SslProtocolMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for UrlFileExtension match conditions
type UrlFileExtensionMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *UrlFileExtensionMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                        `json:"transforms,omitempty"`
	TypeName   *UrlFileExtensionMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for UrlFilename match conditions
type UrlFileNameMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *UrlFileNameMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                                   `json:"transforms,omitempty"`
	TypeName   *UrlFileNameMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Defines the parameters for UrlPath match conditions
type UrlPathMatchConditionParameters_STATUS struct {
	// MatchValues: The match value for the condition of the delivery rule
	MatchValues []string `json:"matchValues,omitempty"`

	// NegateCondition: Describes if this is negate condition or not
	NegateCondition *bool `json:"negateCondition,omitempty"`

	// Operator: Describes operator to be matched
	Operator *UrlPathMatchConditionParameters_Operator_STATUS `json:"operator,omitempty"`

	// Transforms: List of transforms
	Transforms []Transform_STATUS                               `json:"transforms,omitempty"`
	TypeName   *UrlPathMatchConditionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

type UrlRedirectAction_Name_STATUS string

const UrlRedirectAction_Name_STATUS_UrlRedirect = UrlRedirectAction_Name_STATUS("UrlRedirect")

// Mapping from string to UrlRedirectAction_Name_STATUS
var urlRedirectAction_Name_STATUS_Values = map[string]UrlRedirectAction_Name_STATUS{
	"urlredirect": UrlRedirectAction_Name_STATUS_UrlRedirect,
}

// Defines the parameters for the url redirect action.
type UrlRedirectActionParameters_STATUS struct {
	// CustomFragment: Fragment to add to the redirect URL. Fragment is the part of the URL that comes after #. Do not include
	// the #.
	CustomFragment *string `json:"customFragment,omitempty"`

	// CustomHostname: Host to redirect. Leave empty to use the incoming host as the destination host.
	CustomHostname *string `json:"customHostname,omitempty"`

	// CustomPath: The full path to redirect. Path cannot be empty and must start with /. Leave empty to use the incoming path
	// as destination path.
	CustomPath *string `json:"customPath,omitempty"`

	// CustomQueryString: The set of query strings to be placed in the redirect URL. Setting this value would replace any
	// existing query string; leave empty to preserve the incoming query string. Query string must be in <key>=<value> format.
	// ? and & will be added automatically so do not include them.
	CustomQueryString *string `json:"customQueryString,omitempty"`

	// DestinationProtocol: Protocol to use for the redirect. The default value is MatchRequest
	DestinationProtocol *UrlRedirectActionParameters_DestinationProtocol_STATUS `json:"destinationProtocol,omitempty"`

	// RedirectType: The redirect type the rule will use when redirecting traffic.
	RedirectType *UrlRedirectActionParameters_RedirectType_STATUS `json:"redirectType,omitempty"`
	TypeName     *UrlRedirectActionParameters_TypeName_STATUS     `json:"typeName,omitempty"`
}

type UrlRewriteAction_Name_STATUS string

const UrlRewriteAction_Name_STATUS_UrlRewrite = UrlRewriteAction_Name_STATUS("UrlRewrite")

// Mapping from string to UrlRewriteAction_Name_STATUS
var urlRewriteAction_Name_STATUS_Values = map[string]UrlRewriteAction_Name_STATUS{
	"urlrewrite": UrlRewriteAction_Name_STATUS_UrlRewrite,
}

// Defines the parameters for the url rewrite action.
type UrlRewriteActionParameters_STATUS struct {
	// Destination: Define the relative URL to which the above requests will be rewritten by.
	Destination *string `json:"destination,omitempty"`

	// PreserveUnmatchedPath: Whether to preserve unmatched path. Default value is true.
	PreserveUnmatchedPath *bool `json:"preserveUnmatchedPath,omitempty"`

	// SourcePattern: define a request URI pattern that identifies the type of requests that may be rewritten. If value is
	// blank, all strings are matched.
	SourcePattern *string                                     `json:"sourcePattern,omitempty"`
	TypeName      *UrlRewriteActionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

type UrlSigningAction_Name_STATUS string

const UrlSigningAction_Name_STATUS_UrlSigning = UrlSigningAction_Name_STATUS("UrlSigning")

// Mapping from string to UrlSigningAction_Name_STATUS
var urlSigningAction_Name_STATUS_Values = map[string]UrlSigningAction_Name_STATUS{
	"urlsigning": UrlSigningAction_Name_STATUS_UrlSigning,
}

// Defines the parameters for the Url Signing action.
type UrlSigningActionParameters_STATUS struct {
	// Algorithm: Algorithm to use for URL signing
	Algorithm *UrlSigningActionParameters_Algorithm_STATUS `json:"algorithm,omitempty"`

	// ParameterNameOverride: Defines which query string parameters in the url to be considered for expires, key id etc.
	ParameterNameOverride []UrlSigningParamIdentifier_STATUS          `json:"parameterNameOverride,omitempty"`
	TypeName              *UrlSigningActionParameters_TypeName_STATUS `json:"typeName,omitempty"`
}

// Caching settings for a caching-type route. To disable caching, do not provide a cacheConfiguration object.
type CacheConfiguration_STATUS struct {
	// CacheBehavior: Caching behavior for the requests
	CacheBehavior *CacheConfiguration_CacheBehavior_STATUS `json:"cacheBehavior,omitempty"`

	// CacheDuration: The duration for which the content needs to be cached. Allowed format is [d.]hh:mm:ss
	CacheDuration *string `json:"cacheDuration,omitempty"`

	// IsCompressionEnabled: 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.
	IsCompressionEnabled *CacheConfiguration_IsCompressionEnabled_STATUS `json:"isCompressionEnabled,omitempty"`

	// QueryParameters: query parameters to include or exclude (comma separated).
	QueryParameters *string `json:"queryParameters,omitempty"`

	// QueryStringCachingBehavior: 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.
	QueryStringCachingBehavior *CacheConfiguration_QueryStringCachingBehavior_STATUS `json:"queryStringCachingBehavior,omitempty"`
}

type CacheExpirationActionParameters_CacheBehavior_STATUS string

const (
	CacheExpirationActionParameters_CacheBehavior_STATUS_BypassCache  = CacheExpirationActionParameters_CacheBehavior_STATUS("BypassCache")
	CacheExpirationActionParameters_CacheBehavior_STATUS_Override     = CacheExpirationActionParameters_CacheBehavior_STATUS("Override")
	CacheExpirationActionParameters_CacheBehavior_STATUS_SetIfMissing = CacheExpirationActionParameters_CacheBehavior_STATUS("SetIfMissing")
)

// Mapping from string to CacheExpirationActionParameters_CacheBehavior_STATUS
var cacheExpirationActionParameters_CacheBehavior_STATUS_Values = map[string]CacheExpirationActionParameters_CacheBehavior_STATUS{
	"bypasscache":  CacheExpirationActionParameters_CacheBehavior_STATUS_BypassCache,
	"override":     CacheExpirationActionParameters_CacheBehavior_STATUS_Override,
	"setifmissing": CacheExpirationActionParameters_CacheBehavior_STATUS_SetIfMissing,
}

type CacheExpirationActionParameters_CacheType_STATUS string

const CacheExpirationActionParameters_CacheType_STATUS_All = CacheExpirationActionParameters_CacheType_STATUS("All")

// Mapping from string to CacheExpirationActionParameters_CacheType_STATUS
var cacheExpirationActionParameters_CacheType_STATUS_Values = map[string]CacheExpirationActionParameters_CacheType_STATUS{
	"all": CacheExpirationActionParameters_CacheType_STATUS_All,
}

type CacheExpirationActionParameters_TypeName_STATUS string

const CacheExpirationActionParameters_TypeName_STATUS_DeliveryRuleCacheExpirationActionParameters = CacheExpirationActionParameters_TypeName_STATUS("DeliveryRuleCacheExpirationActionParameters")

// Mapping from string to CacheExpirationActionParameters_TypeName_STATUS
var cacheExpirationActionParameters_TypeName_STATUS_Values = map[string]CacheExpirationActionParameters_TypeName_STATUS{
	"deliveryrulecacheexpirationactionparameters": CacheExpirationActionParameters_TypeName_STATUS_DeliveryRuleCacheExpirationActionParameters,
}

type CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS string

const (
	CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_Exclude    = CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS("Exclude")
	CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_ExcludeAll = CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS("ExcludeAll")
	CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_Include    = CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS("Include")
	CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_IncludeAll = CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS("IncludeAll")
)

// Mapping from string to CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS
var cacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_Values = map[string]CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS{
	"exclude":    CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_Exclude,
	"excludeall": CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_ExcludeAll,
	"include":    CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_Include,
	"includeall": CacheKeyQueryStringActionParameters_QueryStringBehavior_STATUS_IncludeAll,
}

type CacheKeyQueryStringActionParameters_TypeName_STATUS string

const CacheKeyQueryStringActionParameters_TypeName_STATUS_DeliveryRuleCacheKeyQueryStringBehaviorActionParameters = CacheKeyQueryStringActionParameters_TypeName_STATUS("DeliveryRuleCacheKeyQueryStringBehaviorActionParameters")

// Mapping from string to CacheKeyQueryStringActionParameters_TypeName_STATUS
var cacheKeyQueryStringActionParameters_TypeName_STATUS_Values = map[string]CacheKeyQueryStringActionParameters_TypeName_STATUS{
	"deliveryrulecachekeyquerystringbehavioractionparameters": CacheKeyQueryStringActionParameters_TypeName_STATUS_DeliveryRuleCacheKeyQueryStringBehaviorActionParameters,
}

type ClientPortMatchConditionParameters_Operator_STATUS string

const (
	ClientPortMatchConditionParameters_Operator_STATUS_Any                = ClientPortMatchConditionParameters_Operator_STATUS("Any")
	ClientPortMatchConditionParameters_Operator_STATUS_BeginsWith         = ClientPortMatchConditionParameters_Operator_STATUS("BeginsWith")
	ClientPortMatchConditionParameters_Operator_STATUS_Contains           = ClientPortMatchConditionParameters_Operator_STATUS("Contains")
	ClientPortMatchConditionParameters_Operator_STATUS_EndsWith           = ClientPortMatchConditionParameters_Operator_STATUS("EndsWith")
	ClientPortMatchConditionParameters_Operator_STATUS_Equal              = ClientPortMatchConditionParameters_Operator_STATUS("Equal")
	ClientPortMatchConditionParameters_Operator_STATUS_GreaterThan        = ClientPortMatchConditionParameters_Operator_STATUS("GreaterThan")
	ClientPortMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = ClientPortMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	ClientPortMatchConditionParameters_Operator_STATUS_LessThan           = ClientPortMatchConditionParameters_Operator_STATUS("LessThan")
	ClientPortMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = ClientPortMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	ClientPortMatchConditionParameters_Operator_STATUS_RegEx              = ClientPortMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to ClientPortMatchConditionParameters_Operator_STATUS
var clientPortMatchConditionParameters_Operator_STATUS_Values = map[string]ClientPortMatchConditionParameters_Operator_STATUS{
	"any":                ClientPortMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         ClientPortMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           ClientPortMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           ClientPortMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              ClientPortMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        ClientPortMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": ClientPortMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           ClientPortMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    ClientPortMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              ClientPortMatchConditionParameters_Operator_STATUS_RegEx,
}

type ClientPortMatchConditionParameters_TypeName_STATUS string

const ClientPortMatchConditionParameters_TypeName_STATUS_DeliveryRuleClientPortConditionParameters = ClientPortMatchConditionParameters_TypeName_STATUS("DeliveryRuleClientPortConditionParameters")

// Mapping from string to ClientPortMatchConditionParameters_TypeName_STATUS
var clientPortMatchConditionParameters_TypeName_STATUS_Values = map[string]ClientPortMatchConditionParameters_TypeName_STATUS{
	"deliveryruleclientportconditionparameters": ClientPortMatchConditionParameters_TypeName_STATUS_DeliveryRuleClientPortConditionParameters,
}

type CookiesMatchConditionParameters_Operator_STATUS string

const (
	CookiesMatchConditionParameters_Operator_STATUS_Any                = CookiesMatchConditionParameters_Operator_STATUS("Any")
	CookiesMatchConditionParameters_Operator_STATUS_BeginsWith         = CookiesMatchConditionParameters_Operator_STATUS("BeginsWith")
	CookiesMatchConditionParameters_Operator_STATUS_Contains           = CookiesMatchConditionParameters_Operator_STATUS("Contains")
	CookiesMatchConditionParameters_Operator_STATUS_EndsWith           = CookiesMatchConditionParameters_Operator_STATUS("EndsWith")
	CookiesMatchConditionParameters_Operator_STATUS_Equal              = CookiesMatchConditionParameters_Operator_STATUS("Equal")
	CookiesMatchConditionParameters_Operator_STATUS_GreaterThan        = CookiesMatchConditionParameters_Operator_STATUS("GreaterThan")
	CookiesMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = CookiesMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	CookiesMatchConditionParameters_Operator_STATUS_LessThan           = CookiesMatchConditionParameters_Operator_STATUS("LessThan")
	CookiesMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = CookiesMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	CookiesMatchConditionParameters_Operator_STATUS_RegEx              = CookiesMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to CookiesMatchConditionParameters_Operator_STATUS
var cookiesMatchConditionParameters_Operator_STATUS_Values = map[string]CookiesMatchConditionParameters_Operator_STATUS{
	"any":                CookiesMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         CookiesMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           CookiesMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           CookiesMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              CookiesMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        CookiesMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": CookiesMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           CookiesMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    CookiesMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              CookiesMatchConditionParameters_Operator_STATUS_RegEx,
}

type CookiesMatchConditionParameters_TypeName_STATUS string

const CookiesMatchConditionParameters_TypeName_STATUS_DeliveryRuleCookiesConditionParameters = CookiesMatchConditionParameters_TypeName_STATUS("DeliveryRuleCookiesConditionParameters")

// Mapping from string to CookiesMatchConditionParameters_TypeName_STATUS
var cookiesMatchConditionParameters_TypeName_STATUS_Values = map[string]CookiesMatchConditionParameters_TypeName_STATUS{
	"deliveryrulecookiesconditionparameters": CookiesMatchConditionParameters_TypeName_STATUS_DeliveryRuleCookiesConditionParameters,
}

type HeaderActionParameters_HeaderAction_STATUS string

const (
	HeaderActionParameters_HeaderAction_STATUS_Append    = HeaderActionParameters_HeaderAction_STATUS("Append")
	HeaderActionParameters_HeaderAction_STATUS_Delete    = HeaderActionParameters_HeaderAction_STATUS("Delete")
	HeaderActionParameters_HeaderAction_STATUS_Overwrite = HeaderActionParameters_HeaderAction_STATUS("Overwrite")
)

// Mapping from string to HeaderActionParameters_HeaderAction_STATUS
var headerActionParameters_HeaderAction_STATUS_Values = map[string]HeaderActionParameters_HeaderAction_STATUS{
	"append":    HeaderActionParameters_HeaderAction_STATUS_Append,
	"delete":    HeaderActionParameters_HeaderAction_STATUS_Delete,
	"overwrite": HeaderActionParameters_HeaderAction_STATUS_Overwrite,
}

type HeaderActionParameters_TypeName_STATUS string

const HeaderActionParameters_TypeName_STATUS_DeliveryRuleHeaderActionParameters = HeaderActionParameters_TypeName_STATUS("DeliveryRuleHeaderActionParameters")

// Mapping from string to HeaderActionParameters_TypeName_STATUS
var headerActionParameters_TypeName_STATUS_Values = map[string]HeaderActionParameters_TypeName_STATUS{
	"deliveryruleheaderactionparameters": HeaderActionParameters_TypeName_STATUS_DeliveryRuleHeaderActionParameters,
}

type HostNameMatchConditionParameters_Operator_STATUS string

const (
	HostNameMatchConditionParameters_Operator_STATUS_Any                = HostNameMatchConditionParameters_Operator_STATUS("Any")
	HostNameMatchConditionParameters_Operator_STATUS_BeginsWith         = HostNameMatchConditionParameters_Operator_STATUS("BeginsWith")
	HostNameMatchConditionParameters_Operator_STATUS_Contains           = HostNameMatchConditionParameters_Operator_STATUS("Contains")
	HostNameMatchConditionParameters_Operator_STATUS_EndsWith           = HostNameMatchConditionParameters_Operator_STATUS("EndsWith")
	HostNameMatchConditionParameters_Operator_STATUS_Equal              = HostNameMatchConditionParameters_Operator_STATUS("Equal")
	HostNameMatchConditionParameters_Operator_STATUS_GreaterThan        = HostNameMatchConditionParameters_Operator_STATUS("GreaterThan")
	HostNameMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = HostNameMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	HostNameMatchConditionParameters_Operator_STATUS_LessThan           = HostNameMatchConditionParameters_Operator_STATUS("LessThan")
	HostNameMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = HostNameMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	HostNameMatchConditionParameters_Operator_STATUS_RegEx              = HostNameMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to HostNameMatchConditionParameters_Operator_STATUS
var hostNameMatchConditionParameters_Operator_STATUS_Values = map[string]HostNameMatchConditionParameters_Operator_STATUS{
	"any":                HostNameMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         HostNameMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           HostNameMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           HostNameMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              HostNameMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        HostNameMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": HostNameMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           HostNameMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    HostNameMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              HostNameMatchConditionParameters_Operator_STATUS_RegEx,
}

type HostNameMatchConditionParameters_TypeName_STATUS string

const HostNameMatchConditionParameters_TypeName_STATUS_DeliveryRuleHostNameConditionParameters = HostNameMatchConditionParameters_TypeName_STATUS("DeliveryRuleHostNameConditionParameters")

// Mapping from string to HostNameMatchConditionParameters_TypeName_STATUS
var hostNameMatchConditionParameters_TypeName_STATUS_Values = map[string]HostNameMatchConditionParameters_TypeName_STATUS{
	"deliveryrulehostnameconditionparameters": HostNameMatchConditionParameters_TypeName_STATUS_DeliveryRuleHostNameConditionParameters,
}

type HttpVersionMatchConditionParameters_Operator_STATUS string

const HttpVersionMatchConditionParameters_Operator_STATUS_Equal = HttpVersionMatchConditionParameters_Operator_STATUS("Equal")

// Mapping from string to HttpVersionMatchConditionParameters_Operator_STATUS
var httpVersionMatchConditionParameters_Operator_STATUS_Values = map[string]HttpVersionMatchConditionParameters_Operator_STATUS{
	"equal": HttpVersionMatchConditionParameters_Operator_STATUS_Equal,
}

type HttpVersionMatchConditionParameters_TypeName_STATUS string

const HttpVersionMatchConditionParameters_TypeName_STATUS_DeliveryRuleHttpVersionConditionParameters = HttpVersionMatchConditionParameters_TypeName_STATUS("DeliveryRuleHttpVersionConditionParameters")

// Mapping from string to HttpVersionMatchConditionParameters_TypeName_STATUS
var httpVersionMatchConditionParameters_TypeName_STATUS_Values = map[string]HttpVersionMatchConditionParameters_TypeName_STATUS{
	"deliveryrulehttpversionconditionparameters": HttpVersionMatchConditionParameters_TypeName_STATUS_DeliveryRuleHttpVersionConditionParameters,
}

type IsDeviceMatchConditionParameters_MatchValues_STATUS string

const (
	IsDeviceMatchConditionParameters_MatchValues_STATUS_Desktop = IsDeviceMatchConditionParameters_MatchValues_STATUS("Desktop")
	IsDeviceMatchConditionParameters_MatchValues_STATUS_Mobile  = IsDeviceMatchConditionParameters_MatchValues_STATUS("Mobile")
)

// Mapping from string to IsDeviceMatchConditionParameters_MatchValues_STATUS
var isDeviceMatchConditionParameters_MatchValues_STATUS_Values = map[string]IsDeviceMatchConditionParameters_MatchValues_STATUS{
	"desktop": IsDeviceMatchConditionParameters_MatchValues_STATUS_Desktop,
	"mobile":  IsDeviceMatchConditionParameters_MatchValues_STATUS_Mobile,
}

type IsDeviceMatchConditionParameters_Operator_STATUS string

const IsDeviceMatchConditionParameters_Operator_STATUS_Equal = IsDeviceMatchConditionParameters_Operator_STATUS("Equal")

// Mapping from string to IsDeviceMatchConditionParameters_Operator_STATUS
var isDeviceMatchConditionParameters_Operator_STATUS_Values = map[string]IsDeviceMatchConditionParameters_Operator_STATUS{
	"equal": IsDeviceMatchConditionParameters_Operator_STATUS_Equal,
}

type IsDeviceMatchConditionParameters_TypeName_STATUS string

const IsDeviceMatchConditionParameters_TypeName_STATUS_DeliveryRuleIsDeviceConditionParameters = IsDeviceMatchConditionParameters_TypeName_STATUS("DeliveryRuleIsDeviceConditionParameters")

// Mapping from string to IsDeviceMatchConditionParameters_TypeName_STATUS
var isDeviceMatchConditionParameters_TypeName_STATUS_Values = map[string]IsDeviceMatchConditionParameters_TypeName_STATUS{
	"deliveryruleisdeviceconditionparameters": IsDeviceMatchConditionParameters_TypeName_STATUS_DeliveryRuleIsDeviceConditionParameters,
}

// Defines the parameters for the origin group override configuration.
type OriginGroupOverride_STATUS struct {
	// ForwardingProtocol: Protocol this rule will use when forwarding traffic to backends.
	ForwardingProtocol *OriginGroupOverride_ForwardingProtocol_STATUS `json:"forwardingProtocol,omitempty"`

	// OriginGroup: defines the OriginGroup that would override the DefaultOriginGroup on route.
	OriginGroup *ResourceReference_STATUS `json:"originGroup,omitempty"`
}

type OriginGroupOverrideActionParameters_TypeName_STATUS string

const OriginGroupOverrideActionParameters_TypeName_STATUS_DeliveryRuleOriginGroupOverrideActionParameters = OriginGroupOverrideActionParameters_TypeName_STATUS("DeliveryRuleOriginGroupOverrideActionParameters")

// Mapping from string to OriginGroupOverrideActionParameters_TypeName_STATUS
var originGroupOverrideActionParameters_TypeName_STATUS_Values = map[string]OriginGroupOverrideActionParameters_TypeName_STATUS{
	"deliveryruleorigingroupoverrideactionparameters": OriginGroupOverrideActionParameters_TypeName_STATUS_DeliveryRuleOriginGroupOverrideActionParameters,
}

type PostArgsMatchConditionParameters_Operator_STATUS string

const (
	PostArgsMatchConditionParameters_Operator_STATUS_Any                = PostArgsMatchConditionParameters_Operator_STATUS("Any")
	PostArgsMatchConditionParameters_Operator_STATUS_BeginsWith         = PostArgsMatchConditionParameters_Operator_STATUS("BeginsWith")
	PostArgsMatchConditionParameters_Operator_STATUS_Contains           = PostArgsMatchConditionParameters_Operator_STATUS("Contains")
	PostArgsMatchConditionParameters_Operator_STATUS_EndsWith           = PostArgsMatchConditionParameters_Operator_STATUS("EndsWith")
	PostArgsMatchConditionParameters_Operator_STATUS_Equal              = PostArgsMatchConditionParameters_Operator_STATUS("Equal")
	PostArgsMatchConditionParameters_Operator_STATUS_GreaterThan        = PostArgsMatchConditionParameters_Operator_STATUS("GreaterThan")
	PostArgsMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = PostArgsMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	PostArgsMatchConditionParameters_Operator_STATUS_LessThan           = PostArgsMatchConditionParameters_Operator_STATUS("LessThan")
	PostArgsMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = PostArgsMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	PostArgsMatchConditionParameters_Operator_STATUS_RegEx              = PostArgsMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to PostArgsMatchConditionParameters_Operator_STATUS
var postArgsMatchConditionParameters_Operator_STATUS_Values = map[string]PostArgsMatchConditionParameters_Operator_STATUS{
	"any":                PostArgsMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         PostArgsMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           PostArgsMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           PostArgsMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              PostArgsMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        PostArgsMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": PostArgsMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           PostArgsMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    PostArgsMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              PostArgsMatchConditionParameters_Operator_STATUS_RegEx,
}

type PostArgsMatchConditionParameters_TypeName_STATUS string

const PostArgsMatchConditionParameters_TypeName_STATUS_DeliveryRulePostArgsConditionParameters = PostArgsMatchConditionParameters_TypeName_STATUS("DeliveryRulePostArgsConditionParameters")

// Mapping from string to PostArgsMatchConditionParameters_TypeName_STATUS
var postArgsMatchConditionParameters_TypeName_STATUS_Values = map[string]PostArgsMatchConditionParameters_TypeName_STATUS{
	"deliveryrulepostargsconditionparameters": PostArgsMatchConditionParameters_TypeName_STATUS_DeliveryRulePostArgsConditionParameters,
}

type QueryStringMatchConditionParameters_Operator_STATUS string

const (
	QueryStringMatchConditionParameters_Operator_STATUS_Any                = QueryStringMatchConditionParameters_Operator_STATUS("Any")
	QueryStringMatchConditionParameters_Operator_STATUS_BeginsWith         = QueryStringMatchConditionParameters_Operator_STATUS("BeginsWith")
	QueryStringMatchConditionParameters_Operator_STATUS_Contains           = QueryStringMatchConditionParameters_Operator_STATUS("Contains")
	QueryStringMatchConditionParameters_Operator_STATUS_EndsWith           = QueryStringMatchConditionParameters_Operator_STATUS("EndsWith")
	QueryStringMatchConditionParameters_Operator_STATUS_Equal              = QueryStringMatchConditionParameters_Operator_STATUS("Equal")
	QueryStringMatchConditionParameters_Operator_STATUS_GreaterThan        = QueryStringMatchConditionParameters_Operator_STATUS("GreaterThan")
	QueryStringMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = QueryStringMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	QueryStringMatchConditionParameters_Operator_STATUS_LessThan           = QueryStringMatchConditionParameters_Operator_STATUS("LessThan")
	QueryStringMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = QueryStringMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	QueryStringMatchConditionParameters_Operator_STATUS_RegEx              = QueryStringMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to QueryStringMatchConditionParameters_Operator_STATUS
var queryStringMatchConditionParameters_Operator_STATUS_Values = map[string]QueryStringMatchConditionParameters_Operator_STATUS{
	"any":                QueryStringMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         QueryStringMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           QueryStringMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           QueryStringMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              QueryStringMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        QueryStringMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": QueryStringMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           QueryStringMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    QueryStringMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              QueryStringMatchConditionParameters_Operator_STATUS_RegEx,
}

type QueryStringMatchConditionParameters_TypeName_STATUS string

const QueryStringMatchConditionParameters_TypeName_STATUS_DeliveryRuleQueryStringConditionParameters = QueryStringMatchConditionParameters_TypeName_STATUS("DeliveryRuleQueryStringConditionParameters")

// Mapping from string to QueryStringMatchConditionParameters_TypeName_STATUS
var queryStringMatchConditionParameters_TypeName_STATUS_Values = map[string]QueryStringMatchConditionParameters_TypeName_STATUS{
	"deliveryrulequerystringconditionparameters": QueryStringMatchConditionParameters_TypeName_STATUS_DeliveryRuleQueryStringConditionParameters,
}

type RemoteAddressMatchConditionParameters_Operator_STATUS string

const (
	RemoteAddressMatchConditionParameters_Operator_STATUS_Any      = RemoteAddressMatchConditionParameters_Operator_STATUS("Any")
	RemoteAddressMatchConditionParameters_Operator_STATUS_GeoMatch = RemoteAddressMatchConditionParameters_Operator_STATUS("GeoMatch")
	RemoteAddressMatchConditionParameters_Operator_STATUS_IPMatch  = RemoteAddressMatchConditionParameters_Operator_STATUS("IPMatch")
)

// Mapping from string to RemoteAddressMatchConditionParameters_Operator_STATUS
var remoteAddressMatchConditionParameters_Operator_STATUS_Values = map[string]RemoteAddressMatchConditionParameters_Operator_STATUS{
	"any":      RemoteAddressMatchConditionParameters_Operator_STATUS_Any,
	"geomatch": RemoteAddressMatchConditionParameters_Operator_STATUS_GeoMatch,
	"ipmatch":  RemoteAddressMatchConditionParameters_Operator_STATUS_IPMatch,
}

type RemoteAddressMatchConditionParameters_TypeName_STATUS string

const RemoteAddressMatchConditionParameters_TypeName_STATUS_DeliveryRuleRemoteAddressConditionParameters = RemoteAddressMatchConditionParameters_TypeName_STATUS("DeliveryRuleRemoteAddressConditionParameters")

// Mapping from string to RemoteAddressMatchConditionParameters_TypeName_STATUS
var remoteAddressMatchConditionParameters_TypeName_STATUS_Values = map[string]RemoteAddressMatchConditionParameters_TypeName_STATUS{
	"deliveryruleremoteaddressconditionparameters": RemoteAddressMatchConditionParameters_TypeName_STATUS_DeliveryRuleRemoteAddressConditionParameters,
}

type RequestBodyMatchConditionParameters_Operator_STATUS string

const (
	RequestBodyMatchConditionParameters_Operator_STATUS_Any                = RequestBodyMatchConditionParameters_Operator_STATUS("Any")
	RequestBodyMatchConditionParameters_Operator_STATUS_BeginsWith         = RequestBodyMatchConditionParameters_Operator_STATUS("BeginsWith")
	RequestBodyMatchConditionParameters_Operator_STATUS_Contains           = RequestBodyMatchConditionParameters_Operator_STATUS("Contains")
	RequestBodyMatchConditionParameters_Operator_STATUS_EndsWith           = RequestBodyMatchConditionParameters_Operator_STATUS("EndsWith")
	RequestBodyMatchConditionParameters_Operator_STATUS_Equal              = RequestBodyMatchConditionParameters_Operator_STATUS("Equal")
	RequestBodyMatchConditionParameters_Operator_STATUS_GreaterThan        = RequestBodyMatchConditionParameters_Operator_STATUS("GreaterThan")
	RequestBodyMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = RequestBodyMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	RequestBodyMatchConditionParameters_Operator_STATUS_LessThan           = RequestBodyMatchConditionParameters_Operator_STATUS("LessThan")
	RequestBodyMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = RequestBodyMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	RequestBodyMatchConditionParameters_Operator_STATUS_RegEx              = RequestBodyMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to RequestBodyMatchConditionParameters_Operator_STATUS
var requestBodyMatchConditionParameters_Operator_STATUS_Values = map[string]RequestBodyMatchConditionParameters_Operator_STATUS{
	"any":                RequestBodyMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         RequestBodyMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           RequestBodyMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           RequestBodyMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              RequestBodyMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        RequestBodyMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": RequestBodyMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           RequestBodyMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    RequestBodyMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              RequestBodyMatchConditionParameters_Operator_STATUS_RegEx,
}

type RequestBodyMatchConditionParameters_TypeName_STATUS string

const RequestBodyMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestBodyConditionParameters = RequestBodyMatchConditionParameters_TypeName_STATUS("DeliveryRuleRequestBodyConditionParameters")

// Mapping from string to RequestBodyMatchConditionParameters_TypeName_STATUS
var requestBodyMatchConditionParameters_TypeName_STATUS_Values = map[string]RequestBodyMatchConditionParameters_TypeName_STATUS{
	"deliveryrulerequestbodyconditionparameters": RequestBodyMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestBodyConditionParameters,
}

type RequestHeaderMatchConditionParameters_Operator_STATUS string

const (
	RequestHeaderMatchConditionParameters_Operator_STATUS_Any                = RequestHeaderMatchConditionParameters_Operator_STATUS("Any")
	RequestHeaderMatchConditionParameters_Operator_STATUS_BeginsWith         = RequestHeaderMatchConditionParameters_Operator_STATUS("BeginsWith")
	RequestHeaderMatchConditionParameters_Operator_STATUS_Contains           = RequestHeaderMatchConditionParameters_Operator_STATUS("Contains")
	RequestHeaderMatchConditionParameters_Operator_STATUS_EndsWith           = RequestHeaderMatchConditionParameters_Operator_STATUS("EndsWith")
	RequestHeaderMatchConditionParameters_Operator_STATUS_Equal              = RequestHeaderMatchConditionParameters_Operator_STATUS("Equal")
	RequestHeaderMatchConditionParameters_Operator_STATUS_GreaterThan        = RequestHeaderMatchConditionParameters_Operator_STATUS("GreaterThan")
	RequestHeaderMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = RequestHeaderMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	RequestHeaderMatchConditionParameters_Operator_STATUS_LessThan           = RequestHeaderMatchConditionParameters_Operator_STATUS("LessThan")
	RequestHeaderMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = RequestHeaderMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	RequestHeaderMatchConditionParameters_Operator_STATUS_RegEx              = RequestHeaderMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to RequestHeaderMatchConditionParameters_Operator_STATUS
var requestHeaderMatchConditionParameters_Operator_STATUS_Values = map[string]RequestHeaderMatchConditionParameters_Operator_STATUS{
	"any":                RequestHeaderMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         RequestHeaderMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           RequestHeaderMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           RequestHeaderMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              RequestHeaderMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        RequestHeaderMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": RequestHeaderMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           RequestHeaderMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    RequestHeaderMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              RequestHeaderMatchConditionParameters_Operator_STATUS_RegEx,
}

type RequestHeaderMatchConditionParameters_TypeName_STATUS string

const RequestHeaderMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestHeaderConditionParameters = RequestHeaderMatchConditionParameters_TypeName_STATUS("DeliveryRuleRequestHeaderConditionParameters")

// Mapping from string to RequestHeaderMatchConditionParameters_TypeName_STATUS
var requestHeaderMatchConditionParameters_TypeName_STATUS_Values = map[string]RequestHeaderMatchConditionParameters_TypeName_STATUS{
	"deliveryrulerequestheaderconditionparameters": RequestHeaderMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestHeaderConditionParameters,
}

type RequestMethodMatchConditionParameters_MatchValues_STATUS string

const (
	RequestMethodMatchConditionParameters_MatchValues_STATUS_DELETE  = RequestMethodMatchConditionParameters_MatchValues_STATUS("DELETE")
	RequestMethodMatchConditionParameters_MatchValues_STATUS_GET     = RequestMethodMatchConditionParameters_MatchValues_STATUS("GET")
	RequestMethodMatchConditionParameters_MatchValues_STATUS_HEAD    = RequestMethodMatchConditionParameters_MatchValues_STATUS("HEAD")
	RequestMethodMatchConditionParameters_MatchValues_STATUS_OPTIONS = RequestMethodMatchConditionParameters_MatchValues_STATUS("OPTIONS")
	RequestMethodMatchConditionParameters_MatchValues_STATUS_POST    = RequestMethodMatchConditionParameters_MatchValues_STATUS("POST")
	RequestMethodMatchConditionParameters_MatchValues_STATUS_PUT     = RequestMethodMatchConditionParameters_MatchValues_STATUS("PUT")
	RequestMethodMatchConditionParameters_MatchValues_STATUS_TRACE   = RequestMethodMatchConditionParameters_MatchValues_STATUS("TRACE")
)

// Mapping from string to RequestMethodMatchConditionParameters_MatchValues_STATUS
var requestMethodMatchConditionParameters_MatchValues_STATUS_Values = map[string]RequestMethodMatchConditionParameters_MatchValues_STATUS{
	"delete":  RequestMethodMatchConditionParameters_MatchValues_STATUS_DELETE,
	"get":     RequestMethodMatchConditionParameters_MatchValues_STATUS_GET,
	"head":    RequestMethodMatchConditionParameters_MatchValues_STATUS_HEAD,
	"options": RequestMethodMatchConditionParameters_MatchValues_STATUS_OPTIONS,
	"post":    RequestMethodMatchConditionParameters_MatchValues_STATUS_POST,
	"put":     RequestMethodMatchConditionParameters_MatchValues_STATUS_PUT,
	"trace":   RequestMethodMatchConditionParameters_MatchValues_STATUS_TRACE,
}

type RequestMethodMatchConditionParameters_Operator_STATUS string

const RequestMethodMatchConditionParameters_Operator_STATUS_Equal = RequestMethodMatchConditionParameters_Operator_STATUS("Equal")

// Mapping from string to RequestMethodMatchConditionParameters_Operator_STATUS
var requestMethodMatchConditionParameters_Operator_STATUS_Values = map[string]RequestMethodMatchConditionParameters_Operator_STATUS{
	"equal": RequestMethodMatchConditionParameters_Operator_STATUS_Equal,
}

type RequestMethodMatchConditionParameters_TypeName_STATUS string

const RequestMethodMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestMethodConditionParameters = RequestMethodMatchConditionParameters_TypeName_STATUS("DeliveryRuleRequestMethodConditionParameters")

// Mapping from string to RequestMethodMatchConditionParameters_TypeName_STATUS
var requestMethodMatchConditionParameters_TypeName_STATUS_Values = map[string]RequestMethodMatchConditionParameters_TypeName_STATUS{
	"deliveryrulerequestmethodconditionparameters": RequestMethodMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestMethodConditionParameters,
}

type RequestSchemeMatchConditionParameters_MatchValues_STATUS string

const (
	RequestSchemeMatchConditionParameters_MatchValues_STATUS_HTTP  = RequestSchemeMatchConditionParameters_MatchValues_STATUS("HTTP")
	RequestSchemeMatchConditionParameters_MatchValues_STATUS_HTTPS = RequestSchemeMatchConditionParameters_MatchValues_STATUS("HTTPS")
)

// Mapping from string to RequestSchemeMatchConditionParameters_MatchValues_STATUS
var requestSchemeMatchConditionParameters_MatchValues_STATUS_Values = map[string]RequestSchemeMatchConditionParameters_MatchValues_STATUS{
	"http":  RequestSchemeMatchConditionParameters_MatchValues_STATUS_HTTP,
	"https": RequestSchemeMatchConditionParameters_MatchValues_STATUS_HTTPS,
}

type RequestSchemeMatchConditionParameters_Operator_STATUS string

const RequestSchemeMatchConditionParameters_Operator_STATUS_Equal = RequestSchemeMatchConditionParameters_Operator_STATUS("Equal")

// Mapping from string to RequestSchemeMatchConditionParameters_Operator_STATUS
var requestSchemeMatchConditionParameters_Operator_STATUS_Values = map[string]RequestSchemeMatchConditionParameters_Operator_STATUS{
	"equal": RequestSchemeMatchConditionParameters_Operator_STATUS_Equal,
}

type RequestSchemeMatchConditionParameters_TypeName_STATUS string

const RequestSchemeMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestSchemeConditionParameters = RequestSchemeMatchConditionParameters_TypeName_STATUS("DeliveryRuleRequestSchemeConditionParameters")

// Mapping from string to RequestSchemeMatchConditionParameters_TypeName_STATUS
var requestSchemeMatchConditionParameters_TypeName_STATUS_Values = map[string]RequestSchemeMatchConditionParameters_TypeName_STATUS{
	"deliveryrulerequestschemeconditionparameters": RequestSchemeMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestSchemeConditionParameters,
}

type RequestUriMatchConditionParameters_Operator_STATUS string

const (
	RequestUriMatchConditionParameters_Operator_STATUS_Any                = RequestUriMatchConditionParameters_Operator_STATUS("Any")
	RequestUriMatchConditionParameters_Operator_STATUS_BeginsWith         = RequestUriMatchConditionParameters_Operator_STATUS("BeginsWith")
	RequestUriMatchConditionParameters_Operator_STATUS_Contains           = RequestUriMatchConditionParameters_Operator_STATUS("Contains")
	RequestUriMatchConditionParameters_Operator_STATUS_EndsWith           = RequestUriMatchConditionParameters_Operator_STATUS("EndsWith")
	RequestUriMatchConditionParameters_Operator_STATUS_Equal              = RequestUriMatchConditionParameters_Operator_STATUS("Equal")
	RequestUriMatchConditionParameters_Operator_STATUS_GreaterThan        = RequestUriMatchConditionParameters_Operator_STATUS("GreaterThan")
	RequestUriMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = RequestUriMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	RequestUriMatchConditionParameters_Operator_STATUS_LessThan           = RequestUriMatchConditionParameters_Operator_STATUS("LessThan")
	RequestUriMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = RequestUriMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	RequestUriMatchConditionParameters_Operator_STATUS_RegEx              = RequestUriMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to RequestUriMatchConditionParameters_Operator_STATUS
var requestUriMatchConditionParameters_Operator_STATUS_Values = map[string]RequestUriMatchConditionParameters_Operator_STATUS{
	"any":                RequestUriMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         RequestUriMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           RequestUriMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           RequestUriMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              RequestUriMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        RequestUriMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": RequestUriMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           RequestUriMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    RequestUriMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              RequestUriMatchConditionParameters_Operator_STATUS_RegEx,
}

type RequestUriMatchConditionParameters_TypeName_STATUS string

const RequestUriMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestUriConditionParameters = RequestUriMatchConditionParameters_TypeName_STATUS("DeliveryRuleRequestUriConditionParameters")

// Mapping from string to RequestUriMatchConditionParameters_TypeName_STATUS
var requestUriMatchConditionParameters_TypeName_STATUS_Values = map[string]RequestUriMatchConditionParameters_TypeName_STATUS{
	"deliveryrulerequesturiconditionparameters": RequestUriMatchConditionParameters_TypeName_STATUS_DeliveryRuleRequestUriConditionParameters,
}

type RouteConfigurationOverrideActionParameters_TypeName_STATUS string

const RouteConfigurationOverrideActionParameters_TypeName_STATUS_DeliveryRuleRouteConfigurationOverrideActionParameters = RouteConfigurationOverrideActionParameters_TypeName_STATUS("DeliveryRuleRouteConfigurationOverrideActionParameters")

// Mapping from string to RouteConfigurationOverrideActionParameters_TypeName_STATUS
var routeConfigurationOverrideActionParameters_TypeName_STATUS_Values = map[string]RouteConfigurationOverrideActionParameters_TypeName_STATUS{
	"deliveryrulerouteconfigurationoverrideactionparameters": RouteConfigurationOverrideActionParameters_TypeName_STATUS_DeliveryRuleRouteConfigurationOverrideActionParameters,
}

type ServerPortMatchConditionParameters_Operator_STATUS string

const (
	ServerPortMatchConditionParameters_Operator_STATUS_Any                = ServerPortMatchConditionParameters_Operator_STATUS("Any")
	ServerPortMatchConditionParameters_Operator_STATUS_BeginsWith         = ServerPortMatchConditionParameters_Operator_STATUS("BeginsWith")
	ServerPortMatchConditionParameters_Operator_STATUS_Contains           = ServerPortMatchConditionParameters_Operator_STATUS("Contains")
	ServerPortMatchConditionParameters_Operator_STATUS_EndsWith           = ServerPortMatchConditionParameters_Operator_STATUS("EndsWith")
	ServerPortMatchConditionParameters_Operator_STATUS_Equal              = ServerPortMatchConditionParameters_Operator_STATUS("Equal")
	ServerPortMatchConditionParameters_Operator_STATUS_GreaterThan        = ServerPortMatchConditionParameters_Operator_STATUS("GreaterThan")
	ServerPortMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = ServerPortMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	ServerPortMatchConditionParameters_Operator_STATUS_LessThan           = ServerPortMatchConditionParameters_Operator_STATUS("LessThan")
	ServerPortMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = ServerPortMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	ServerPortMatchConditionParameters_Operator_STATUS_RegEx              = ServerPortMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to ServerPortMatchConditionParameters_Operator_STATUS
var serverPortMatchConditionParameters_Operator_STATUS_Values = map[string]ServerPortMatchConditionParameters_Operator_STATUS{
	"any":                ServerPortMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         ServerPortMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           ServerPortMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           ServerPortMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              ServerPortMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        ServerPortMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": ServerPortMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           ServerPortMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    ServerPortMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              ServerPortMatchConditionParameters_Operator_STATUS_RegEx,
}

type ServerPortMatchConditionParameters_TypeName_STATUS string

const ServerPortMatchConditionParameters_TypeName_STATUS_DeliveryRuleServerPortConditionParameters = ServerPortMatchConditionParameters_TypeName_STATUS("DeliveryRuleServerPortConditionParameters")

// Mapping from string to ServerPortMatchConditionParameters_TypeName_STATUS
var serverPortMatchConditionParameters_TypeName_STATUS_Values = map[string]ServerPortMatchConditionParameters_TypeName_STATUS{
	"deliveryruleserverportconditionparameters": ServerPortMatchConditionParameters_TypeName_STATUS_DeliveryRuleServerPortConditionParameters,
}

type SocketAddrMatchConditionParameters_Operator_STATUS string

const (
	SocketAddrMatchConditionParameters_Operator_STATUS_Any     = SocketAddrMatchConditionParameters_Operator_STATUS("Any")
	SocketAddrMatchConditionParameters_Operator_STATUS_IPMatch = SocketAddrMatchConditionParameters_Operator_STATUS("IPMatch")
)

// Mapping from string to SocketAddrMatchConditionParameters_Operator_STATUS
var socketAddrMatchConditionParameters_Operator_STATUS_Values = map[string]SocketAddrMatchConditionParameters_Operator_STATUS{
	"any":     SocketAddrMatchConditionParameters_Operator_STATUS_Any,
	"ipmatch": SocketAddrMatchConditionParameters_Operator_STATUS_IPMatch,
}

type SocketAddrMatchConditionParameters_TypeName_STATUS string

const SocketAddrMatchConditionParameters_TypeName_STATUS_DeliveryRuleSocketAddrConditionParameters = SocketAddrMatchConditionParameters_TypeName_STATUS("DeliveryRuleSocketAddrConditionParameters")

// Mapping from string to SocketAddrMatchConditionParameters_TypeName_STATUS
var socketAddrMatchConditionParameters_TypeName_STATUS_Values = map[string]SocketAddrMatchConditionParameters_TypeName_STATUS{
	"deliveryrulesocketaddrconditionparameters": SocketAddrMatchConditionParameters_TypeName_STATUS_DeliveryRuleSocketAddrConditionParameters,
}

// The protocol of an established TLS connection.
type SslProtocol_STATUS string

const (
	SslProtocol_STATUS_TLSv1  = SslProtocol_STATUS("TLSv1")
	SslProtocol_STATUS_TLSv11 = SslProtocol_STATUS("TLSv1.1")
	SslProtocol_STATUS_TLSv12 = SslProtocol_STATUS("TLSv1.2")
)

// Mapping from string to SslProtocol_STATUS
var sslProtocol_STATUS_Values = map[string]SslProtocol_STATUS{
	"tlsv1":   SslProtocol_STATUS_TLSv1,
	"tlsv1.1": SslProtocol_STATUS_TLSv11,
	"tlsv1.2": SslProtocol_STATUS_TLSv12,
}

type SslProtocolMatchConditionParameters_Operator_STATUS string

const SslProtocolMatchConditionParameters_Operator_STATUS_Equal = SslProtocolMatchConditionParameters_Operator_STATUS("Equal")

// Mapping from string to SslProtocolMatchConditionParameters_Operator_STATUS
var sslProtocolMatchConditionParameters_Operator_STATUS_Values = map[string]SslProtocolMatchConditionParameters_Operator_STATUS{
	"equal": SslProtocolMatchConditionParameters_Operator_STATUS_Equal,
}

type SslProtocolMatchConditionParameters_TypeName_STATUS string

const SslProtocolMatchConditionParameters_TypeName_STATUS_DeliveryRuleSslProtocolConditionParameters = SslProtocolMatchConditionParameters_TypeName_STATUS("DeliveryRuleSslProtocolConditionParameters")

// Mapping from string to SslProtocolMatchConditionParameters_TypeName_STATUS
var sslProtocolMatchConditionParameters_TypeName_STATUS_Values = map[string]SslProtocolMatchConditionParameters_TypeName_STATUS{
	"deliveryrulesslprotocolconditionparameters": SslProtocolMatchConditionParameters_TypeName_STATUS_DeliveryRuleSslProtocolConditionParameters,
}

// Describes what transforms are applied before matching
type Transform_STATUS string

const (
	Transform_STATUS_Lowercase   = Transform_STATUS("Lowercase")
	Transform_STATUS_RemoveNulls = Transform_STATUS("RemoveNulls")
	Transform_STATUS_Trim        = Transform_STATUS("Trim")
	Transform_STATUS_Uppercase   = Transform_STATUS("Uppercase")
	Transform_STATUS_UrlDecode   = Transform_STATUS("UrlDecode")
	Transform_STATUS_UrlEncode   = Transform_STATUS("UrlEncode")
)

// Mapping from string to Transform_STATUS
var transform_STATUS_Values = map[string]Transform_STATUS{
	"lowercase":   Transform_STATUS_Lowercase,
	"removenulls": Transform_STATUS_RemoveNulls,
	"trim":        Transform_STATUS_Trim,
	"uppercase":   Transform_STATUS_Uppercase,
	"urldecode":   Transform_STATUS_UrlDecode,
	"urlencode":   Transform_STATUS_UrlEncode,
}

type UrlFileExtensionMatchConditionParameters_Operator_STATUS string

const (
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_Any                = UrlFileExtensionMatchConditionParameters_Operator_STATUS("Any")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_BeginsWith         = UrlFileExtensionMatchConditionParameters_Operator_STATUS("BeginsWith")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_Contains           = UrlFileExtensionMatchConditionParameters_Operator_STATUS("Contains")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_EndsWith           = UrlFileExtensionMatchConditionParameters_Operator_STATUS("EndsWith")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_Equal              = UrlFileExtensionMatchConditionParameters_Operator_STATUS("Equal")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_GreaterThan        = UrlFileExtensionMatchConditionParameters_Operator_STATUS("GreaterThan")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = UrlFileExtensionMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_LessThan           = UrlFileExtensionMatchConditionParameters_Operator_STATUS("LessThan")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = UrlFileExtensionMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	UrlFileExtensionMatchConditionParameters_Operator_STATUS_RegEx              = UrlFileExtensionMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to UrlFileExtensionMatchConditionParameters_Operator_STATUS
var urlFileExtensionMatchConditionParameters_Operator_STATUS_Values = map[string]UrlFileExtensionMatchConditionParameters_Operator_STATUS{
	"any":                UrlFileExtensionMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         UrlFileExtensionMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           UrlFileExtensionMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           UrlFileExtensionMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              UrlFileExtensionMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        UrlFileExtensionMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": UrlFileExtensionMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           UrlFileExtensionMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    UrlFileExtensionMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              UrlFileExtensionMatchConditionParameters_Operator_STATUS_RegEx,
}

type UrlFileExtensionMatchConditionParameters_TypeName_STATUS string

const UrlFileExtensionMatchConditionParameters_TypeName_STATUS_DeliveryRuleUrlFileExtensionMatchConditionParameters = UrlFileExtensionMatchConditionParameters_TypeName_STATUS("DeliveryRuleUrlFileExtensionMatchConditionParameters")

// Mapping from string to UrlFileExtensionMatchConditionParameters_TypeName_STATUS
var urlFileExtensionMatchConditionParameters_TypeName_STATUS_Values = map[string]UrlFileExtensionMatchConditionParameters_TypeName_STATUS{
	"deliveryruleurlfileextensionmatchconditionparameters": UrlFileExtensionMatchConditionParameters_TypeName_STATUS_DeliveryRuleUrlFileExtensionMatchConditionParameters,
}

type UrlFileNameMatchConditionParameters_Operator_STATUS string

const (
	UrlFileNameMatchConditionParameters_Operator_STATUS_Any                = UrlFileNameMatchConditionParameters_Operator_STATUS("Any")
	UrlFileNameMatchConditionParameters_Operator_STATUS_BeginsWith         = UrlFileNameMatchConditionParameters_Operator_STATUS("BeginsWith")
	UrlFileNameMatchConditionParameters_Operator_STATUS_Contains           = UrlFileNameMatchConditionParameters_Operator_STATUS("Contains")
	UrlFileNameMatchConditionParameters_Operator_STATUS_EndsWith           = UrlFileNameMatchConditionParameters_Operator_STATUS("EndsWith")
	UrlFileNameMatchConditionParameters_Operator_STATUS_Equal              = UrlFileNameMatchConditionParameters_Operator_STATUS("Equal")
	UrlFileNameMatchConditionParameters_Operator_STATUS_GreaterThan        = UrlFileNameMatchConditionParameters_Operator_STATUS("GreaterThan")
	UrlFileNameMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = UrlFileNameMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	UrlFileNameMatchConditionParameters_Operator_STATUS_LessThan           = UrlFileNameMatchConditionParameters_Operator_STATUS("LessThan")
	UrlFileNameMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = UrlFileNameMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	UrlFileNameMatchConditionParameters_Operator_STATUS_RegEx              = UrlFileNameMatchConditionParameters_Operator_STATUS("RegEx")
)

// Mapping from string to UrlFileNameMatchConditionParameters_Operator_STATUS
var urlFileNameMatchConditionParameters_Operator_STATUS_Values = map[string]UrlFileNameMatchConditionParameters_Operator_STATUS{
	"any":                UrlFileNameMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         UrlFileNameMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           UrlFileNameMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           UrlFileNameMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              UrlFileNameMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        UrlFileNameMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": UrlFileNameMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           UrlFileNameMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    UrlFileNameMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              UrlFileNameMatchConditionParameters_Operator_STATUS_RegEx,
}

type UrlFileNameMatchConditionParameters_TypeName_STATUS string

const UrlFileNameMatchConditionParameters_TypeName_STATUS_DeliveryRuleUrlFilenameConditionParameters = UrlFileNameMatchConditionParameters_TypeName_STATUS("DeliveryRuleUrlFilenameConditionParameters")

// Mapping from string to UrlFileNameMatchConditionParameters_TypeName_STATUS
var urlFileNameMatchConditionParameters_TypeName_STATUS_Values = map[string]UrlFileNameMatchConditionParameters_TypeName_STATUS{
	"deliveryruleurlfilenameconditionparameters": UrlFileNameMatchConditionParameters_TypeName_STATUS_DeliveryRuleUrlFilenameConditionParameters,
}

type UrlPathMatchConditionParameters_Operator_STATUS string

const (
	UrlPathMatchConditionParameters_Operator_STATUS_Any                = UrlPathMatchConditionParameters_Operator_STATUS("Any")
	UrlPathMatchConditionParameters_Operator_STATUS_BeginsWith         = UrlPathMatchConditionParameters_Operator_STATUS("BeginsWith")
	UrlPathMatchConditionParameters_Operator_STATUS_Contains           = UrlPathMatchConditionParameters_Operator_STATUS("Contains")
	UrlPathMatchConditionParameters_Operator_STATUS_EndsWith           = UrlPathMatchConditionParameters_Operator_STATUS("EndsWith")
	UrlPathMatchConditionParameters_Operator_STATUS_Equal              = UrlPathMatchConditionParameters_Operator_STATUS("Equal")
	UrlPathMatchConditionParameters_Operator_STATUS_GreaterThan        = UrlPathMatchConditionParameters_Operator_STATUS("GreaterThan")
	UrlPathMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual = UrlPathMatchConditionParameters_Operator_STATUS("GreaterThanOrEqual")
	UrlPathMatchConditionParameters_Operator_STATUS_LessThan           = UrlPathMatchConditionParameters_Operator_STATUS("LessThan")
	UrlPathMatchConditionParameters_Operator_STATUS_LessThanOrEqual    = UrlPathMatchConditionParameters_Operator_STATUS("LessThanOrEqual")
	UrlPathMatchConditionParameters_Operator_STATUS_RegEx              = UrlPathMatchConditionParameters_Operator_STATUS("RegEx")
	UrlPathMatchConditionParameters_Operator_STATUS_Wildcard           = UrlPathMatchConditionParameters_Operator_STATUS("Wildcard")
)

// Mapping from string to UrlPathMatchConditionParameters_Operator_STATUS
var urlPathMatchConditionParameters_Operator_STATUS_Values = map[string]UrlPathMatchConditionParameters_Operator_STATUS{
	"any":                UrlPathMatchConditionParameters_Operator_STATUS_Any,
	"beginswith":         UrlPathMatchConditionParameters_Operator_STATUS_BeginsWith,
	"contains":           UrlPathMatchConditionParameters_Operator_STATUS_Contains,
	"endswith":           UrlPathMatchConditionParameters_Operator_STATUS_EndsWith,
	"equal":              UrlPathMatchConditionParameters_Operator_STATUS_Equal,
	"greaterthan":        UrlPathMatchConditionParameters_Operator_STATUS_GreaterThan,
	"greaterthanorequal": UrlPathMatchConditionParameters_Operator_STATUS_GreaterThanOrEqual,
	"lessthan":           UrlPathMatchConditionParameters_Operator_STATUS_LessThan,
	"lessthanorequal":    UrlPathMatchConditionParameters_Operator_STATUS_LessThanOrEqual,
	"regex":              UrlPathMatchConditionParameters_Operator_STATUS_RegEx,
	"wildcard":           UrlPathMatchConditionParameters_Operator_STATUS_Wildcard,
}

type UrlPathMatchConditionParameters_TypeName_STATUS string

const UrlPathMatchConditionParameters_TypeName_STATUS_DeliveryRuleUrlPathMatchConditionParameters = UrlPathMatchConditionParameters_TypeName_STATUS("DeliveryRuleUrlPathMatchConditionParameters")

// Mapping from string to UrlPathMatchConditionParameters_TypeName_STATUS
var urlPathMatchConditionParameters_TypeName_STATUS_Values = map[string]UrlPathMatchConditionParameters_TypeName_STATUS{
	"deliveryruleurlpathmatchconditionparameters": UrlPathMatchConditionParameters_TypeName_STATUS_DeliveryRuleUrlPathMatchConditionParameters,
}

type UrlRedirectActionParameters_DestinationProtocol_STATUS string

const (
	UrlRedirectActionParameters_DestinationProtocol_STATUS_Http         = UrlRedirectActionParameters_DestinationProtocol_STATUS("Http")
	UrlRedirectActionParameters_DestinationProtocol_STATUS_Https        = UrlRedirectActionParameters_DestinationProtocol_STATUS("Https")
	UrlRedirectActionParameters_DestinationProtocol_STATUS_MatchRequest = UrlRedirectActionParameters_DestinationProtocol_STATUS("MatchRequest")
)

// Mapping from string to UrlRedirectActionParameters_DestinationProtocol_STATUS
var urlRedirectActionParameters_DestinationProtocol_STATUS_Values = map[string]UrlRedirectActionParameters_DestinationProtocol_STATUS{
	"http":         UrlRedirectActionParameters_DestinationProtocol_STATUS_Http,
	"https":        UrlRedirectActionParameters_DestinationProtocol_STATUS_Https,
	"matchrequest": UrlRedirectActionParameters_DestinationProtocol_STATUS_MatchRequest,
}

type UrlRedirectActionParameters_RedirectType_STATUS string

const (
	UrlRedirectActionParameters_RedirectType_STATUS_Found             = UrlRedirectActionParameters_RedirectType_STATUS("Found")
	UrlRedirectActionParameters_RedirectType_STATUS_Moved             = UrlRedirectActionParameters_RedirectType_STATUS("Moved")
	UrlRedirectActionParameters_RedirectType_STATUS_PermanentRedirect = UrlRedirectActionParameters_RedirectType_STATUS("PermanentRedirect")
	UrlRedirectActionParameters_RedirectType_STATUS_TemporaryRedirect = UrlRedirectActionParameters_RedirectType_STATUS("TemporaryRedirect")
)

// Mapping from string to UrlRedirectActionParameters_RedirectType_STATUS
var urlRedirectActionParameters_RedirectType_STATUS_Values = map[string]UrlRedirectActionParameters_RedirectType_STATUS{
	"found":             UrlRedirectActionParameters_RedirectType_STATUS_Found,
	"moved":             UrlRedirectActionParameters_RedirectType_STATUS_Moved,
	"permanentredirect": UrlRedirectActionParameters_RedirectType_STATUS_PermanentRedirect,
	"temporaryredirect": UrlRedirectActionParameters_RedirectType_STATUS_TemporaryRedirect,
}

type UrlRedirectActionParameters_TypeName_STATUS string

const UrlRedirectActionParameters_TypeName_STATUS_DeliveryRuleUrlRedirectActionParameters = UrlRedirectActionParameters_TypeName_STATUS("DeliveryRuleUrlRedirectActionParameters")

// Mapping from string to UrlRedirectActionParameters_TypeName_STATUS
var urlRedirectActionParameters_TypeName_STATUS_Values = map[string]UrlRedirectActionParameters_TypeName_STATUS{
	"deliveryruleurlredirectactionparameters": UrlRedirectActionParameters_TypeName_STATUS_DeliveryRuleUrlRedirectActionParameters,
}

type UrlRewriteActionParameters_TypeName_STATUS string

const UrlRewriteActionParameters_TypeName_STATUS_DeliveryRuleUrlRewriteActionParameters = UrlRewriteActionParameters_TypeName_STATUS("DeliveryRuleUrlRewriteActionParameters")

// Mapping from string to UrlRewriteActionParameters_TypeName_STATUS
var urlRewriteActionParameters_TypeName_STATUS_Values = map[string]UrlRewriteActionParameters_TypeName_STATUS{
	"deliveryruleurlrewriteactionparameters": UrlRewriteActionParameters_TypeName_STATUS_DeliveryRuleUrlRewriteActionParameters,
}

type UrlSigningActionParameters_Algorithm_STATUS string

const UrlSigningActionParameters_Algorithm_STATUS_SHA256 = UrlSigningActionParameters_Algorithm_STATUS("SHA256")

// Mapping from string to UrlSigningActionParameters_Algorithm_STATUS
var urlSigningActionParameters_Algorithm_STATUS_Values = map[string]UrlSigningActionParameters_Algorithm_STATUS{
	"sha256": UrlSigningActionParameters_Algorithm_STATUS_SHA256,
}

type UrlSigningActionParameters_TypeName_STATUS string

const UrlSigningActionParameters_TypeName_STATUS_DeliveryRuleUrlSigningActionParameters = UrlSigningActionParameters_TypeName_STATUS("DeliveryRuleUrlSigningActionParameters")

// Mapping from string to UrlSigningActionParameters_TypeName_STATUS
var urlSigningActionParameters_TypeName_STATUS_Values = map[string]UrlSigningActionParameters_TypeName_STATUS{
	"deliveryruleurlsigningactionparameters": UrlSigningActionParameters_TypeName_STATUS_DeliveryRuleUrlSigningActionParameters,
}

// Defines how to identify a parameter for a specific purpose e.g. expires
type UrlSigningParamIdentifier_STATUS struct {
	// ParamIndicator: Indicates the purpose of the parameter
	ParamIndicator *UrlSigningParamIdentifier_ParamIndicator_STATUS `json:"paramIndicator,omitempty"`

	// ParamName: Parameter name
	ParamName *string `json:"paramName,omitempty"`
}

type CacheConfiguration_CacheBehavior_STATUS string

const (
	CacheConfiguration_CacheBehavior_STATUS_HonorOrigin             = CacheConfiguration_CacheBehavior_STATUS("HonorOrigin")
	CacheConfiguration_CacheBehavior_STATUS_OverrideAlways          = CacheConfiguration_CacheBehavior_STATUS("OverrideAlways")
	CacheConfiguration_CacheBehavior_STATUS_OverrideIfOriginMissing = CacheConfiguration_CacheBehavior_STATUS("OverrideIfOriginMissing")
)

// Mapping from string to CacheConfiguration_CacheBehavior_STATUS
var cacheConfiguration_CacheBehavior_STATUS_Values = map[string]CacheConfiguration_CacheBehavior_STATUS{
	"honororigin":             CacheConfiguration_CacheBehavior_STATUS_HonorOrigin,
	"overridealways":          CacheConfiguration_CacheBehavior_STATUS_OverrideAlways,
	"overrideiforiginmissing": CacheConfiguration_CacheBehavior_STATUS_OverrideIfOriginMissing,
}

type CacheConfiguration_IsCompressionEnabled_STATUS string

const (
	CacheConfiguration_IsCompressionEnabled_STATUS_Disabled = CacheConfiguration_IsCompressionEnabled_STATUS("Disabled")
	CacheConfiguration_IsCompressionEnabled_STATUS_Enabled  = CacheConfiguration_IsCompressionEnabled_STATUS("Enabled")
)

// Mapping from string to CacheConfiguration_IsCompressionEnabled_STATUS
var cacheConfiguration_IsCompressionEnabled_STATUS_Values = map[string]CacheConfiguration_IsCompressionEnabled_STATUS{
	"disabled": CacheConfiguration_IsCompressionEnabled_STATUS_Disabled,
	"enabled":  CacheConfiguration_IsCompressionEnabled_STATUS_Enabled,
}

type CacheConfiguration_QueryStringCachingBehavior_STATUS string

const (
	CacheConfiguration_QueryStringCachingBehavior_STATUS_IgnoreQueryString            = CacheConfiguration_QueryStringCachingBehavior_STATUS("IgnoreQueryString")
	CacheConfiguration_QueryStringCachingBehavior_STATUS_IgnoreSpecifiedQueryStrings  = CacheConfiguration_QueryStringCachingBehavior_STATUS("IgnoreSpecifiedQueryStrings")
	CacheConfiguration_QueryStringCachingBehavior_STATUS_IncludeSpecifiedQueryStrings = CacheConfiguration_QueryStringCachingBehavior_STATUS("IncludeSpecifiedQueryStrings")
	CacheConfiguration_QueryStringCachingBehavior_STATUS_UseQueryString               = CacheConfiguration_QueryStringCachingBehavior_STATUS("UseQueryString")
)

// Mapping from string to CacheConfiguration_QueryStringCachingBehavior_STATUS
var cacheConfiguration_QueryStringCachingBehavior_STATUS_Values = map[string]CacheConfiguration_QueryStringCachingBehavior_STATUS{
	"ignorequerystring":            CacheConfiguration_QueryStringCachingBehavior_STATUS_IgnoreQueryString,
	"ignorespecifiedquerystrings":  CacheConfiguration_QueryStringCachingBehavior_STATUS_IgnoreSpecifiedQueryStrings,
	"includespecifiedquerystrings": CacheConfiguration_QueryStringCachingBehavior_STATUS_IncludeSpecifiedQueryStrings,
	"usequerystring":               CacheConfiguration_QueryStringCachingBehavior_STATUS_UseQueryString,
}

type OriginGroupOverride_ForwardingProtocol_STATUS string

const (
	OriginGroupOverride_ForwardingProtocol_STATUS_HttpOnly     = OriginGroupOverride_ForwardingProtocol_STATUS("HttpOnly")
	OriginGroupOverride_ForwardingProtocol_STATUS_HttpsOnly    = OriginGroupOverride_ForwardingProtocol_STATUS("HttpsOnly")
	OriginGroupOverride_ForwardingProtocol_STATUS_MatchRequest = OriginGroupOverride_ForwardingProtocol_STATUS("MatchRequest")
)

// Mapping from string to OriginGroupOverride_ForwardingProtocol_STATUS
var originGroupOverride_ForwardingProtocol_STATUS_Values = map[string]OriginGroupOverride_ForwardingProtocol_STATUS{
	"httponly":     OriginGroupOverride_ForwardingProtocol_STATUS_HttpOnly,
	"httpsonly":    OriginGroupOverride_ForwardingProtocol_STATUS_HttpsOnly,
	"matchrequest": OriginGroupOverride_ForwardingProtocol_STATUS_MatchRequest,
}

type UrlSigningParamIdentifier_ParamIndicator_STATUS string

const (
	UrlSigningParamIdentifier_ParamIndicator_STATUS_Expires   = UrlSigningParamIdentifier_ParamIndicator_STATUS("Expires")
	UrlSigningParamIdentifier_ParamIndicator_STATUS_KeyId     = UrlSigningParamIdentifier_ParamIndicator_STATUS("KeyId")
	UrlSigningParamIdentifier_ParamIndicator_STATUS_Signature = UrlSigningParamIdentifier_ParamIndicator_STATUS("Signature")
)

// Mapping from string to UrlSigningParamIdentifier_ParamIndicator_STATUS
var urlSigningParamIdentifier_ParamIndicator_STATUS_Values = map[string]UrlSigningParamIdentifier_ParamIndicator_STATUS{
	"expires":   UrlSigningParamIdentifier_ParamIndicator_STATUS_Expires,
	"keyid":     UrlSigningParamIdentifier_ParamIndicator_STATUS_KeyId,
	"signature": UrlSigningParamIdentifier_ParamIndicator_STATUS_Signature,
}
