pspulumiyaml.azurenative.cdn.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionCdnGetEndpoint
{
    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 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
    )

    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-AzureNativeFunctionCdnGetCustomDomain
{
    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 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='Name of the custom domain within an endpoint.)')]
        [string]
        $customDomainName
    )

    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-AzureNativeFunctionCdnGetRuleSet
{
    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 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
    )

    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-AzureNativeFunctionCdnGetAFDCustomDomain
{
    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 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
    )

    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-AzureNativeFunctionCdnGetAFDEndpoint
{
    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 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
    )

    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-AzureNativeFunctionCdnGetAFDOrigin
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetProfile
{
    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 Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetSecurityPolicy
{
    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 security policy under the profile.)')]
        [string]
        $securityPolicyName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetProfileSupportedOptimizationTypes
{
    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 Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetAFDOriginGroup
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetSecret
{
    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 Secret under the profile.)')]
        [string]
        $secretName,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetOriginGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the origin group which is unique within the endpoint.)')]
        [string]
        $originGroupName,
        [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,
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetOrigin
{
    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 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 Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCdnGetRoute
{
    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 endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [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
    )

    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-AzureNativeFunctionCdnGetRule
{
    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 delivery rule which is unique within the endpoint.)')]
        [string]
        $ruleName,
        [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
    )

    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-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 HttpErrorRangeParameters
{
    [int] $begin
    [int] $end
}
function New-AzureNativeTypeCdnHttpErrorRangeParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The inclusive start of the http status code range.)')]
        [int]
        $begin,
        [parameter(mandatory=$False,HelpMessage='The inclusive end of the http status code range.)')]
        [int]
        $end
    )

    process
    {
        return $([HttpErrorRangeParameters]$PSBoundParameters)
    }
}
class ResponseBasedOriginErrorDetectionParameters
{
    [int] $responseBasedFailoverThresholdPercentage
    [HttpErrorRangeParameters[]] $httpErrorRanges
    [ArgumentCompletions('None', 'TcpErrorsOnly', 'TcpAndHttpErrors')]
    [object] $responseBasedDetectedErrorTypes
}
function New-AzureNativeTypeCdnResponseBasedOriginErrorDetectionParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The percentage of failed requests in the sample where failover should trigger.)')]
        [int]
        $responseBasedFailoverThresholdPercentage,
        [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
    )

    process
    {
        return $([ResponseBasedOriginErrorDetectionParameters]$PSBoundParameters)
    }
}
class HealthProbeParameters
{
    [string] $probePath
    [int] $probeIntervalInSeconds
    [ArgumentCompletions('NotSet', 'GET', 'HEAD')]
    [object] $probeRequestType
    [ArgumentCompletions('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 number of seconds between health probes.Default is 240sec.)')]
        [int]
        $probeIntervalInSeconds,
        [parameter(mandatory=$False,HelpMessage='The type of health probe request that is made.)')]
        $probeRequestType,
        [parameter(mandatory=$False,HelpMessage='Protocol to use for health probe.)')]
        $probeProtocol
    )

    process
    {
        return $([HealthProbeParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnOriginGroup
{
    [Alias('azure_native_cdn_origingroup')]
    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='The source of the content being delivered via CDN within given origin group.)')]
        $origins,
        [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=$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 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,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["endpointName"] = $endpointName
        $resource.properties["origins"] = $origins
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ResourceReference
{
    [string] $id
}
function New-AzureNativeTypeCdnResourceReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([ResourceReference]$PSBoundParameters)
    }
}
class UrlSigningKeyParameters
{
    [string] $type
    [ResourceReference] $secretSource
    [string] $keyId
    [string] $secretVersion
}
function New-AzureNativeTypeCdnUrlSigningKeyParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of the Secret to create.
Expected value is ''UrlSigningKey''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Resource reference to the KV secret)')]
        [ResourceReference]
        $secretSource,
        [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,
        [parameter(mandatory=$False,HelpMessage='Version of the secret to be used)')]
        [string]
        $secretVersion
    )

    process
    {
        return $([UrlSigningKeyParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnSecret
{
    [Alias('azure_native_cdn_secret')]
    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 Secret under the profile.)')]
        [string]
        $secretName,
        [parameter(mandatory=$False,HelpMessage='object which contains secret parameters)')]
        [UrlSigningKeyParameters]
        $parameters,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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
    }
}
class CompressionSettings
{
    [bool] $isCompressionEnabled
    [string[]] $contentTypesToCompress
}
function New-AzureNativeTypeCdnCompressionSettings
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='List of content types on which compression applies. The value should be a valid MIME type.)')]
        [string[]]
        $contentTypesToCompress
    )

    process
    {
        return $([CompressionSettings]$PSBoundParameters)
    }
}
function New-AzureNativeCdnRoute
{
    [Alias('azure_native_cdn_route')]
    param (
        [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='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [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 reference to the origin group.)')]
        [ResourceReference]
        $originGroup,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='List of supported protocols for this route.)')]
        $supportedProtocols,
        [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='The route patterns of the rule.)')]
        [string[]]
        $patternsToMatch,
        [parameter(mandatory=$False,HelpMessage='Protocol this rule will use when forwarding traffic to backends.)')]
        [string]
        [ValidateSet('HttpOnly', 'HttpsOnly', 'MatchRequest')]
        $forwardingProtocol,
        [parameter(mandatory=$False,HelpMessage='rule sets referenced by this endpoint.)')]
        $ruleSets,
        [parameter(mandatory=$False,HelpMessage='Domains referenced by this endpoint.)')]
        $customDomains,
        [parameter(mandatory=$False,HelpMessage='compression settings.)')]
        [CompressionSettings]
        $compressionSettings,
        [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 routing rule.)')]
        [string]
        $routeName,
        [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='A directory path on the origin that AzureFrontDoor can use to retrieve content from, e.g. contoso.cloudapp.net/originpath.)')]
        [string]
        $originPath,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["endpointName"] = $endpointName
        $resource.properties["originGroup"] = $originGroup
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class LoadBalancingSettingsParameters
{
    [int] $sampleSize
    [int] $additionalLatencyInMilliseconds
    [int] $successfulSamplesRequired
}
function New-AzureNativeTypeCdnLoadBalancingSettingsParameters
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='The number of samples within the sample period that must succeed)')]
        [int]
        $successfulSamplesRequired
    )

    process
    {
        return $([LoadBalancingSettingsParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnAFDOriginGroup
{
    [Alias('azure_native_cdn_afdorigingroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [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='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 CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [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]
        $responseBasedAfdOriginErrorDetectionSettings,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

        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 'responseBasedAfdOriginErrorDetectionSettings')
        {
            $resource.properties["responseBasedAfdOriginErrorDetectionSettings"] = $responseBasedAfdOriginErrorDetectionSettings
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnOrigin
{
    [Alias('azure_native_cdn_origin')]
    param (
        [parameter(mandatory=$False,HelpMessage='The value of the HTTPS port. Must be between 1 and 65535.)')]
        [int]
        $httpsPort,
        [parameter(mandatory=$False,HelpMessage='Name of the origin that is unique within the endpoint.)')]
        [string]
        $originName,
        [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='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [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 Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Origin is enabled for load balancing or not)')]
        [bool]
        $enabled,
        [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='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='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [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='A custom message to be included in the approval request to connect to the Private Link.)')]
        [string]
        $privateLinkApprovalMessage,
        [parameter(mandatory=$False,HelpMessage='The value of the HTTP port. Must be between 1 and 65535.)')]
        [int]
        $httpPort,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["endpointName"] = $endpointName
        $resource.properties["hostName"] = $hostName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnRuleSet
{
    [Alias('azure_native_cdn_ruleset')]
    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 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,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class MatchCondition
{
    [string[]] $transforms
    [ArgumentCompletions('RemoteAddress', 'RequestMethod', 'QueryString', 'PostArgs', 'RequestUri', 'RequestHeader', 'RequestBody', 'RequestScheme', 'UrlPath', 'UrlFileExtension', 'UrlFileName', 'HttpVersion', 'Cookies', 'IsDevice')]
    [string] $matchVariable
    [string] $selector
    [bool] $negateCondition
    [string[]] $matchValue
    [ArgumentCompletions('Any', 'IPMatch', 'GeoMatch', 'Equal', 'Contains', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'BeginsWith', 'EndsWith', 'RegEx')]
    [string] $operator
}
function New-AzureNativeTypeCdnMatchCondition
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of transforms.)')]
        $transforms,
        [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,
        [parameter(mandatory=$False,HelpMessage='Selector can used to match a specific key for QueryString, Cookies, RequestHeader or PostArgs.)')]
        [string]
        $selector,
        [parameter(mandatory=$False,HelpMessage='Describes if the result of this condition should be negated.)')]
        [bool]
        $negateCondition,
        [parameter(mandatory=$False,HelpMessage='List of possible match values.)')]
        [string[]]
        $matchValue,
        [parameter(mandatory=$False,HelpMessage='Describes operator to be matched)')]
        [string]
        [ValidateSet('Any', 'IPMatch', 'GeoMatch', 'Equal', 'Contains', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'BeginsWith', 'EndsWith', 'RegEx')]
        $operator
    )

    process
    {
        return $([MatchCondition]$PSBoundParameters)
    }
}
class RateLimitRule
{
    [ArgumentCompletions('Disabled', 'Enabled')]
    [string] $enabledState
    [int] $rateLimitThreshold
    [ArgumentCompletions('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
    [int] $rateLimitDurationInMinutes
    [MatchCondition[]] $matchConditions
    [string] $name
    [int] $priority
}
function New-AzureNativeTypeCdnRateLimitRule
{
    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='Defines rate limit threshold.)')]
        [int]
        $rateLimitThreshold,
        [parameter(mandatory=$False,HelpMessage='Describes what action to be applied when rule matches)')]
        [string]
        [ValidateSet('Allow', 'Block', 'Log', 'Redirect')]
        $action,
        [parameter(mandatory=$False,HelpMessage='Defines rate limit duration. Default is 1 minute.)')]
        [int]
        $rateLimitDurationInMinutes,
        [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
    )

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

    process
    {
        return $([RateLimitRuleList]$PSBoundParameters)
    }
}
class ManagedRuleOverride
{
    [ArgumentCompletions('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
    [string] $ruleId
    [ArgumentCompletions('Disabled', 'Enabled')]
    [string] $enabledState
}
function New-AzureNativeTypeCdnManagedRuleOverride
{
    param (
        [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,
        [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
    )

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

    process
    {
        return $([ManagedRuleGroupOverride]$PSBoundParameters)
    }
}
class ManagedRuleSet
{
    [string] $ruleSetVersion
    [int] $anomalyScore
    [string] $ruleSetType
    [ManagedRuleGroupOverride[]] $ruleGroupOverrides
}
function New-AzureNativeTypeCdnManagedRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the version of the rule set to use.)')]
        [string]
        $ruleSetVersion,
        [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 rule set type to use.)')]
        [string]
        $ruleSetType,
        [parameter(mandatory=$False,HelpMessage='Defines the rule overrides to apply to the rule set.)')]
        $ruleGroupOverrides
    )

    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 Sku
{
    [ArgumentCompletions('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)
    }
}
class PolicySettings
{
    [ArgumentCompletions('Prevention', 'Detection')]
    [string] $mode
    [string] $defaultCustomBlockResponseBody
    [int] $defaultCustomBlockResponseStatusCode
    [ArgumentCompletions('Disabled', 'Enabled')]
    [string] $enabledState
    [string] $defaultRedirectUrl
}
function New-AzureNativeTypeCdnPolicySettings
{
    param (
        [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='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='If the action type is block, this field defines the default customer overridable http response status code.)')]
        [int]
        $defaultCustomBlockResponseStatusCode,
        [parameter(mandatory=$False,HelpMessage='describes if the policy is in enabled state or disabled state)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $enabledState,
        [parameter(mandatory=$False,HelpMessage='If action type is redirect, this field represents the default redirect URL for the client.)')]
        [string]
        $defaultRedirectUrl
    )

    process
    {
        return $([PolicySettings]$PSBoundParameters)
    }
}
class CustomRule
{
    [int] $priority
    [ArgumentCompletions('Allow', 'Block', 'Log', 'Redirect')]
    [string] $action
    [MatchCondition[]] $matchConditions
    [ArgumentCompletions('Disabled', 'Enabled')]
    [string] $enabledState
    [string] $name
}
function New-AzureNativeTypeCdnCustomRule
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='List of match conditions.)')]
        $matchConditions,
        [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 the name of the custom rule)')]
        [string]
        $name
    )

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

    process
    {
        return $([CustomRuleList]$PSBoundParameters)
    }
}
function New-AzureNativeCdnPolicy
{
    [Alias('azure_native_cdn_policy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Describes rate limit rules inside the policy.)')]
        [RateLimitRuleList]
        $rateLimitRules,
        [parameter(mandatory=$False,HelpMessage='Describes managed rules inside the policy.)')]
        [ManagedRuleSetList]
        $managedRules,
        [parameter(mandatory=$False,HelpMessage='The pricing tier (defines a CDN provider, feature list and rate) of the CdnWebApplicationFirewallPolicy.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Describes policySettings for policy)')]
        [PolicySettings]
        $policySettings,
        [parameter(mandatory=$False,HelpMessage='Describes custom rules inside the policy.)')]
        [CustomRuleList]
        $customRules,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the CdnWebApplicationFirewallPolicy.)')]
        [string]
        $policyName,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

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

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

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

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

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

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

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

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

    process
    {
        return $([SharedPrivateLinkResourceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeCdnAFDOrigin
{
    [Alias('azure_native_cdn_afdorigin')]
    param (
        [parameter(mandatory=$False,HelpMessage='The value of the HTTPS port. Must be between 1 and 65535.)')]
        [int]
        $httpsPort,
        [parameter(mandatory=$False,HelpMessage='Name of the origin that is unique within the profile.)')]
        [string]
        $originName,
        [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 Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource reference to the Azure origin resource.)')]
        [ResourceReference]
        $azureOrigin,
        [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 properties of the private link resource for private origin.)')]
        [SharedPrivateLinkResourceProperties]
        $sharedPrivateLinkResource,
        [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='Name of the origin group which is unique within the profile.)')]
        [string]
        $originGroupName,
        [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 CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [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 HTTP port. Must be between 1 and 65535.)')]
        [int]
        $httpPort,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["hostName"] = $hostName
        $resource.properties["originGroupName"] = $originGroupName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AFDDomainHttpsParameters
{
    [ArgumentCompletions('CustomerCertificate', 'ManagedCertificate')]
    [string] $certificateType
    [ResourceReference] $secret
    [ArgumentCompletions('TLS10', 'TLS12')]
    [object] $minimumTlsVersion
}
function New-AzureNativeTypeCdnAFDDomainHttpsParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the source of the SSL certificate.)')]
        [string]
        [ValidateSet('CustomerCertificate', 'ManagedCertificate')]
        $certificateType,
        [parameter(mandatory=$False,HelpMessage='Resource reference to the secret. ie. subs/rg/profile/secret)')]
        [ResourceReference]
        $secret,
        [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='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='Resource reference to the Azure DNS zone)')]
        [ResourceReference]
        $azureDnsZone,
        [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,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["hostName"] = $hostName
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

    process
    {
        return $([SecurityPolicyWebApplicationFirewallParameters]$PSBoundParameters)
    }
}
function New-AzureNativeCdnSecurityPolicy
{
    [Alias('azure_native_cdn_securitypolicy')]
    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 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 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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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 DeliveryRule
{
    [int] $order
    [object] $actions #todo add class here
    [object] $conditions #todo add class here
    [string] $name
}
function New-AzureNativeTypeCdnDeliveryRule
{
    param (
        [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 actions that are executed when all the conditions of a rule are satisfied.)')]
        $actions,
        [parameter(mandatory=$False,HelpMessage='A list of conditions that must be matched for the actions to be executed)')]
        $conditions,
        [parameter(mandatory=$False,HelpMessage='Name of the rule)')]
        [string]
        $name
    )

    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='Resource tags.)')]
        [hashtable]
        $tags,
        [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='Name of the Resource group within the Azure subscription.)')]
        [string]
        $resourceGroupName,
        [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='The source of the content being delivered via CDN.)')]
        $origins,
        [parameter(mandatory=$False,HelpMessage='List of keys used to validate the signed URL hashes.)')]
        $urlSigningKeys,
        [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='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [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='A reference to the origin group.)')]
        [ResourceReference]
        $defaultOriginGroup,
        [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='The origin groups comprising of origins that are used for load balancing the traffic based on availability.)')]
        $originGroups,
        [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='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='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='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [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='A policy that specifies the delivery rules to be used for an endpoint.)')]
        [EndpointPropertiesUpdateParametersDeliveryPolicy]
        $deliveryPolicy,
        [parameter(mandatory=$False,HelpMessage='Defines the Web Application Firewall policy for the endpoint (if applicable))')]
        [EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink]
        $webApplicationFirewallPolicyLink,
        [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,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["origins"] = $origins
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnRule
{
    [Alias('azure_native_cdn_rule')]
    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='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 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='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 rule set under the profile.)')]
        [string]
        $ruleSetName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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
    }
}
function New-AzureNativeCdnProfile
{
    [Alias('azure_native_cdn_profile')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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='Name of the CDN profile which is unique within the resource group.)')]
        [string]
        $profileName,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCdnCustomDomain
{
    [Alias('azure_native_cdn_customdomain')]
    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 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='The host name of the custom domain. Must be a domain name.)')]
        [string]
        $hostName,
        [parameter(mandatory=$False,HelpMessage='Name of the custom domain within an endpoint.)')]
        [string]
        $customDomainName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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
    }
}
function New-AzureNativeCdnAFDEndpoint
{
    [Alias('azure_native_cdn_afdendpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the endpoint under the profile which is unique globally.)')]
        [string]
        $endpointName,
        [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='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='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,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["profileName"] = $profileName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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