pspulumiyaml.azurenative.cdn.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionCdnGetAFDCustomDomain
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the domain under the profile which is unique globally.)')]
        [string]
        $customDomainName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["customDomainName"] = $customDomainName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getAFDCustomDomain -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetAFDOrigin
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin group which is unique within the profile.)')]
        [string]
        $originGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin which is unique within the profile.)')]
        [string]
        $originName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["originGroupName"] = $originGroupName
        $arguments["originName"] = $originName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getAFDOrigin -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the rule set under the profile.)')]
        [string]
        $ruleSetName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the delivery rule which is unique within the endpoint.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleName"] = $ruleName
        $arguments["ruleSetName"] = $ruleSetName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the routing rule.)')]
        [string]
        $routeName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["routeName"] = $routeName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getRoute -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetProfileSupportedOptimizationTypes
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getProfileSupportedOptimizationTypes -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetOriginGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin group which is unique within the endpoint.)')]
        [string]
        $originGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["originGroupName"] = $originGroupName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getOriginGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetSecurityPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the security policy under the profile.)')]
        [string]
        $securityPolicyName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["securityPolicyName"] = $securityPolicyName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getSecurityPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetAFDEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getAFDEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetSecret
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Secret under the profile.)')]
        [string]
        $secretName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["secretName"] = $secretName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getSecret -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getProfile -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetCustomDomain
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the custom domain within an endpoint.)')]
        [string]
        $customDomainName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["customDomainName"] = $customDomainName
        $arguments["endpointName"] = $endpointName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getCustomDomain -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetOrigin
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin which is unique within the endpoint.)')]
        [string]
        $originName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["originName"] = $originName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getOrigin -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetAFDOriginGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin group which is unique within the endpoint.)')]
        [string]
        $originGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["originGroupName"] = $originGroupName
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getAFDOriginGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the rule set under the profile which is unique globally.)')]
        [string]
        $ruleSetName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName
    )

    process
    {
        $arguments = @{}
        $arguments["profileName"] = $profileName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleSetName"] = $ruleSetName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getRuleSet -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCdnGetPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the CdnWebApplicationFirewallPolicy.)')]
        [string]
        $policyName
    )

    process
    {
        $arguments = @{}
        $arguments["policyName"] = $policyName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cdn:getPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class ResourceReference
{
    [string] $id
}
function New-AzureNativeTypeCdnResourceReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([ResourceReference]$PSBoundParameters)
    }
}
class DeliveryRule
{
    [object] $actions #todo add class here
    [string] $name
    [object] $conditions #todo add class here
    [int] $order
}
function New-AzureNativeTypeCdnDeliveryRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of actions that are executed when all the conditions of a rule are satisfied.)')]
        $actions,
        [parameter(mandatory=$False,HelpMessage='Name of the rule)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='A list of conditions that must be matched for the actions to be executed)')]
        $conditions,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [int]
        $order
    )

    process
    {
        return $([DeliveryRule]$PSBoundParameters)
    }
}
class EndpointPropertiesUpdateParametersDeliveryPolicy
{
    [DeliveryRule[]] $rules
    [string] $description
}
function New-AzureNativeTypeCdnEndpointPropertiesUpdateParametersDeliveryPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of the delivery rules.)')]
        $rules,
        [parameter(mandatory=$False,HelpMessage='User-friendly description of the policy.)')]
        [string]
        $description
    )

    process
    {
        return $([EndpointPropertiesUpdateParametersDeliveryPolicy]$PSBoundParameters)
    }
}
class EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink
{
    [string] $id
}
function New-AzureNativeTypeCdnEndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink]$PSBoundParameters)
    }
}
function New-AzureNativeCdnEndpoint
{
    [Alias('azure_native_cdn_endpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates whether HTTPS traffic is allowed on the endpoint. Default value is true. At least one protocol (HTTP or HTTPS) must be allowed.)')]
        [bool]
        $isHttpsAllowed,
        [parameter(mandatory=$False,HelpMessage='The source of the content being delivered via CDN.)')]
        $origins,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [string]
        $originHostHeader,
        [parameter(mandatory=$False,HelpMessage='A directory path on the origin that CDN can use to retrieve content from, e.g. contoso.cloudapp.net/originpath.)')]
        [string]
        $originPath,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='A reference to the origin group.)')]
        [ResourceReference]
        $defaultOriginGroup,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [string]
        [ValidateSet('GeneralWebDelivery', 'GeneralMediaStreaming', 'VideoOnDemandMediaStreaming', 'LargeFileDownload', 'DynamicSiteAcceleration')]
        $optimizationType,
        [parameter(mandatory=$False,HelpMessage='The origin groups comprising of origins that are used for load balancing the traffic based on availability.)')]
        $originGroups,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A policy that specifies the delivery rules to be used for an endpoint.)')]
        [EndpointPropertiesUpdateParametersDeliveryPolicy]
        $deliveryPolicy,
        [parameter(mandatory=$False,HelpMessage='Indicates whether HTTP traffic is allowed on the endpoint. Default value is true. At least one protocol (HTTP or HTTPS) must be allowed.)')]
        [bool]
        $isHttpAllowed,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [bool]
        $isCompressionEnabled,
        [parameter(mandatory=$False,HelpMessage='List of content types on which compression applies. The value should be a valid MIME type.)')]
        [string[]]
        $contentTypesToCompress,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='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,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [string]
        $probePath,
        [parameter(mandatory=$False,HelpMessage='List of keys used to validate the signed URL hashes.)')]
        $urlSigningKeys,
        [parameter(mandatory=$False,HelpMessage='Defines the Web Application Firewall policy for the endpoint (if applicable))')]
        [EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink]
        $webApplicationFirewallPolicyLink,
        [parameter(mandatory=$False,HelpMessage='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,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:Endpoint")

        $resource.properties["origins"] = $origins
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'isHttpsAllowed')
        {
            $resource.properties["isHttpsAllowed"] = $isHttpsAllowed
        }

        if($PSBoundParameters.Keys -icontains 'originHostHeader')
        {
            $resource.properties["originHostHeader"] = $originHostHeader
        }

        if($PSBoundParameters.Keys -icontains 'originPath')
        {
            $resource.properties["originPath"] = $originPath
        }

        if($PSBoundParameters.Keys -icontains 'endpointName')
        {
            $resource.properties["endpointName"] = $endpointName
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'defaultOriginGroup')
        {
            $resource.properties["defaultOriginGroup"] = $defaultOriginGroup
        }

        if($PSBoundParameters.Keys -icontains 'optimizationType')
        {
            $resource.properties["optimizationType"] = $optimizationType
        }

        if($PSBoundParameters.Keys -icontains 'originGroups')
        {
            $resource.properties["originGroups"] = $originGroups
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'deliveryPolicy')
        {
            $resource.properties["deliveryPolicy"] = $deliveryPolicy
        }

        if($PSBoundParameters.Keys -icontains 'isHttpAllowed')
        {
            $resource.properties["isHttpAllowed"] = $isHttpAllowed
        }

        if($PSBoundParameters.Keys -icontains 'isCompressionEnabled')
        {
            $resource.properties["isCompressionEnabled"] = $isCompressionEnabled
        }

        if($PSBoundParameters.Keys -icontains 'contentTypesToCompress')
        {
            $resource.properties["contentTypesToCompress"] = $contentTypesToCompress
        }

        if($PSBoundParameters.Keys -icontains 'geoFilters')
        {
            $resource.properties["geoFilters"] = $geoFilters
        }

        if($PSBoundParameters.Keys -icontains 'probePath')
        {
            $resource.properties["probePath"] = $probePath
        }

        if($PSBoundParameters.Keys -icontains 'urlSigningKeys')
        {
            $resource.properties["urlSigningKeys"] = $urlSigningKeys
        }

        if($PSBoundParameters.Keys -icontains 'webApplicationFirewallPolicyLink')
        {
            $resource.properties["webApplicationFirewallPolicyLink"] = $webApplicationFirewallPolicyLink
        }

        if($PSBoundParameters.Keys -icontains 'queryStringCachingBehavior')
        {
            $resource.properties["queryStringCachingBehavior"] = $queryStringCachingBehavior
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class SecurityPolicyWebApplicationFirewallAssociation
{
    [string[]] $patternsToMatch
    [ResourceReference[]] $domains
}
function New-AzureNativeTypeCdnSecurityPolicyWebApplicationFirewallAssociation
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of paths)')]
        [string[]]
        $patternsToMatch,
        [parameter(mandatory=$False,HelpMessage='List of domains.)')]
        $domains
    )

    process
    {
        return $([SecurityPolicyWebApplicationFirewallAssociation]$PSBoundParameters)
    }
}
class SecurityPolicyWebApplicationFirewallParameters
{
    [ResourceReference] $wafPolicy
    [SecurityPolicyWebApplicationFirewallAssociation[]] $associations
    [string] $type
}
function New-AzureNativeTypeCdnSecurityPolicyWebApplicationFirewallParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [ResourceReference]
        $wafPolicy,
        [parameter(mandatory=$False,HelpMessage='Waf associations)')]
        $associations,
        [parameter(mandatory=$False,HelpMessage='The type of the Security policy to create.
Expected value is ''WebApplicationFirewall''.)'
)]
        [string]
        $type
    )

    process
    {
        return $([SecurityPolicyWebApplicationFirewallParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnSecurityPolicy
{
    [Alias('azure_native_cdn_securitypolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the security policy under the profile.)')]
        [string]
        $securityPolicyName,
        [parameter(mandatory=$False,HelpMessage='object which contains security policy parameters)')]
        [SecurityPolicyWebApplicationFirewallParameters]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:SecurityPolicy")

        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'securityPolicyName')
        {
            $resource.properties["securityPolicyName"] = $securityPolicyName
        }

        if($PSBoundParameters.Keys -icontains 'parameters')
        {
            $resource.properties["parameters"] = $parameters
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class AFDDomainHttpsParameters
{
    [ResourceReference] $secret
    [ValidateSet('CustomerCertificate', 'ManagedCertificate')]
    [string] $certificateType
    [ValidateSet('TLS10', 'TLS12')]
    [object] $minimumTlsVersion
}
function New-AzureNativeTypeCdnAFDDomainHttpsParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource reference to the secret. ie. subs/rg/profile/secret)')]
        [ResourceReference]
        $secret,
        [parameter(mandatory=$False,HelpMessage='Defines the source of the SSL certificate.)')]
        [string]
        [ValidateSet('CustomerCertificate', 'ManagedCertificate')]
        $certificateType,
        [parameter(mandatory=$False,HelpMessage='TLS protocol version that will be used for Https)')]
        $minimumTlsVersion
    )

    process
    {
        return $([AFDDomainHttpsParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnAFDCustomDomain
{
    [Alias('azure_native_cdn_afdcustomdomain')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource reference to the Azure DNS zone)')]
        [ResourceReference]
        $azureDnsZone,
        [parameter(mandatory=$False,HelpMessage='The configuration specifying how to enable HTTPS for the domain - using AzureFrontDoor managed certificate or user''s own certificate. If not specified, enabling ssl uses AzureFrontDoor managed certificate by default.)')]
        [AFDDomainHttpsParameters]
        $tlsSettings,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Name of the domain under the profile which is unique globally)')]
        [string]
        $customDomainName,
        [parameter(mandatory=$False,HelpMessage='The host name of the domain. Must be a domain name.)')]
        [string]
        $hostName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:AFDCustomDomain")

        $resource.properties["hostName"] = $hostName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'azureDnsZone')
        {
            $resource.properties["azureDnsZone"] = $azureDnsZone
        }

        if($PSBoundParameters.Keys -icontains 'tlsSettings')
        {
            $resource.properties["tlsSettings"] = $tlsSettings
        }

        if($PSBoundParameters.Keys -icontains 'customDomainName')
        {
            $resource.properties["customDomainName"] = $customDomainName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class UrlSigningKeyParameters
{
    [ResourceReference] $secretSource
    [string] $type
    [string] $secretVersion
    [string] $keyId
}
function New-AzureNativeTypeCdnUrlSigningKeyParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource reference to the KV secret)')]
        [ResourceReference]
        $secretSource,
        [parameter(mandatory=$False,HelpMessage='The type of the Secret to create.
Expected value is ''UrlSigningKey''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Version of the secret to be used)')]
        [string]
        $secretVersion,
        [parameter(mandatory=$False,HelpMessage='Defines the customer defined key Id. This id will exist in the incoming request to indicate the key used to form the hash.)')]
        [string]
        $keyId
    )

    process
    {
        return $([UrlSigningKeyParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnSecret
{
    [Alias('azure_native_cdn_secret')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Secret under the profile.)')]
        [string]
        $secretName,
        [parameter(mandatory=$False,HelpMessage='object which contains secret parameters)')]
        [UrlSigningKeyParameters]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:Secret")

        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'secretName')
        {
            $resource.properties["secretName"] = $secretName
        }

        if($PSBoundParameters.Keys -icontains 'parameters')
        {
            $resource.properties["parameters"] = $parameters
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnOrigin
{
    [Alias('azure_native_cdn_origin')]
    param (
        [parameter(mandatory=$False,HelpMessage='Weight of the origin in given origin group for load balancing. Must be between 1 and 1000)')]
        [int]
        $weight,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='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. This overrides the host header defined at Endpoint)')]
        [string]
        $originHostHeader,
        [parameter(mandatory=$False,HelpMessage='The location of the Private Link resource. Required only if ''privateLinkResourceId'' is populated)')]
        [string]
        $privateLinkLocation,
        [parameter(mandatory=$False,HelpMessage='The Alias of the Private Link resource. Populating this optional field indicates that this origin is ''Private'')')]
        [string]
        $privateLinkAlias,
        [parameter(mandatory=$False,HelpMessage='The value of the HTTPS port. Must be between 1 and 65535.)')]
        [int]
        $httpsPort,
        [parameter(mandatory=$False,HelpMessage='The address of the origin. Domain names, IPv4 addresses, and IPv6 addresses are supported.This should be unique across all origins in an endpoint.)')]
        [string]
        $hostName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin that is unique within the endpoint.)')]
        [string]
        $originName,
        [parameter(mandatory=$False,HelpMessage='The value of the HTTP port. Must be between 1 and 65535.)')]
        [int]
        $httpPort,
        [parameter(mandatory=$False,HelpMessage='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)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='The Resource Id of the Private Link resource. Populating this optional field indicates that this backend is ''Private'')')]
        [string]
        $privateLinkResourceId,
        [parameter(mandatory=$False,HelpMessage='Origin is enabled for load balancing or not)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='A custom message to be included in the approval request to connect to the Private Link.)')]
        [string]
        $privateLinkApprovalMessage,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:Origin")

        $resource.properties["endpointName"] = $endpointName
        $resource.properties["hostName"] = $hostName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'weight')
        {
            $resource.properties["weight"] = $weight
        }

        if($PSBoundParameters.Keys -icontains 'originHostHeader')
        {
            $resource.properties["originHostHeader"] = $originHostHeader
        }

        if($PSBoundParameters.Keys -icontains 'privateLinkLocation')
        {
            $resource.properties["privateLinkLocation"] = $privateLinkLocation
        }

        if($PSBoundParameters.Keys -icontains 'privateLinkAlias')
        {
            $resource.properties["privateLinkAlias"] = $privateLinkAlias
        }

        if($PSBoundParameters.Keys -icontains 'httpsPort')
        {
            $resource.properties["httpsPort"] = $httpsPort
        }

        if($PSBoundParameters.Keys -icontains 'originName')
        {
            $resource.properties["originName"] = $originName
        }

        if($PSBoundParameters.Keys -icontains 'httpPort')
        {
            $resource.properties["httpPort"] = $httpPort
        }

        if($PSBoundParameters.Keys -icontains 'priority')
        {
            $resource.properties["priority"] = $priority
        }

        if($PSBoundParameters.Keys -icontains 'privateLinkResourceId')
        {
            $resource.properties["privateLinkResourceId"] = $privateLinkResourceId
        }

        if($PSBoundParameters.Keys -icontains 'enabled')
        {
            $resource.properties["enabled"] = $enabled
        }

        if($PSBoundParameters.Keys -icontains 'privateLinkApprovalMessage')
        {
            $resource.properties["privateLinkApprovalMessage"] = $privateLinkApprovalMessage
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ValidateSet('Standard_Verizon', 'Premium_Verizon', 'Custom_Verizon', 'Standard_Akamai', 'Standard_ChinaCdn', 'Standard_Microsoft', 'Premium_ChinaCdn', 'Standard_AzureFrontDoor', 'Premium_AzureFrontDoor', 'Standard_955BandWidth_ChinaCdn', 'Standard_AvgBandWidth_ChinaCdn', 'StandardPlus_ChinaCdn', 'StandardPlus_955BandWidth_ChinaCdn', 'StandardPlus_AvgBandWidth_ChinaCdn')]
    [string] $name
}
function New-AzureNativeTypeCdnSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the pricing tier.)')]
        [string]
        [ValidateSet('Standard_Verizon', 'Premium_Verizon', 'Custom_Verizon', 'Standard_Akamai', 'Standard_ChinaCdn', 'Standard_Microsoft', 'Premium_ChinaCdn', 'Standard_AzureFrontDoor', 'Premium_AzureFrontDoor', 'Standard_955BandWidth_ChinaCdn', 'Standard_AvgBandWidth_ChinaCdn', 'StandardPlus_ChinaCdn', 'StandardPlus_955BandWidth_ChinaCdn', 'StandardPlus_AvgBandWidth_ChinaCdn')]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
function New-AzureNativeCdnProfile
{
    [Alias('azure_native_cdn_profile')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The pricing tier (defines a CDN provider, feature list and rate) of the CDN profile.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:Profile")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'profileName')
        {
            $resource.properties["profileName"] = $profileName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class CompressionSettings
{
    [string[]] $contentTypesToCompress
    [bool] $isCompressionEnabled
}
function New-AzureNativeTypeCdnCompressionSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of content types on which compression applies. The value should be a valid MIME type.)')]
        [string[]]
        $contentTypesToCompress,
        [parameter(mandatory=$False,HelpMessage='Indicates whether content compression is enabled on AzureFrontDoor. 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 AzureFrontDoor when requested content is smaller than 1 byte or larger than 1 MB.)')]
        [bool]
        $isCompressionEnabled
    )

    process
    {
        return $([CompressionSettings]$PSBoundParameters)
    }
}
function New-AzureNativeCdnRoute
{
    [Alias('azure_native_cdn_route')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the routing rule.)')]
        [string]
        $routeName,
        [parameter(mandatory=$False,HelpMessage='The route patterns of the rule.)')]
        [string[]]
        $patternsToMatch,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='A reference to the origin group.)')]
        [ResourceReference]
        $originGroup,
        [parameter(mandatory=$False,HelpMessage='List of supported protocols for this route.)')]
        $supportedProtocols,
        [parameter(mandatory=$False,HelpMessage='Domains referenced by this endpoint.)')]
        $customDomains,
        [parameter(mandatory=$False,HelpMessage='Whether to enable use of this rule. Permitted values are ''Enabled'' or ''Disabled'')')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='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,
        [parameter(mandatory=$False,HelpMessage='compression settings.)')]
        [CompressionSettings]
        $compressionSettings,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='rule sets referenced by this endpoint.)')]
        $ruleSets,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='whether this route will be linked to the default endpoint domain.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $linkToDefaultDomain,
        [parameter(mandatory=$False,HelpMessage='A directory path on the origin that AzureFrontDoor can use to retrieve content from, e.g. contoso.cloudapp.net/originpath.)')]
        [string]
        $originPath,
        [parameter(mandatory=$False,HelpMessage='Whether to automatically redirect HTTP traffic to HTTPS traffic. Note that this is a easy way to set up this rule and it will be the first rule that gets executed.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $httpsRedirect,
        [parameter(mandatory=$False,HelpMessage='Protocol this rule will use when forwarding traffic to backends.)')]
        [string]
        [ValidateSet('HttpOnly', 'HttpsOnly', 'MatchRequest')]
        $forwardingProtocol,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:Route")

        $resource.properties["endpointName"] = $endpointName
        $resource.properties["originGroup"] = $originGroup
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'routeName')
        {
            $resource.properties["routeName"] = $routeName
        }

        if($PSBoundParameters.Keys -icontains 'patternsToMatch')
        {
            $resource.properties["patternsToMatch"] = $patternsToMatch
        }

        if($PSBoundParameters.Keys -icontains 'supportedProtocols')
        {
            $resource.properties["supportedProtocols"] = $supportedProtocols
        }

        if($PSBoundParameters.Keys -icontains 'customDomains')
        {
            $resource.properties["customDomains"] = $customDomains
        }

        if($PSBoundParameters.Keys -icontains 'enabledState')
        {
            $resource.properties["enabledState"] = $enabledState
        }

        if($PSBoundParameters.Keys -icontains 'queryStringCachingBehavior')
        {
            $resource.properties["queryStringCachingBehavior"] = $queryStringCachingBehavior
        }

        if($PSBoundParameters.Keys -icontains 'compressionSettings')
        {
            $resource.properties["compressionSettings"] = $compressionSettings
        }

        if($PSBoundParameters.Keys -icontains 'ruleSets')
        {
            $resource.properties["ruleSets"] = $ruleSets
        }

        if($PSBoundParameters.Keys -icontains 'linkToDefaultDomain')
        {
            $resource.properties["linkToDefaultDomain"] = $linkToDefaultDomain
        }

        if($PSBoundParameters.Keys -icontains 'originPath')
        {
            $resource.properties["originPath"] = $originPath
        }

        if($PSBoundParameters.Keys -icontains 'httpsRedirect')
        {
            $resource.properties["httpsRedirect"] = $httpsRedirect
        }

        if($PSBoundParameters.Keys -icontains 'forwardingProtocol')
        {
            $resource.properties["forwardingProtocol"] = $forwardingProtocol
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class ManagedRuleOverride
{
    [ValidateSet('Disabled', 'Enabled')]
    [string] $enabledState
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [string] $ruleId
}
function New-AzureNativeTypeCdnManagedRuleOverride
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes if the managed rule is in enabled or disabled state. Defaults to Disabled if not specified.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='Describes the override action to be applied when rule matches.)')]
        [string]
        [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
        $action,
        [parameter(mandatory=$False,HelpMessage='Identifier for the managed rule.)')]
        [string]
        $ruleId
    )

    process
    {
        return $([ManagedRuleOverride]$PSBoundParameters)
    }
}
class ManagedRuleGroupOverride
{
    [string] $ruleGroupName
    [ManagedRuleOverride[]] $rules
}
function New-AzureNativeTypeCdnManagedRuleGroupOverride
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes the managed rule group within the rule set to override)')]
        [string]
        $ruleGroupName,
        [parameter(mandatory=$False,HelpMessage='List of rules that will be disabled. If none specified, all rules in the group will be disabled.)')]
        $rules
    )

    process
    {
        return $([ManagedRuleGroupOverride]$PSBoundParameters)
    }
}
class ManagedRuleSet
{
    [string] $ruleSetType
    [ManagedRuleGroupOverride[]] $ruleGroupOverrides
    [int] $anomalyScore
    [string] $ruleSetVersion
}
function New-AzureNativeTypeCdnManagedRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the rule set type to use.)')]
        [string]
        $ruleSetType,
        [parameter(mandatory=$False,HelpMessage='Defines the rule overrides to apply to the rule set.)')]
        $ruleGroupOverrides,
        [parameter(mandatory=$False,HelpMessage='Verizon only : If the rule set supports anomaly detection mode, this describes the threshold for blocking requests.)')]
        [int]
        $anomalyScore,
        [parameter(mandatory=$False,HelpMessage='Defines the version of the rule set to use.)')]
        [string]
        $ruleSetVersion
    )

    process
    {
        return $([ManagedRuleSet]$PSBoundParameters)
    }
}
class ManagedRuleSetList
{
    [ManagedRuleSet[]] $managedRuleSets
}
function New-AzureNativeTypeCdnManagedRuleSetList
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of rule sets.)')]
        $managedRuleSets
    )

    process
    {
        return $([ManagedRuleSetList]$PSBoundParameters)
    }
}
class PolicySettings
{
    [string] $defaultRedirectUrl
    [int] $defaultCustomBlockResponseStatusCode
    [string] $defaultCustomBlockResponseBody
    [ValidateSet('Prevention', 'Detection')]
    [string] $mode
    [ValidateSet('Disabled', 'Enabled')]
    [string] $enabledState
}
function New-AzureNativeTypeCdnPolicySettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='If action type is redirect, this field represents the default redirect URL for the client.)')]
        [string]
        $defaultRedirectUrl,
        [parameter(mandatory=$False,HelpMessage='If the action type is block, this field defines the default customer overridable http response status code.)')]
        [int]
        $defaultCustomBlockResponseStatusCode,
        [parameter(mandatory=$False,HelpMessage='If the action type is block, customer can override the response body. The body must be specified in base64 encoding.)')]
        [string]
        $defaultCustomBlockResponseBody,
        [parameter(mandatory=$False,HelpMessage='Describes if it is in detection mode or prevention mode at policy level.)')]
        [string]
        [ValidateSet('Prevention', 'Detection')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='describes if the policy is in enabled state or disabled state)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $enabledState
    )

    process
    {
        return $([PolicySettings]$PSBoundParameters)
    }
}
class MatchCondition
{
    [ValidateSet('Disabled', 'Enabled')]
    [bool] $negateCondition
    [ValidateSet('Disabled', 'Enabled')]
    [string] $selector
    [ValidateSet('Disabled', 'Enabled')]
    [string[]] $matchValue
    [ValidateSet('Disabled', 'Enabled')]
    [string[]] $transforms
    [ValidateSet('Any', 'IPMatch', 'GeoMatch', 'Equal', 'Contains', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'BeginsWith', 'EndsWith', 'RegEx')]
    [string] $operator
    [ValidateSet('RemoteAddress', 'RequestMethod', 'QueryString', 'PostArgs', 'RequestUri', 'RequestHeader', 'RequestBody', 'RequestScheme', 'UrlPath', 'UrlFileExtension', 'UrlFileName', 'HttpVersion', 'Cookies', 'IsDevice')]
    [string] $matchVariable
}
function New-AzureNativeTypeCdnMatchCondition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes if the result of this condition should be negated.)')]
        [bool]
        $negateCondition,
        [parameter(mandatory=$False,HelpMessage='Selector can used to match a specific key for QueryString, Cookies, RequestHeader or PostArgs.)')]
        [string]
        $selector,
        [parameter(mandatory=$False,HelpMessage='List of possible match values.)')]
        [string[]]
        $matchValue,
        [parameter(mandatory=$False,HelpMessage='List of transforms.)')]
        $transforms,
        [parameter(mandatory=$False,HelpMessage='Describes operator to be matched)')]
        [string]
        [ValidateSet('Any', 'IPMatch', 'GeoMatch', 'Equal', 'Contains', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'BeginsWith', 'EndsWith', 'RegEx')]
        $operator,
        [parameter(mandatory=$False,HelpMessage='Match variable to compare against.)')]
        [string]
        [ValidateSet('RemoteAddress', 'RequestMethod', 'QueryString', 'PostArgs', 'RequestUri', 'RequestHeader', 'RequestBody', 'RequestScheme', 'UrlPath', 'UrlFileExtension', 'UrlFileName', 'HttpVersion', 'Cookies', 'IsDevice')]
        $matchVariable
    )

    process
    {
        return $([MatchCondition]$PSBoundParameters)
    }
}
class CustomRule
{
    [ValidateSet('Disabled', 'Enabled')]
    [string] $enabledState
    [ValidateSet('Disabled', 'Enabled')]
    [MatchCondition[]] $matchConditions
    [ValidateSet('Disabled', 'Enabled')]
    [string] $name
    [ValidateSet('Disabled', 'Enabled')]
    [int] $priority
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
}
function New-AzureNativeTypeCdnCustomRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='List of match conditions.)')]
        $matchConditions,
        [parameter(mandatory=$False,HelpMessage='Defines the name of the custom rule)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Defines in what order this rule be evaluated in the overall list of custom rules)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='Describes what action to be applied when rule matches)')]
        [string]
        [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
        $action
    )

    process
    {
        return $([CustomRule]$PSBoundParameters)
    }
}
class CustomRuleList
{
    [CustomRule[]] $rules
}
function New-AzureNativeTypeCdnCustomRuleList
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of rules)')]
        $rules
    )

    process
    {
        return $([CustomRuleList]$PSBoundParameters)
    }
}
class RateLimitRule
{
    [string] $name
    [MatchCondition[]] $matchConditions
    [int] $rateLimitThreshold
    [ValidateSet('Disabled', 'Enabled')]
    [string] $enabledState
    [ValidateSet('Disabled', 'Enabled')]
    [int] $rateLimitDurationInMinutes
    [ValidateSet('Disabled', 'Enabled')]
    [int] $priority
    [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
}
function New-AzureNativeTypeCdnRateLimitRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the name of the custom rule)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='List of match conditions.)')]
        $matchConditions,
        [parameter(mandatory=$False,HelpMessage='Defines rate limit threshold.)')]
        [int]
        $rateLimitThreshold,
        [parameter(mandatory=$False,HelpMessage='Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='Defines rate limit duration. Default is 1 minute.)')]
        [int]
        $rateLimitDurationInMinutes,
        [parameter(mandatory=$False,HelpMessage='Defines in what order this rule be evaluated in the overall list of custom rules)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='Describes what action to be applied when rule matches)')]
        [string]
        [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
        $action
    )

    process
    {
        return $([RateLimitRule]$PSBoundParameters)
    }
}
class RateLimitRuleList
{
    [RateLimitRule[]] $rules
}
function New-AzureNativeTypeCdnRateLimitRuleList
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of rules)')]
        $rules
    )

    process
    {
        return $([RateLimitRuleList]$PSBoundParameters)
    }
}
function New-AzureNativeCdnPolicy
{
    [Alias('azure_native_cdn_policy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the CdnWebApplicationFirewallPolicy.)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='Describes managed rules inside the policy.)')]
        [ManagedRuleSetList]
        $managedRules,
        [parameter(mandatory=$False,HelpMessage='Describes policySettings for policy)')]
        [PolicySettings]
        $policySettings,
        [parameter(mandatory=$False,HelpMessage='The pricing tier (defines a CDN provider, feature list and rate) of the CdnWebApplicationFirewallPolicy.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Describes custom rules inside the policy.)')]
        [CustomRuleList]
        $customRules,
        [parameter(mandatory=$False,HelpMessage='Describes rate limit rules inside the policy.)')]
        [RateLimitRuleList]
        $rateLimitRules,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:Policy")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

        if($PSBoundParameters.Keys -icontains 'policyName')
        {
            $resource.properties["policyName"] = $policyName
        }

        if($PSBoundParameters.Keys -icontains 'managedRules')
        {
            $resource.properties["managedRules"] = $managedRules
        }

        if($PSBoundParameters.Keys -icontains 'policySettings')
        {
            $resource.properties["policySettings"] = $policySettings
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'customRules')
        {
            $resource.properties["customRules"] = $customRules
        }

        if($PSBoundParameters.Keys -icontains 'rateLimitRules')
        {
            $resource.properties["rateLimitRules"] = $rateLimitRules
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnRuleSet
{
    [Alias('azure_native_cdn_ruleset')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the rule set under the profile which is unique globally)')]
        [string]
        $ruleSetName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:RuleSet")

        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'ruleSetName')
        {
            $resource.properties["ruleSetName"] = $ruleSetName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnAFDEndpoint
{
    [Alias('azure_native_cdn_afdendpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Send and receive timeout on forwarding request to the origin. When timeout is reached, the request fails and returns.)')]
        [int]
        $originResponseTimeoutSeconds,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Whether to enable use of this rule. Permitted values are ''Enabled'' or ''Disabled'')')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:AFDEndpoint")

        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'originResponseTimeoutSeconds')
        {
            $resource.properties["originResponseTimeoutSeconds"] = $originResponseTimeoutSeconds
        }

        if($PSBoundParameters.Keys -icontains 'enabledState')
        {
            $resource.properties["enabledState"] = $enabledState
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'endpointName')
        {
            $resource.properties["endpointName"] = $endpointName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnRule
{
    [Alias('azure_native_cdn_rule')]
    param (
        [parameter(mandatory=$False,HelpMessage='If this rule is a match should the rules engine continue running the remaining rules or stop. If not present, defaults to Continue.)')]
        [string]
        [ValidateSet('Continue', 'Stop')]
        $matchProcessingBehavior,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Name of the rule set under the profile.)')]
        [string]
        $ruleSetName,
        [parameter(mandatory=$False,HelpMessage='Name of the delivery rule which is unique within the endpoint.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [int]
        $order,
        [parameter(mandatory=$False,HelpMessage='A list of conditions that must be matched for the actions to be executed)')]
        $conditions,
        [parameter(mandatory=$False,HelpMessage='A list of actions that are executed when all the conditions of a rule are satisfied.)')]
        $actions,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:Rule")

        $resource.properties["actions"] = $actions
        $resource.properties["order"] = $order
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["ruleSetName"] = $ruleSetName

        if($PSBoundParameters.Keys -icontains 'matchProcessingBehavior')
        {
            $resource.properties["matchProcessingBehavior"] = $matchProcessingBehavior
        }

        if($PSBoundParameters.Keys -icontains 'ruleName')
        {
            $resource.properties["ruleName"] = $ruleName
        }

        if($PSBoundParameters.Keys -icontains 'conditions')
        {
            $resource.properties["conditions"] = $conditions
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class HealthProbeParameters
{
    [string] $probePath
    [ValidateSet('NotSet', 'GET', 'HEAD')]
    [object] $probeRequestType
    [ValidateSet('NotSet', 'GET', 'HEAD')]
    [int] $probeIntervalInSeconds
    [ValidateSet('NotSet', 'Http', 'Https')]
    [object] $probeProtocol
}
function New-AzureNativeTypeCdnHealthProbeParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The path relative to the origin that is used to determine the health of the origin.)')]
        [string]
        $probePath,
        [parameter(mandatory=$False,HelpMessage='The type of health probe request that is made.)')]
        $probeRequestType,
        [parameter(mandatory=$False,HelpMessage='The number of seconds between health probes.Default is 240sec.)')]
        [int]
        $probeIntervalInSeconds,
        [parameter(mandatory=$False,HelpMessage='Protocol to use for health probe.)')]
        $probeProtocol
    )

    process
    {
        return $([HealthProbeParameters]$PSBoundParameters)
    }
}
class HttpErrorRangeParameters
{
    [int] $end
    [int] $begin
}
function New-AzureNativeTypeCdnHttpErrorRangeParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The inclusive end of the http status code range.)')]
        [int]
        $end,
        [parameter(mandatory=$False,HelpMessage='The inclusive start of the http status code range.)')]
        [int]
        $begin
    )

    process
    {
        return $([HttpErrorRangeParameters]$PSBoundParameters)
    }
}
class ResponseBasedOriginErrorDetectionParameters
{
    [HttpErrorRangeParameters[]] $httpErrorRanges
    [ValidateSet('None', 'TcpErrorsOnly', 'TcpAndHttpErrors')]
    [object] $responseBasedDetectedErrorTypes
    [ValidateSet('None', 'TcpErrorsOnly', 'TcpAndHttpErrors')]
    [int] $responseBasedFailoverThresholdPercentage
}
function New-AzureNativeTypeCdnResponseBasedOriginErrorDetectionParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of Http status code ranges that are considered as server errors for origin and it is marked as unhealthy.)')]
        $httpErrorRanges,
        [parameter(mandatory=$False,HelpMessage='Type of response errors for real user requests for which origin will be deemed unhealthy)')]
        $responseBasedDetectedErrorTypes,
        [parameter(mandatory=$False,HelpMessage='The percentage of failed requests in the sample where failover should trigger.)')]
        [int]
        $responseBasedFailoverThresholdPercentage
    )

    process
    {
        return $([ResponseBasedOriginErrorDetectionParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnOriginGroup
{
    [Alias('azure_native_cdn_origingroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The source of the content being delivered via CDN within given origin group.)')]
        $origins,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin group which is unique within the endpoint.)')]
        [string]
        $originGroupName,
        [parameter(mandatory=$False,HelpMessage='Health probe settings to the origin that is used to determine the health of the origin.)')]
        [HealthProbeParameters]
        $healthProbeSettings,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [int]
        $trafficRestorationTimeToHealedOrNewEndpointsInMinutes,
        [parameter(mandatory=$False,HelpMessage='The JSON object that contains the properties to determine origin health using real requests/responses. This property is currently not supported.)')]
        [ResponseBasedOriginErrorDetectionParameters]
        $responseBasedOriginErrorDetectionSettings,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:OriginGroup")

        $resource.properties["endpointName"] = $endpointName
        $resource.properties["origins"] = $origins
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'originGroupName')
        {
            $resource.properties["originGroupName"] = $originGroupName
        }

        if($PSBoundParameters.Keys -icontains 'healthProbeSettings')
        {
            $resource.properties["healthProbeSettings"] = $healthProbeSettings
        }

        if($PSBoundParameters.Keys -icontains 'trafficRestorationTimeToHealedOrNewEndpointsInMinutes')
        {
            $resource.properties["trafficRestorationTimeToHealedOrNewEndpointsInMinutes"] = $trafficRestorationTimeToHealedOrNewEndpointsInMinutes
        }

        if($PSBoundParameters.Keys -icontains 'responseBasedOriginErrorDetectionSettings')
        {
            $resource.properties["responseBasedOriginErrorDetectionSettings"] = $responseBasedOriginErrorDetectionSettings
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnCustomDomain
{
    [Alias('azure_native_cdn_customdomain')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The host name of the custom domain. Must be a domain name.)')]
        [string]
        $hostName,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of the custom domain within an endpoint.)')]
        [string]
        $customDomainName,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:CustomDomain")

        $resource.properties["endpointName"] = $endpointName
        $resource.properties["hostName"] = $hostName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'customDomainName')
        {
            $resource.properties["customDomainName"] = $customDomainName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class SharedPrivateLinkResourceProperties
{
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected', 'Timeout')]
    [object] $status
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected', 'Timeout')]
    [string] $groupId
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected', 'Timeout')]
    [string] $privateLinkLocation
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected', 'Timeout')]
    [ResourceReference] $privateLink
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected', 'Timeout')]
    [string] $requestMessage
}
function New-AzureNativeTypeCdnSharedPrivateLinkResourceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Status of the shared private link resource. Can be Pending, Approved, Rejected, Disconnected, or Timeout.)')]
        $status,
        [parameter(mandatory=$False,HelpMessage='The group id from the provider of resource the shared private link resource is for.)')]
        [string]
        $groupId,
        [parameter(mandatory=$False,HelpMessage='The location of the shared private link resource)')]
        [string]
        $privateLinkLocation,
        [parameter(mandatory=$False,HelpMessage='The resource id of the resource the shared private link resource is for.)')]
        [ResourceReference]
        $privateLink,
        [parameter(mandatory=$False,HelpMessage='The request message for requesting approval of the shared private link resource.)')]
        [string]
        $requestMessage
    )

    process
    {
        return $([SharedPrivateLinkResourceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeCdnAFDOrigin
{
    [Alias('azure_native_cdn_afdorigin')]
    param (
        [parameter(mandatory=$False,HelpMessage='The properties of the private link resource for private origin.)')]
        [SharedPrivateLinkResourceProperties]
        $sharedPrivateLinkResource,
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin group which is unique within the profile.)')]
        [string]
        $originGroupName,
        [parameter(mandatory=$False,HelpMessage='Whether to enable health probes to be made against backends defined under backendPools. Health probes can only be disabled if there is a single enabled backend in single enabled backend pool.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='The value of the HTTPS port. Must be between 1 and 65535.)')]
        [int]
        $httpsPort,
        [parameter(mandatory=$False,HelpMessage='The address of the origin. Domain names, IPv4 addresses, and IPv6 addresses are supported.This should be unique across all origins in an endpoint.)')]
        [string]
        $hostName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin that is unique within the profile.)')]
        [string]
        $originName,
        [parameter(mandatory=$False,HelpMessage='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. This overrides the host header defined at Endpoint)')]
        [string]
        $originHostHeader,
        [parameter(mandatory=$False,HelpMessage='Resource reference to the Azure origin resource.)')]
        [ResourceReference]
        $azureOrigin,
        [parameter(mandatory=$False,HelpMessage='The value of the HTTP port. Must be between 1 and 65535.)')]
        [int]
        $httpPort,
        [parameter(mandatory=$False,HelpMessage='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)')]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='Weight of the origin in given origin group for load balancing. Must be between 1 and 1000)')]
        [int]
        $weight,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:AFDOrigin")

        $resource.properties["hostName"] = $hostName
        $resource.properties["originGroupName"] = $originGroupName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'sharedPrivateLinkResource')
        {
            $resource.properties["sharedPrivateLinkResource"] = $sharedPrivateLinkResource
        }

        if($PSBoundParameters.Keys -icontains 'enabledState')
        {
            $resource.properties["enabledState"] = $enabledState
        }

        if($PSBoundParameters.Keys -icontains 'httpsPort')
        {
            $resource.properties["httpsPort"] = $httpsPort
        }

        if($PSBoundParameters.Keys -icontains 'originName')
        {
            $resource.properties["originName"] = $originName
        }

        if($PSBoundParameters.Keys -icontains 'originHostHeader')
        {
            $resource.properties["originHostHeader"] = $originHostHeader
        }

        if($PSBoundParameters.Keys -icontains 'azureOrigin')
        {
            $resource.properties["azureOrigin"] = $azureOrigin
        }

        if($PSBoundParameters.Keys -icontains 'httpPort')
        {
            $resource.properties["httpPort"] = $httpPort
        }

        if($PSBoundParameters.Keys -icontains 'priority')
        {
            $resource.properties["priority"] = $priority
        }

        if($PSBoundParameters.Keys -icontains 'weight')
        {
            $resource.properties["weight"] = $weight
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class LoadBalancingSettingsParameters
{
    [int] $successfulSamplesRequired
    [int] $sampleSize
    [int] $additionalLatencyInMilliseconds
}
function New-AzureNativeTypeCdnLoadBalancingSettingsParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The number of samples within the sample period that must succeed)')]
        [int]
        $successfulSamplesRequired,
        [parameter(mandatory=$False,HelpMessage='The number of samples to consider for load balancing decisions)')]
        [int]
        $sampleSize,
        [parameter(mandatory=$False,HelpMessage='The additional latency in milliseconds for probes to fall into the lowest latency bucket)')]
        [int]
        $additionalLatencyInMilliseconds
    )

    process
    {
        return $([LoadBalancingSettingsParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnAFDOriginGroup
{
    [Alias('azure_native_cdn_afdorigingroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='Name of the origin group which is unique within the endpoint.)')]
        [string]
        $originGroupName,
        [parameter(mandatory=$False,HelpMessage='Whether to allow session affinity on this host. Valid options are ''Enabled'' or ''Disabled'')')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $sessionAffinityState,
        [parameter(mandatory=$False,HelpMessage='Load balancing settings for a backend pool)')]
        [LoadBalancingSettingsParameters]
        $loadBalancingSettings,
        [parameter(mandatory=$False,HelpMessage='Health probe settings to the origin that is used to determine the health of the origin.)')]
        [HealthProbeParameters]
        $healthProbeSettings,
        [parameter(mandatory=$False,HelpMessage='The JSON object that contains the properties to determine origin health using real requests/responses. This property is currently not supported.)')]
        [ResponseBasedOriginErrorDetectionParameters]
        $responseBasedAfdOriginErrorDetectionSettings,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='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.)')]
        [int]
        $trafficRestorationTimeToHealedOrNewEndpointsInMinutes,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cdn:AFDOriginGroup")

        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'originGroupName')
        {
            $resource.properties["originGroupName"] = $originGroupName
        }

        if($PSBoundParameters.Keys -icontains 'sessionAffinityState')
        {
            $resource.properties["sessionAffinityState"] = $sessionAffinityState
        }

        if($PSBoundParameters.Keys -icontains 'loadBalancingSettings')
        {
            $resource.properties["loadBalancingSettings"] = $loadBalancingSettings
        }

        if($PSBoundParameters.Keys -icontains 'healthProbeSettings')
        {
            $resource.properties["healthProbeSettings"] = $healthProbeSettings
        }

        if($PSBoundParameters.Keys -icontains 'responseBasedAfdOriginErrorDetectionSettings')
        {
            $resource.properties["responseBasedAfdOriginErrorDetectionSettings"] = $responseBasedAfdOriginErrorDetectionSettings
        }

        if($PSBoundParameters.Keys -icontains 'trafficRestorationTimeToHealedOrNewEndpointsInMinutes')
        {
            $resource.properties["trafficRestorationTimeToHealedOrNewEndpointsInMinutes"] = $trafficRestorationTimeToHealedOrNewEndpointsInMinutes
        }

        $global:pulumiresources += $resource
        return $resource
    }
}