pspulumiyaml.azurenative.web.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionWebListWebAppAzureStorageAccounts
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppAzureStorageAccounts -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListStaticSiteSecrets
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listStaticSiteSecrets -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppFunctionKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName
    )

    process
    {
        $arguments = @{}
        $arguments["functionName"] = $functionName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppFunctionKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSwiftVirtualNetworkConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSwiftVirtualNetworkConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppFunctionSecretsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["functionName"] = $functionName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppFunctionSecretsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppInstanceFunctionSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["functionName"] = $functionName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppInstanceFunctionSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebApp
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebApp -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppDiagnosticLogsConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppDiagnosticLogsConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppApplicationSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppApplicationSettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListStaticSiteAppSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listStaticSiteAppSettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetContainerApp
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getContainerApp -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppAzureStorageAccountsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the Azure storage account configurations for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppAzureStorageAccountsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetStaticSiteCustomDomain
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the static site resource to search in.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The custom domain name.)')]
        [string]
        $domainName
    )

    process
    {
        $arguments = @{}
        $arguments["domainName"] = $domainName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getStaticSiteCustomDomain -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppAuthSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppAuthSettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppPublicCertificateSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API the named binding for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Public certificate name.)')]
        [string]
        $publicCertificateName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["publicCertificateName"] = $publicCertificateName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppPublicCertificateSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSlotConfigurationNames
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSlotConfigurationNames -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppFunction
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName
    )

    process
    {
        $arguments = @{}
        $arguments["functionName"] = $functionName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppFunction -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetStaticSite
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getStaticSite -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetCustomApi
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='API name)')]
        [string]
        $apiName,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId
    )

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

        if($PSBoundParameters.Keys -icontains 'subscriptionId')
        {
            $arguments["subscriptionId"] = $subscriptionId
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getCustomApi -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppBackupConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppBackupConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppDomainOwnershipIdentifierSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of domain ownership identifier.)')]
        [string]
        $domainOwnershipIdentifierName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will delete the binding for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["domainOwnershipIdentifierName"] = $domainOwnershipIdentifierName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppDomainOwnershipIdentifierSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListStaticSiteBuildAppSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The stage site identifier.)')]
        [string]
        $environmentName
    )

    process
    {
        $arguments = @{}
        $arguments["environmentName"] = $environmentName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listStaticSiteBuildAppSettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListStaticSiteBuildFunctionAppSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The stage site identifier.)')]
        [string]
        $environmentName
    )

    process
    {
        $arguments = @{}
        $arguments["environmentName"] = $environmentName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listStaticSiteBuildFunctionAppSettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppDomainOwnershipIdentifier
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of domain ownership identifier.)')]
        [string]
        $domainOwnershipIdentifierName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["domainOwnershipIdentifierName"] = $domainOwnershipIdentifierName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppDomainOwnershipIdentifier -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppFunctionKeysSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["functionName"] = $functionName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppFunctionKeysSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListSiteIdentifiersAssignedToHostName
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the object.)')]
        [string]
        $name
    )

    process
    {
        $arguments = @{}

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $arguments["name"] = $name
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listSiteIdentifiersAssignedToHostName -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppPublishingCredentialsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the publishing credentials for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppPublishingCredentialsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppFunctionSecrets
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName
    )

    process
    {
        $arguments = @{}
        $arguments["functionName"] = $functionName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppFunctionSecrets -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetStaticSiteUserProvidedFunctionAppForStaticSiteBuild
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The stage site identifier.)')]
        [string]
        $environmentName,
        [parameter(mandatory=$False,HelpMessage='Name of the function app registered with the static site build.)')]
        [string]
        $functionAppName
    )

    process
    {
        $arguments = @{}
        $arguments["environmentName"] = $environmentName
        $arguments["functionAppName"] = $functionAppName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getStaticSiteUserProvidedFunctionAppForStaticSiteBuild -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWorkflowTriggerCallbackUrl
{
    param (
        [parameter(mandatory=$False,HelpMessage='The workflow trigger name.)')]
        [string]
        $triggerName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The workflow name.)')]
        [string]
        $workflowName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["triggerName"] = $triggerName
        $arguments["workflowName"] = $workflowName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWorkflowTriggerCallbackUrl -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppSiteBackups
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppSiteBackups -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppHybridConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The relay name for this hybrid connection.)')]
        [string]
        $relayName,
        [parameter(mandatory=$False,HelpMessage='The name of the web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace for this hybrid connection.)')]
        [string]
        $namespaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["namespaceName"] = $namespaceName
        $arguments["relayName"] = $relayName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppHybridConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppSyncFunctionTriggers
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppSyncFunctionTriggers -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppHostNameBinding
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Hostname in the hostname binding.)')]
        [string]
        $hostName
    )

    process
    {
        $arguments = @{}
        $arguments["hostName"] = $hostName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppHostNameBinding -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppDeployment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Deployment ID.)')]
        [string]
        $id
    )

    process
    {
        $arguments = @{}
        $arguments["id"] = $id
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppDeployment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppConnectionStringsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the connection settings for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppConnectionStringsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetStaticSitePrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["privateEndpointConnectionName"] = $privateEndpointConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getStaticSitePrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListStaticSiteConfiguredRoles
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listStaticSiteConfiguredRoles -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListContainerAppSecrets
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $name
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listContainerAppSecrets -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWorkflowRunActionRepetitionExpressionTraces
{
    param (
        [parameter(mandatory=$False,HelpMessage='The workflow name.)')]
        [string]
        $workflowName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The workflow action name.)')]
        [string]
        $actionName,
        [parameter(mandatory=$False,HelpMessage='The workflow repetition.)')]
        [string]
        $repetitionName,
        [parameter(mandatory=$False,HelpMessage='The workflow run name.)')]
        [string]
        $runName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name
    )

    process
    {
        $arguments = @{}
        $arguments["actionName"] = $actionName
        $arguments["name"] = $name
        $arguments["repetitionName"] = $repetitionName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["runName"] = $runName
        $arguments["workflowName"] = $workflowName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWorkflowRunActionRepetitionExpressionTraces -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetConnectionGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The connection gateway name)')]
        [string]
        $connectionGatewayName,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId
    )

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

        if($PSBoundParameters.Keys -icontains 'subscriptionId')
        {
            $arguments["subscriptionId"] = $subscriptionId
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getConnectionGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppRelayServiceConnectionSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the hybrid connection.)')]
        [string]
        $entityName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get a hybrid connection for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["entityName"] = $entityName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppRelayServiceConnectionSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetStaticSiteUserProvidedFunctionAppForStaticSite
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the function app registered with the static site.)')]
        [string]
        $functionAppName
    )

    process
    {
        $arguments = @{}
        $arguments["functionAppName"] = $functionAppName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getStaticSiteUserProvidedFunctionAppForStaticSite -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetAppServiceEnvironmentPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the App Service Environment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["privateEndpointConnectionName"] = $privateEndpointConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getAppServiceEnvironmentPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppMetadata
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppMetadata -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppHostKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppHostKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppSiteBackupsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get backups of the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppSiteBackupsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppHostNameBindingSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Hostname in the hostname binding.)')]
        [string]
        $hostName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API the named binding for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["hostName"] = $hostName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppHostNameBindingSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class BackupSchedule
{
    [ArgumentCompletions('Day', 'Hour')]
    [object] $frequencyUnit
    [bool] $keepAtLeastOneBackup
    [string] $startTime
    [int] $frequencyInterval
    [int] $retentionPeriodInDays
}
function New-AzureNativeTypeWebBackupSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The unit of time for how often the backup should be executed (e.g. for weekly backup, this should be set to Day and FrequencyInterval should be set to 7))')]
        $frequencyUnit,
        [parameter(mandatory=$False,HelpMessage='True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.)')]
        [bool]
        $keepAtLeastOneBackup,
        [parameter(mandatory=$False,HelpMessage='When the schedule should start working.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='How often the backup should be executed (e.g. for weekly backup, this should be set to 7 and FrequencyUnit should be set to Day))')]
        [int]
        $frequencyInterval,
        [parameter(mandatory=$False,HelpMessage='After how many days backups should be deleted.)')]
        [int]
        $retentionPeriodInDays
    )

    process
    {
        return $([BackupSchedule]$PSBoundParameters)
    }
}
function Invoke-AzureNativeFunctionWebListWebAppBackupStatusSecretsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='ID of backup.)')]
        [string]
        $backupId,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of web app slot. If not specified then will default to production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='SAS URL to the container.)')]
        [string]
        $storageAccountUrl,
        [parameter(mandatory=$False,HelpMessage='Databases included in the backup.)')]
        $databases,
        [parameter(mandatory=$False,HelpMessage='Schedule for the backup if it is executed periodically.)')]
        [BackupSchedule]
        $backupSchedule,
        [parameter(mandatory=$False,HelpMessage='Name of the backup.)')]
        [string]
        $backupName
    )

    process
    {
        $arguments = @{}
        $arguments["backupId"] = $backupId
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot
        $arguments["storageAccountUrl"] = $storageAccountUrl

        if($PSBoundParameters.Keys -icontains 'kind')
        {
            $arguments["kind"] = $kind
        }

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

        if($PSBoundParameters.Keys -icontains 'databases')
        {
            $arguments["databases"] = $databases
        }

        if($PSBoundParameters.Keys -icontains 'backupSchedule')
        {
            $arguments["backupSchedule"] = $backupSchedule
        }

        if($PSBoundParameters.Keys -icontains 'backupName')
        {
            $arguments["backupName"] = $backupName
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppBackupStatusSecretsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppPublishingCredentials
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppPublishingCredentials -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSwiftVirtualNetworkConnectionSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get a gateway for the production slot''s Virtual Network.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSwiftVirtualNetworkConnectionSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppPremierAddOn
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Add-on name.)')]
        [string]
        $premierAddOnName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["premierAddOnName"] = $premierAddOnName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppPremierAddOn -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppMetadataSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the metadata for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppMetadataSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetAppServiceEnvironment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service Environment.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getAppServiceEnvironment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSiteExtensionSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site extension name.)')]
        [string]
        $siteExtensionId,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API uses the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["siteExtensionId"] = $siteExtensionId
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSiteExtensionSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppHostKeysSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppHostKeysSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["privateEndpointConnectionName"] = $privateEndpointConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetAppServicePlan
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service plan.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getAppServicePlan -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class WsdlService
{
    [string[]] $endpointQualifiedNames
    [string] $qualifiedName
}
function New-AzureNativeTypeWebWsdlService
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of the endpoints'' qualified names)')]
        [string[]]
        $endpointQualifiedNames,
        [parameter(mandatory=$False,HelpMessage='The service''s qualified name)')]
        [string]
        $qualifiedName
    )

    process
    {
        return $([WsdlService]$PSBoundParameters)
    }
}
function Invoke-AzureNativeFunctionWebListCustomApiWsdlInterfaces
{
    param (
        [parameter(mandatory=$False,HelpMessage='The WSDL import method)')]
        [string]
        [ArgumentCompletions('NotSpecified', 'SoapToRest', 'SoapPassThrough')]
        $importMethod,
        [parameter(mandatory=$False,HelpMessage='The location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The service with name and endpoint names)')]
        [WsdlService]
        $service,
        [parameter(mandatory=$False,HelpMessage='The WSDL content)')]
        [string]
        $content,
        [parameter(mandatory=$False,HelpMessage='The WSDL URL)')]
        [string]
        $url,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId
    )

    process
    {
        $arguments = @{}
        $arguments["location"] = $location

        if($PSBoundParameters.Keys -icontains 'importMethod')
        {
            $arguments["importMethod"] = $importMethod
        }

        if($PSBoundParameters.Keys -icontains 'service')
        {
            $arguments["service"] = $service
        }

        if($PSBoundParameters.Keys -icontains 'content')
        {
            $arguments["content"] = $content
        }

        if($PSBoundParameters.Keys -icontains 'url')
        {
            $arguments["url"] = $url
        }

        if($PSBoundParameters.Keys -icontains 'subscriptionId')
        {
            $arguments["subscriptionId"] = $subscriptionId
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listCustomApiWsdlInterfaces -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppSitePushSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppSitePushSettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetCertificate
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the certificate.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getCertificate -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppRelayServiceConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the hybrid connection.)')]
        [string]
        $entityName
    )

    process
    {
        $arguments = @{}
        $arguments["entityName"] = $entityName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppRelayServiceConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppHybridConnectionKeysSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='The relay name for this hybrid connection.)')]
        [string]
        $relayName,
        [parameter(mandatory=$False,HelpMessage='The name of the web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace for this hybrid connection.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the slot for the web app.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["namespaceName"] = $namespaceName
        $arguments["relayName"] = $relayName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppHybridConnectionKeysSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetStaticSiteLinkedBackend
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the linked backend that should be retrieved)')]
        [string]
        $linkedBackendName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["linkedBackendName"] = $linkedBackendName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getStaticSiteLinkedBackend -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppConnectionStrings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppConnectionStrings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Connection name)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId
    )

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

        if($PSBoundParameters.Keys -icontains 'subscriptionId')
        {
            $arguments["subscriptionId"] = $subscriptionId
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWorkflowRunActionExpressionTraces
{
    param (
        [parameter(mandatory=$False,HelpMessage='The workflow run name.)')]
        [string]
        $runName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The workflow name.)')]
        [string]
        $workflowName,
        [parameter(mandatory=$False,HelpMessage='The workflow action name.)')]
        [string]
        $actionName
    )

    process
    {
        $arguments = @{}
        $arguments["actionName"] = $actionName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["runName"] = $runName
        $arguments["workflowName"] = $workflowName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWorkflowRunActionExpressionTraces -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppPrivateEndpointConnectionSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Name of the site deployment slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["privateEndpointConnectionName"] = $privateEndpointConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppPrivateEndpointConnectionSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppDeploymentSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API gets a deployment for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Deployment ID.)')]
        [string]
        $id
    )

    process
    {
        $arguments = @{}
        $arguments["id"] = $id
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppDeploymentSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListStaticSiteFunctionAppSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listStaticSiteFunctionAppSettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppSitePushSettingsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of web app slot. If not specified then will default to production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppSitePushSettingsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListAppServicePlanHybridConnectionKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus relay.)')]
        [string]
        $relayName,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service plan.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus namespace.)')]
        [string]
        $namespaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["namespaceName"] = $namespaceName
        $arguments["relayName"] = $relayName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listAppServicePlanHybridConnectionKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListConnectionKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource Id)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The connection name.)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource Name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource type)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='time span for how long the keys will be valid)')]
        [string]
        $validityTimeSpan,
        [parameter(mandatory=$False,HelpMessage='Kind of resource)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Resource Location)')]
        [string]
        $location
    )

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

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

        if($PSBoundParameters.Keys -icontains 'id')
        {
            $arguments["id"] = $id
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $arguments["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'type')
        {
            $arguments["type"] = $type
        }

        if($PSBoundParameters.Keys -icontains 'validityTimeSpan')
        {
            $arguments["validityTimeSpan"] = $validityTimeSpan
        }

        if($PSBoundParameters.Keys -icontains 'kind')
        {
            $arguments["kind"] = $kind
        }

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listConnectionKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppHybridConnectionKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The relay name for this hybrid connection.)')]
        [string]
        $relayName,
        [parameter(mandatory=$False,HelpMessage='The name of the web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace for this hybrid connection.)')]
        [string]
        $namespaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["namespaceName"] = $namespaceName
        $arguments["relayName"] = $relayName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppHybridConnectionKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppAuthSettingsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the settings for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppAuthSettingsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSiteExtension
{
    param (
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site extension name.)')]
        [string]
        $siteExtensionId
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["siteExtensionId"] = $siteExtensionId

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSiteExtension -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppApplicationSettingsSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the application settings for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppApplicationSettingsSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListConnectionConsentLinks
{
    param (
        [parameter(mandatory=$False,HelpMessage='Connection name)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='The resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Collection of resources)')]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId
    )

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

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

        if($PSBoundParameters.Keys -icontains 'subscriptionId')
        {
            $arguments["subscriptionId"] = $subscriptionId
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listConnectionConsentLinks -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppVnetConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the virtual network.)')]
        [string]
        $vnetName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["vnetName"] = $vnetName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppVnetConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppPublicCertificate
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Public certificate name.)')]
        [string]
        $publicCertificateName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["publicCertificateName"] = $publicCertificateName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppPublicCertificate -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListStaticSiteUsers
{
    param (
        [parameter(mandatory=$False,HelpMessage='The auth provider for the users.)')]
        [string]
        $authprovider,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["authprovider"] = $authprovider
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listStaticSiteUsers -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSourceControlSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the source control configuration for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSourceControlSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppBackupConfigurationSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the backup configuration for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppBackupConfigurationSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetStaticSiteLinkedBackendForBuild
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the linked backend that should be retrieved)')]
        [string]
        $linkedBackendName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The stage site identifier)')]
        [string]
        $environmentName
    )

    process
    {
        $arguments = @{}
        $arguments["environmentName"] = $environmentName
        $arguments["linkedBackendName"] = $linkedBackendName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getStaticSiteLinkedBackendForBuild -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppPremierAddOnSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Add-on name.)')]
        [string]
        $premierAddOnName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the named add-on for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["premierAddOnName"] = $premierAddOnName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppPremierAddOnSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. By default, this API returns the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppSourceControl
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppSourceControl -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetAppServiceEnvironmentAseCustomDnsSuffixConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service Environment.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getAppServiceEnvironmentAseCustomDnsSuffixConfiguration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppBackupStatusSecrets
{
    param (
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='ID of backup.)')]
        [string]
        $backupId,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='SAS URL to the container.)')]
        [string]
        $storageAccountUrl,
        [parameter(mandatory=$False,HelpMessage='Databases included in the backup.)')]
        $databases,
        [parameter(mandatory=$False,HelpMessage='Schedule for the backup if it is executed periodically.)')]
        [BackupSchedule]
        $backupSchedule,
        [parameter(mandatory=$False,HelpMessage='Name of the backup.)')]
        [string]
        $backupName
    )

    process
    {
        $arguments = @{}
        $arguments["backupId"] = $backupId
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["storageAccountUrl"] = $storageAccountUrl

        if($PSBoundParameters.Keys -icontains 'kind')
        {
            $arguments["kind"] = $kind
        }

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

        if($PSBoundParameters.Keys -icontains 'databases')
        {
            $arguments["databases"] = $databases
        }

        if($PSBoundParameters.Keys -icontains 'backupSchedule')
        {
            $arguments["backupSchedule"] = $backupSchedule
        }

        if($PSBoundParameters.Keys -icontains 'backupName')
        {
            $arguments["backupName"] = $backupName
        }

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppBackupStatusSecrets -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppHybridConnectionSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='The relay name for this hybrid connection.)')]
        [string]
        $relayName,
        [parameter(mandatory=$False,HelpMessage='The name of the web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace for this hybrid connection.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the slot for the web app.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["namespaceName"] = $namespaceName
        $arguments["relayName"] = $relayName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppHybridConnectionSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebListWebAppSyncFunctionTriggersSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:listWebAppSyncFunctionTriggersSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetKubeEnvironment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Kubernetes Environment.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getKubeEnvironment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWebGetWebAppVnetConnectionSlot
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the virtual network.)')]
        [string]
        $vnetName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will get the named virtual network for the production slot.)')]
        [string]
        $slot
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["slot"] = $slot
        $arguments["vnetName"] = $vnetName

        $functionObject = Invoke-PulumiFunction -Name azure-native:web:getWebAppVnetConnectionSlot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function New-AzureNativeWebWebAppAuthSettings
{
    [Alias('azure_native_web_webappauthsettings')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret associated with
the Google web application.)'
)]
        [string]
        $googleClientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret of the Github
app used for GitHub Login.)'
)]
        [string]
        $gitHubClientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The Client Id of the GitHub app used for login.
This setting is required for enabling Github login)'
)]
        [string]
        $gitHubClientId,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 client ID that was created for the app used for authentication.
This setting is required for enabling Microsoft Account authentication.
Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm)'
)]
        [string]
        $microsoftAccountClientId,
        [parameter(mandatory=$False,HelpMessage='The Client Secret of the GitHub app used for Github Login.
This setting is required for enabling Github login.)'
)]
        [string]
        $gitHubClientSecret,
        [parameter(mandatory=$False,HelpMessage='The OAuth 1.0a consumer key of the Twitter application used for sign-in.
This setting is required for enabling Twitter Sign-In.
Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in)'
)]
        [string]
        $twitterConsumerKey,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
 The default is <code>false</code>.)'
)]
        [bool]
        $tokenStoreEnabled,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
This setting is optional. If not specified, "wl.basic" is used as the default scope.
Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx)'
)]
        [string[]]
        $microsoftAccountOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 client secret that was created for the app used for authentication.
This setting is required for enabling Microsoft Account authentication.
Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm)'
)]
        [string]
        $microsoftAccountClientSecret,
        [parameter(mandatory=$False,HelpMessage='Allowed audience values to consider when validating JWTs issued by
Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
allowed audience, regardless of this setting.)'
)]
        [string[]]
        $allowedAudiences,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret of the relying party application.)')]
        [string]
        $clientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The App Secret of the Facebook app used for Facebook Login.
This setting is required for enabling Facebook Login.
Facebook Login documentation: https://developers.facebook.com/docs/facebook-login)'
)]
        [string]
        $facebookAppSecret,
        [parameter(mandatory=$False,HelpMessage='The action to take when an unauthenticated client attempts to access the app.)')]
        $unauthenticatedClientAction,
        [parameter(mandatory=$False,HelpMessage='The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
This setting is required for enabling Twitter Sign-In.
Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in)'
)]
        [string]
        $twitterConsumerSecret,
        [parameter(mandatory=$False,HelpMessage='External URLs that can be redirected to as part of logging in or logging out of the app. Note that the query string part of the URL is ignored.
This is an advanced setting typically only needed by Windows Store application backends.
Note that URLs within the current domain are always implicitly allowed.)'
)]
        [string[]]
        $allowedExternalRedirectUrls,
        [parameter(mandatory=$False,HelpMessage='Login parameters to send to the OpenID Connect authorization endpoint when
a user logs in. Each parameter must be in the form "key=value".)'
)]
        [string[]]
        $additionalLoginParams,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
This setting is optional)'
)]
        [string[]]
        $gitHubOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
The setting in this value can control the behavior of certain features in the Authentication / Authorization module.)'
)]
        [string]
        $runtimeVersion,
        [parameter(mandatory=$False,HelpMessage='The client secret associated with the Google web application.
This setting is required for enabling Google Sign-In.
Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/)'
)]
        [string]
        $googleClientSecret,
        [parameter(mandatory=$False,HelpMessage='The ConfigVersion of the Authentication / Authorization feature in use for the current app.
The setting in this value can control the behavior of the control plane for Authentication / Authorization.)'
)]
        [string]
        $configVersion,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
This setting is optional.
Facebook Login documentation: https://developers.facebook.com/docs/facebook-login)'
)]
        [string[]]
        $facebookOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the app secret used for Facebook Login.)')]
        [string]
        $facebookAppSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
This URI is a case-sensitive identifier for the token issuer.
More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html)'
)]
        [string]
        $issuer,
        [parameter(mandatory=$False,HelpMessage='The path of the config file containing auth settings.
If the path is relative, base will the site''s root directory.)'
)]
        [string]
        $authFilePath,
        [parameter(mandatory=$False,HelpMessage='The number of hours after session token expiration that a session token can be used to
call the token refresh API. The default is 72 hours.)'
)]
        [int]
        $tokenRefreshExtensionHours,
        [parameter(mandatory=$False,HelpMessage='The default authentication provider to use when multiple providers are configured.
This setting is only needed if multiple providers are configured and the unauthenticated client
action is set to "RedirectToLoginPage".)'
)]
        $defaultProvider,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/)'
)]
        [string[]]
        $googleOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
a replacement for the Client Secret. It is also optional.)'
)]
        [string]
        $clientSecretCertificateThumbprint,
        [parameter(mandatory=$False,HelpMessage='Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.)')]
        [bool]
        $validateIssuer,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='"true" if the auth config settings should be read from a file,
"false" otherwise)'
)]
        [string]
        $isAuthFromFile,
        [parameter(mandatory=$False,HelpMessage='The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html)'
)]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='Gets a JSON string containing the Azure AD Acl settings.)')]
        [string]
        $aadClaimsAuthorization,
        [parameter(mandatory=$False,HelpMessage='The App ID of the Facebook app used for login.
This setting is required for enabling Facebook Login.
Facebook Login documentation: https://developers.facebook.com/docs/facebook-login)'
)]
        [string]
        $facebookAppId,
        [parameter(mandatory=$False,HelpMessage='The app setting name containing the OAuth 2.0 client secret that was created for the
app used for authentication.)'
)]
        [string]
        $microsoftAccountClientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The OpenID Connect Client ID for the Google web application.
This setting is required for enabling Google Sign-In.
Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/)'
)]
        [string]
        $googleClientId,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
application used for sign-in.)'
)]
        [string]
        $twitterConsumerSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The Client ID of this relying party application, known as the client_id.
This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
other 3rd party OpenID Connect providers.
More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html)'
)]
        [string]
        $clientId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebStaticSiteLinkedBackend
{
    [Alias('azure_native_web_staticsitelinkedbackend')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The region of the backend linked to the static site)')]
        [string]
        $region,
        [parameter(mandatory=$False,HelpMessage='Name of the backend to link to the static site)')]
        [string]
        $linkedBackendName,
        [parameter(mandatory=$False,HelpMessage='The resource id of the backend linked to the static site)')]
        [string]
        $backendResourceId,
        [parameter(mandatory=$False,HelpMessage='Name of the static site)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class GitHubActionCodeConfiguration
{
    [string] $runtimeVersion
    [string] $runtimeStack
}
function New-AzureNativeTypeWebGitHubActionCodeConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Runtime version is used to determine what build version to set in the workflow file.)')]
        [string]
        $runtimeVersion,
        [parameter(mandatory=$False,HelpMessage='Runtime stack is used to determine the workflow file content for code base apps.)')]
        [string]
        $runtimeStack
    )

    process
    {
        return $([GitHubActionCodeConfiguration]$PSBoundParameters)
    }
}
class GitHubActionContainerConfiguration
{
    [string] $imageName
    [string] $serverUrl
    [string] $password
    [string] $username
}
function New-AzureNativeTypeWebGitHubActionContainerConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The image name for the build.)')]
        [string]
        $imageName,
        [parameter(mandatory=$False,HelpMessage='The server URL for the container registry where the build will be hosted.)')]
        [string]
        $serverUrl,
        [parameter(mandatory=$False,HelpMessage='The password used to upload the image to the container registry.)')]
        [string]
        $password,
        [parameter(mandatory=$False,HelpMessage='The username used to upload the image to the container registry.)')]
        [string]
        $username
    )

    process
    {
        return $([GitHubActionContainerConfiguration]$PSBoundParameters)
    }
}
class GitHubActionConfiguration
{
    [bool] $isLinux
    [GitHubActionCodeConfiguration] $codeConfiguration
    [GitHubActionContainerConfiguration] $containerConfiguration
    [bool] $generateWorkflowFile
}
function New-AzureNativeTypeWebGitHubActionConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='This will help determine the workflow configuration to select.)')]
        [bool]
        $isLinux,
        [parameter(mandatory=$False,HelpMessage='GitHub Action code configuration.)')]
        [GitHubActionCodeConfiguration]
        $codeConfiguration,
        [parameter(mandatory=$False,HelpMessage='GitHub Action container configuration.)')]
        [GitHubActionContainerConfiguration]
        $containerConfiguration,
        [parameter(mandatory=$False,HelpMessage='Workflow option to determine whether the workflow file should be generated and written to the repository.)')]
        [bool]
        $generateWorkflowFile
    )

    process
    {
        return $([GitHubActionConfiguration]$PSBoundParameters)
    }
}
function New-AzureNativeWebWebAppSourceControlSlot
{
    [Alias('azure_native_web_webappsourcecontrolslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if this is deployed via GitHub action.)')]
        [bool]
        $isGitHubAction,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to enable deployment rollback; otherwise, <code>false</code>.)')]
        [bool]
        $deploymentRollbackEnabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.)')]
        [bool]
        $isMercurial,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='If GitHub Action is selected, than the associated configuration.)')]
        [GitHubActionConfiguration]
        $gitHubActionConfiguration,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).)')]
        [bool]
        $isManualIntegration,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of branch to use for deployment.)')]
        [string]
        $branch,
        [parameter(mandatory=$False,HelpMessage='Repository or source control URL.)')]
        [string]
        $repoUrl,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the source control configuration for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ConnectionGatewayReference
{
    [string] $location
    [string] $name
    [string] $type
    [string] $id
}
function New-AzureNativeTypeWebConnectionGatewayReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource reference location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource reference name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource reference type)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Resource reference id)')]
        [string]
        $id
    )

    process
    {
        return $([ConnectionGatewayReference]$PSBoundParameters)
    }
}
class ConnectionGatewayDefinitionProperties
{
    [string] $description
    [string[]] $contactInformation
    [ConnectionGatewayReference] $connectionGatewayInstallation
    [string] $machineName
    [string] $displayName
    [object] $status
    [string] $backendUri
}
function New-AzureNativeTypeWebConnectionGatewayDefinitionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The gateway description)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The gateway admin)')]
        [string[]]
        $contactInformation,
        [parameter(mandatory=$False,HelpMessage='The gateway installation reference)')]
        [ConnectionGatewayReference]
        $connectionGatewayInstallation,
        [parameter(mandatory=$False,HelpMessage='The machine name of the gateway)')]
        [string]
        $machineName,
        [parameter(mandatory=$False,HelpMessage='The gateway display name)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='The gateway status)')]
        $status,
        [parameter(mandatory=$False,HelpMessage='The URI of the backend)')]
        [string]
        $backendUri
    )

    process
    {
        return $([ConnectionGatewayDefinitionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeWebConnectionGateway
{
    [Alias('azure_native_web_connectiongateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The connection gateway name)')]
        [string]
        $connectionGatewayName,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ConnectionGatewayDefinitionProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppDomainOwnershipIdentifier
{
    [Alias('azure_native_web_webappdomainownershipidentifier')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of domain ownership identifier.)')]
        [string]
        $domainOwnershipIdentifierName,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='String representation of the identity.)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSwiftVirtualNetworkConnectionSlot
{
    [Alias('azure_native_web_webappswiftvirtualnetworkconnectionslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='A flag that specifies if the scale unit this Web App is on supports Swift integration.)')]
        [bool]
        $swiftSupported,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Virtual Network subnet''s resource ID. This is the subnet that this Web App will join. This subnet must have a delegation to Microsoft.Web/serverFarms defined first.)')]
        [string]
        $subnetResourceId,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will add or update connections for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSlotConfigurationNames
{
    [Alias('azure_native_web_webappslotconfigurationnames')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of external Azure storage account identifiers.)')]
        [string[]]
        $azureStorageConfigNames,
        [parameter(mandatory=$False,HelpMessage='List of connection string names.)')]
        [string[]]
        $connectionStringNames,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='List of application settings names.)')]
        [string[]]
        $appSettingNames,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ConnStringValueTypePair
{
    [ArgumentCompletions('MySql', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'ApiHub', 'DocDb', 'RedisCache', 'PostgreSQL')]
    [object] $type
    [string] $value
}
function New-AzureNativeTypeWebConnStringValueTypePair
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of database.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Value of pair.)')]
        [string]
        $value
    )

    process
    {
        return $([ConnStringValueTypePair]$PSBoundParameters)
    }
}
function New-AzureNativeWebWebAppConnectionStringsSlot
{
    [Alias('azure_native_web_webappconnectionstringsslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the connection settings for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Connection strings.)')]
        [ConnStringValueTypePair]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppMetadataSlot
{
    [Alias('azure_native_web_webappmetadataslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the metadata for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Settings.)')]
        [hashtable]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VirtualNetworkProfile
{
    [string] $id
    [string] $subnet
}
function New-AzureNativeTypeWebVirtualNetworkProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource id of the Virtual Network.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Subnet within the Virtual Network.)')]
        [string]
        $subnet
    )

    process
    {
        return $([VirtualNetworkProfile]$PSBoundParameters)
    }
}
function New-AzureNativeWebAppServiceEnvironment
{
    [Alias('azure_native_web_appserviceenvironment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='User added ip ranges to whitelist on ASE db)')]
        [string[]]
        $userWhitelistedIpRanges,
        [parameter(mandatory=$False,HelpMessage='Description of the Virtual Network.)')]
        [VirtualNetworkProfile]
        $virtualNetwork,
        [parameter(mandatory=$False,HelpMessage='DNS suffix of the App Service Environment.)')]
        [string]
        $dnsSuffix,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Front-end VM size, e.g. "Medium", "Large".)')]
        [string]
        $multiSize,
        [parameter(mandatory=$False,HelpMessage='Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment.)')]
        [string]
        [ArgumentCompletions('None', 'Web', 'Publishing', 'Web, Publishing')]
        $internalLoadBalancingMode,
        [parameter(mandatory=$False,HelpMessage='Scale factor for front-ends.)')]
        [int]
        $frontEndScaleFactor,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service Environment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Number of IP SSL addresses reserved for the App Service Environment.)')]
        [int]
        $ipsslAddressCount,
        [parameter(mandatory=$False,HelpMessage='Custom settings for changing the behavior of the App Service Environment.)')]
        $clusterSettings,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["virtualNetwork"] = $virtualNetwork

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppHostNameBindingSlot
{
    [Alias('azure_native_web_webapphostnamebindingslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will create a binding for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Hostname type.)')]
        $hostNameType,
        [parameter(mandatory=$False,HelpMessage='Azure resource type.)')]
        $azureResourceType,
        [parameter(mandatory=$False,HelpMessage='Custom DNS record type.)')]
        $customHostNameDnsRecordType,
        [parameter(mandatory=$False,HelpMessage='Fully qualified ARM domain resource URI.)')]
        [string]
        $domainId,
        [parameter(mandatory=$False,HelpMessage='SSL certificate thumbprint)')]
        [string]
        $thumbprint,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Hostname in the hostname binding.)')]
        [string]
        $hostName,
        [parameter(mandatory=$False,HelpMessage='SSL type)')]
        $sslState,
        [parameter(mandatory=$False,HelpMessage='Azure resource name.)')]
        [string]
        $azureResourceName,
        [parameter(mandatory=$False,HelpMessage='App Service app name.)')]
        [string]
        $siteName,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebStaticSiteLinkedBackendForBuild
{
    [Alias('azure_native_web_staticsitelinkedbackendforbuild')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the static site)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The region of the backend linked to the static site)')]
        [string]
        $region,
        [parameter(mandatory=$False,HelpMessage='Name of the backend to link to the static site)')]
        [string]
        $linkedBackendName,
        [parameter(mandatory=$False,HelpMessage='The resource id of the backend linked to the static site)')]
        [string]
        $backendResourceId,
        [parameter(mandatory=$False,HelpMessage='The stage site identifier)')]
        [string]
        $environmentName,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["environmentName"] = $environmentName
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppBackupConfiguration
{
    [Alias('azure_native_web_webappbackupconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the backup.)')]
        [string]
        $backupName,
        [parameter(mandatory=$False,HelpMessage='Databases included in the backup.)')]
        $databases,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Schedule for the backup if it is executed periodically.)')]
        [BackupSchedule]
        $backupSchedule,
        [parameter(mandatory=$False,HelpMessage='True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='SAS URL to the container.)')]
        [string]
        $storageAccountUrl,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["storageAccountUrl"] = $storageAccountUrl

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class TrafficWeight
{
    [string] $revisionName
    [int] $weight
    [bool] $latestRevision
}
function New-AzureNativeTypeWebTrafficWeight
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of a revision)')]
        [string]
        $revisionName,
        [parameter(mandatory=$False,HelpMessage='Traffic weight assigned to a revision)')]
        [int]
        $weight,
        [parameter(mandatory=$False,HelpMessage='Indicates that the traffic weight belongs to a latest stable revision)')]
        [bool]
        $latestRevision
    )

    process
    {
        return $([TrafficWeight]$PSBoundParameters)
    }
}
class Ingress
{
    [ArgumentCompletions('auto', 'http', 'http2')]
    [string] $transport
    [TrafficWeight[]] $traffic
    [int] $targetPort
    [bool] $external
    [bool] $allowInsecure
}
function New-AzureNativeTypeWebIngress
{
    param (
        [parameter(mandatory=$False,HelpMessage='Ingress transport protocol)')]
        [string]
        [ArgumentCompletions('auto', 'http', 'http2')]
        $transport,
        [parameter(mandatory=$False,HelpMessage=')')]
        $traffic,
        [parameter(mandatory=$False,HelpMessage='Target Port in containers for traffic from ingress)')]
        [int]
        $targetPort,
        [parameter(mandatory=$False,HelpMessage='Bool indicating if app exposes an external http endpoint)')]
        [bool]
        $external,
        [parameter(mandatory=$False,HelpMessage='Bool indicating if HTTP connections to is allowed. If set to false HTTP connections are automatically redirected to HTTPS connections)')]
        [bool]
        $allowInsecure
    )

    process
    {
        return $([Ingress]$PSBoundParameters)
    }
}
class Secret
{
    [string] $name
    [string] $value
}
function New-AzureNativeTypeWebSecret
{
    param (
        [parameter(mandatory=$False,HelpMessage='Secret Name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Secret Value.)')]
        [string]
        $value
    )

    process
    {
        return $([Secret]$PSBoundParameters)
    }
}
class RegistryCredentials
{
    [string] $server
    [string] $passwordSecretRef
    [string] $username
}
function New-AzureNativeTypeWebRegistryCredentials
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container Registry Server)')]
        [string]
        $server,
        [parameter(mandatory=$False,HelpMessage='The name of the Secret that contains the registry login password)')]
        [string]
        $passwordSecretRef,
        [parameter(mandatory=$False,HelpMessage='Container Registry Username)')]
        [string]
        $username
    )

    process
    {
        return $([RegistryCredentials]$PSBoundParameters)
    }
}
class Configuration
{
    [Ingress] $ingress
    [Secret[]] $secrets
    [RegistryCredentials[]] $registries
    [ArgumentCompletions('multiple', 'single')]
    [string] $activeRevisionsMode
}
function New-AzureNativeTypeWebConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Ingress configurations.)')]
        [Ingress]
        $ingress,
        [parameter(mandatory=$False,HelpMessage='Collection of secrets used by a Container app)')]
        $secrets,
        [parameter(mandatory=$False,HelpMessage='Collection of private container registry credentials for containers used by the Container app)')]
        $registries,
        [parameter(mandatory=$False,HelpMessage='ActiveRevisionsMode controls how active revisions are handled for the Container app:
<list><item>Multiple: multiple revisions can be active. If no value if provided, this is the default</item><item>Single: Only one revision can be active at a time. Revision weights can not be used in this mode</item></list>)'
)]
        [string]
        [ArgumentCompletions('multiple', 'single')]
        $activeRevisionsMode
    )

    process
    {
        return $([Configuration]$PSBoundParameters)
    }
}
class EnvironmentVar
{
    [string] $name
    [string] $secretRef
    [string] $value
}
function New-AzureNativeTypeWebEnvironmentVar
{
    param (
        [parameter(mandatory=$False,HelpMessage='Environment variable name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App secret from which to pull the environment variable value.)')]
        [string]
        $secretRef,
        [parameter(mandatory=$False,HelpMessage='Non-secret environment variable value.)')]
        [string]
        $value
    )

    process
    {
        return $([EnvironmentVar]$PSBoundParameters)
    }
}
class ContainerResources
{
    [string] $memory
    [int] $cpu
}
function New-AzureNativeTypeWebContainerResources
{
    param (
        [parameter(mandatory=$False,HelpMessage='Required memory, e.g. "250Mb")')]
        [string]
        $memory,
        [parameter(mandatory=$False,HelpMessage='Required CPU in cores, e.g. 0.5)')]
        [int]
        $cpu
    )

    process
    {
        return $([ContainerResources]$PSBoundParameters)
    }
}
class Container
{
    [EnvironmentVar[]] $env
    [ContainerResources] $resources
    [string] $name
    [string[]] $args
    [string] $image
    [string[]] $command
}
function New-AzureNativeTypeWebContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container environment variables.)')]
        $env,
        [parameter(mandatory=$False,HelpMessage='Container resource requirements.)')]
        [ContainerResources]
        $resources,
        [parameter(mandatory=$False,HelpMessage='Custom container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Container start command arguments.)')]
        [string[]]
        $args,
        [parameter(mandatory=$False,HelpMessage='Container image tag.)')]
        [string]
        $image,
        [parameter(mandatory=$False,HelpMessage='Container start command.)')]
        [string[]]
        $command
    )

    process
    {
        return $([Container]$PSBoundParameters)
    }
}
class DaprMetadata
{
    [string] $name
    [string] $secretRef
    [string] $value
}
function New-AzureNativeTypeWebDaprMetadata
{
    param (
        [parameter(mandatory=$False,HelpMessage='Metadata property name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App secret from which to pull the metadata property value.)')]
        [string]
        $secretRef,
        [parameter(mandatory=$False,HelpMessage='Metadata property value.)')]
        [string]
        $value
    )

    process
    {
        return $([DaprMetadata]$PSBoundParameters)
    }
}
class DaprComponent
{
    [string] $version
    [string] $name
    [string] $type
    [DaprMetadata[]] $metadata
}
function New-AzureNativeTypeWebDaprComponent
{
    param (
        [parameter(mandatory=$False,HelpMessage='Component version)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Component name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Component type)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Component metadata)')]
        $metadata
    )

    process
    {
        return $([DaprComponent]$PSBoundParameters)
    }
}
class Dapr
{
    [DaprComponent[]] $components
    [string] $appId
    [bool] $enabled
    [int] $appPort
}
function New-AzureNativeTypeWebDapr
{
    param (
        [parameter(mandatory=$False,HelpMessage='Collection of Dapr components)')]
        $components,
        [parameter(mandatory=$False,HelpMessage='Dapr application identifier)')]
        [string]
        $appId,
        [parameter(mandatory=$False,HelpMessage='Boolean indicating if the Dapr side car is enabled)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='Port on which the Dapr side car)')]
        [int]
        $appPort
    )

    process
    {
        return $([Dapr]$PSBoundParameters)
    }
}
class ScaleRuleAuth
{
    [string] $triggerParameter
    [string] $secretRef
}
function New-AzureNativeTypeWebScaleRuleAuth
{
    param (
        [parameter(mandatory=$False,HelpMessage='Trigger Parameter that uses the secret)')]
        [string]
        $triggerParameter,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App secret from which to pull the auth params.)')]
        [string]
        $secretRef
    )

    process
    {
        return $([ScaleRuleAuth]$PSBoundParameters)
    }
}
class HttpScaleRule
{
    [ScaleRuleAuth[]] $auth
    [object] $metadata
}
function New-AzureNativeTypeWebHttpScaleRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Authentication secrets for the custom scale rule.)')]
        $auth,
        [parameter(mandatory=$False,HelpMessage='Metadata properties to describe http scale rule.)')]
        [hashtable]
        $metadata
    )

    process
    {
        return $([HttpScaleRule]$PSBoundParameters)
    }
}
class QueueScaleRule
{
    [ScaleRuleAuth[]] $auth
    [string] $queueName
    [int] $queueLength
}
function New-AzureNativeTypeWebQueueScaleRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Authentication secrets for the queue scale rule.)')]
        $auth,
        [parameter(mandatory=$False,HelpMessage='Queue name.)')]
        [string]
        $queueName,
        [parameter(mandatory=$False,HelpMessage='Queue length.)')]
        [int]
        $queueLength
    )

    process
    {
        return $([QueueScaleRule]$PSBoundParameters)
    }
}
class CustomScaleRule
{
    [ScaleRuleAuth[]] $auth
    [string] $type
    [object] $metadata
}
function New-AzureNativeTypeWebCustomScaleRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Authentication secrets for the custom scale rule.)')]
        $auth,
        [parameter(mandatory=$False,HelpMessage='Type of the custom scale rule
eg: azure-servicebus, redis etc.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Metadata properties to describe custom scale rule.)')]
        [hashtable]
        $metadata
    )

    process
    {
        return $([CustomScaleRule]$PSBoundParameters)
    }
}
class ScaleRule
{
    [HttpScaleRule] $http
    [string] $name
    [QueueScaleRule] $azureQueue
    [CustomScaleRule] $custom
}
function New-AzureNativeTypeWebScaleRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='HTTP requests based scaling.)')]
        [HttpScaleRule]
        $http,
        [parameter(mandatory=$False,HelpMessage='Scale Rule Name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Azure Queue based scaling.)')]
        [QueueScaleRule]
        $azureQueue,
        [parameter(mandatory=$False,HelpMessage='Custom scale rule.)')]
        [CustomScaleRule]
        $custom
    )

    process
    {
        return $([ScaleRule]$PSBoundParameters)
    }
}
class Scale
{
    [int] $minReplicas
    [int] $maxReplicas
    [ScaleRule[]] $rules
}
function New-AzureNativeTypeWebScale
{
    param (
        [parameter(mandatory=$False,HelpMessage='Optional. Minimum number of container replicas.)')]
        [int]
        $minReplicas,
        [parameter(mandatory=$False,HelpMessage='Optional. Maximum number of container replicas. Defaults to 10 if not set.)')]
        [int]
        $maxReplicas,
        [parameter(mandatory=$False,HelpMessage='Scaling rules.)')]
        $rules
    )

    process
    {
        return $([Scale]$PSBoundParameters)
    }
}
class Template
{
    [string] $revisionSuffix
    [Container[]] $containers
    [Dapr] $dapr
    [Scale] $scale
}
function New-AzureNativeTypeWebTemplate
{
    param (
        [parameter(mandatory=$False,HelpMessage='User friendly suffix that is appended to the revision name)')]
        [string]
        $revisionSuffix,
        [parameter(mandatory=$False,HelpMessage='List of container definitions for the Container App.)')]
        $containers,
        [parameter(mandatory=$False,HelpMessage='Dapr configuration for the Container App.)')]
        [Dapr]
        $dapr,
        [parameter(mandatory=$False,HelpMessage='Scaling properties for the Container App.)')]
        [Scale]
        $scale
    )

    process
    {
        return $([Template]$PSBoundParameters)
    }
}
function New-AzureNativeWebContainerApp
{
    [Alias('azure_native_web_containerapp')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource ID of the Container App''s KubeEnvironment.)')]
        [string]
        $kubeEnvironmentId,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Non versioned Container App configuration properties.)')]
        [Configuration]
        $configuration,
        [parameter(mandatory=$False,HelpMessage='Container App versioned application definition.)')]
        [Template]
        $template,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppApplicationSettings
{
    [Alias('azure_native_web_webappapplicationsettings')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Settings.)')]
        [hashtable]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppPublicCertificate
{
    [Alias('azure_native_web_webapppubliccertificate')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Public Certificate Location)')]
        $publicCertificateLocation,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Public Certificate byte array)')]
        [string]
        $blob,
        [parameter(mandatory=$False,HelpMessage='Public certificate name.)')]
        [string]
        $publicCertificateName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ApiConnectionTestLink
{
    [string] $method
    [string] $requestUri
}
function New-AzureNativeTypeWebApiConnectionTestLink
{
    param (
        [parameter(mandatory=$False,HelpMessage='HTTP Method)')]
        [string]
        $method,
        [parameter(mandatory=$False,HelpMessage='Test link request URI)')]
        [string]
        $requestUri
    )

    process
    {
        return $([ApiConnectionTestLink]$PSBoundParameters)
    }
}
class ApiReference
{
    [string] $description
    [string] $displayName
    [string] $type
    [string] $brandColor
    [string] $name
    [object] $swagger
    [string] $iconUri
    [string] $id
}
function New-AzureNativeTypeWebApiReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='The custom API description)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The display name)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Resource reference type)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Brand color)')]
        [string]
        $brandColor,
        [parameter(mandatory=$False,HelpMessage='The name of the API)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The JSON representation of the swagger)')]
        $swagger,
        [parameter(mandatory=$False,HelpMessage='The icon URI)')]
        [string]
        $iconUri,
        [parameter(mandatory=$False,HelpMessage='Resource reference id)')]
        [string]
        $id
    )

    process
    {
        return $([ApiReference]$PSBoundParameters)
    }
}
class ConnectionError
{
    [string] $location
    [string] $code
    [string] $etag
    [string] $message
    [object] $tags
}
function New-AzureNativeTypeWebConnectionError
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Code of the status)')]
        [string]
        $code,
        [parameter(mandatory=$False,HelpMessage='Resource ETag)')]
        [string]
        $etag,
        [parameter(mandatory=$False,HelpMessage='Description of the status)')]
        [string]
        $message,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([ConnectionError]$PSBoundParameters)
    }
}
class ConnectionStatusDefinition
{
    [string] $target
    [string] $status
    [ConnectionError] $error
}
function New-AzureNativeTypeWebConnectionStatusDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Target of the error)')]
        [string]
        $target,
        [parameter(mandatory=$False,HelpMessage='The gateway status)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='Connection error)')]
        [ConnectionError]
        $error
    )

    process
    {
        return $([ConnectionStatusDefinition]$PSBoundParameters)
    }
}
class ApiConnectionDefinitionProperties
{
    [object] $parameterValues
    [ApiConnectionTestLink[]] $testLinks
    [ApiReference] $api
    [string] $createdTime
    [string] $displayName
    [object] $nonSecretParameterValues
    [object] $customParameterValues
    [ConnectionStatusDefinition[]] $statuses
    [string] $changedTime
}
function New-AzureNativeTypeWebApiConnectionDefinitionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Dictionary of parameter values)')]
        [hashtable]
        $parameterValues,
        [parameter(mandatory=$False,HelpMessage='Links to test the API connection)')]
        $testLinks,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ApiReference]
        $api,
        [parameter(mandatory=$False,HelpMessage='Timestamp of the connection creation)')]
        [string]
        $createdTime,
        [parameter(mandatory=$False,HelpMessage='Display name)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Dictionary of nonsecret parameter values)')]
        [hashtable]
        $nonSecretParameterValues,
        [parameter(mandatory=$False,HelpMessage='Dictionary of custom parameter values)')]
        [hashtable]
        $customParameterValues,
        [parameter(mandatory=$False,HelpMessage='Status of the connection)')]
        $statuses,
        [parameter(mandatory=$False,HelpMessage='Timestamp of last connection change)')]
        [string]
        $changedTime
    )

    process
    {
        return $([ApiConnectionDefinitionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeWebConnection
{
    [Alias('azure_native_web_connection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Connection name)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ApiConnectionDefinitionProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppHybridConnection
{
    [Alias('azure_native_web_webapphybridconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus relay.)')]
        [string]
        $relayName,
        [parameter(mandatory=$False,HelpMessage='The suffix for the service bus endpoint. By default this is .servicebus.windows.net)')]
        [string]
        $serviceBusSuffix,
        [parameter(mandatory=$False,HelpMessage='The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
normally, use the POST /listKeys API instead.)'
)]
        [string]
        $sendKeyValue,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The port of the endpoint.)')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage='The namespace for this hybrid connection.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The ARM URI to the Service Bus relay.)')]
        [string]
        $relayArmUri,
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.)')]
        [string]
        $sendKeyName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus namespace.)')]
        [string]
        $serviceBusNamespace,
        [parameter(mandatory=$False,HelpMessage='The hostname of the endpoint.)')]
        [string]
        $hostname,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["namespaceName"] = $namespaceName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppApplicationSettingsSlot
{
    [Alias('azure_native_web_webappapplicationsettingsslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the application settings for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Settings.)')]
        [hashtable]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppPremierAddOn
{
    [Alias('azure_native_web_webapppremieraddon')]
    param (
        [parameter(mandatory=$False,HelpMessage='Premier add on Marketplace offer.)')]
        [string]
        $marketplaceOffer,
        [parameter(mandatory=$False,HelpMessage='Premier add on Marketplace publisher.)')]
        [string]
        $marketplacePublisher,
        [parameter(mandatory=$False,HelpMessage='Premier add on SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Add-on name.)')]
        [string]
        $premierAddOnName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Premier add on Vendor.)')]
        [string]
        $vendor,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Premier add on Product.)')]
        [string]
        $product,
        [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(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppDomainOwnershipIdentifierSlot
{
    [Alias('azure_native_web_webappdomainownershipidentifierslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will delete the binding for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='String representation of the identity.)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Name of domain ownership identifier.)')]
        [string]
        $domainOwnershipIdentifierName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebStaticSiteUserProvidedFunctionAppForStaticSite
{
    [Alias('azure_native_web_staticsiteuserprovidedfunctionappforstaticsite')]
    param (
        [parameter(mandatory=$False,HelpMessage='The region of the function app registered with the static site)')]
        [string]
        $functionAppRegion,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the function app to register with the static site.)')]
        [string]
        $functionAppName,
        [parameter(mandatory=$False,HelpMessage='Specify <code>true</code> to force the update of the auth configuration on the function app even if an AzureStaticWebApps provider is already configured on the function app. The default is <code>false</code>.)')]
        [bool]
        $isForced,
        [parameter(mandatory=$False,HelpMessage='The resource id of the function app registered with the static site)')]
        [string]
        $functionAppResourceId,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppRelayServiceConnectionSlot
{
    [Alias('azure_native_web_webapprelayserviceconnectionslot')]
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will create or update a hybrid connection for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $entityConnectionString,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $entityName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $resourceConnectionString,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $biztalkUri,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $hostname,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppPublicCertificateSlot
{
    [Alias('azure_native_web_webapppubliccertificateslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Public Certificate Location)')]
        $publicCertificateLocation,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Public Certificate byte array)')]
        [string]
        $blob,
        [parameter(mandatory=$False,HelpMessage='Public certificate name.)')]
        [string]
        $publicCertificateName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will create a binding for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class KubeEnvironmentProfile
{
    [string] $id
}
function New-AzureNativeTypeWebKubeEnvironmentProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID of the Kubernetes Environment.)')]
        [string]
        $id
    )

    process
    {
        return $([KubeEnvironmentProfile]$PSBoundParameters)
    }
}
class SkuCapacity
{
    [int] $minimum
    [int] $elasticMaximum
    [int] $default
    [string] $scaleType
    [int] $maximum
}
function New-AzureNativeTypeWebSkuCapacity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Minimum number of workers for this App Service plan SKU.)')]
        [int]
        $minimum,
        [parameter(mandatory=$False,HelpMessage='Maximum number of Elastic workers for this App Service plan SKU.)')]
        [int]
        $elasticMaximum,
        [parameter(mandatory=$False,HelpMessage='Default number of workers for this App Service plan SKU.)')]
        [int]
        $default,
        [parameter(mandatory=$False,HelpMessage='Available scale configurations for an App Service plan.)')]
        [string]
        $scaleType,
        [parameter(mandatory=$False,HelpMessage='Maximum number of workers for this App Service plan SKU.)')]
        [int]
        $maximum
    )

    process
    {
        return $([SkuCapacity]$PSBoundParameters)
    }
}
class Capability
{
    [string] $name
    [string] $value
    [string] $reason
}
function New-AzureNativeTypeWebCapability
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the SKU capability.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Value of the SKU capability.)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Reason of the SKU capability.)')]
        [string]
        $reason
    )

    process
    {
        return $([Capability]$PSBoundParameters)
    }
}
class SkuDescription
{
    [int] $capacity
    [SkuCapacity] $skuCapacity
    [string] $tier
    [string] $size
    [string[]] $locations
    [string] $name
    [string] $family
    [Capability[]] $capabilities
}
function New-AzureNativeTypeWebSkuDescription
{
    param (
        [parameter(mandatory=$False,HelpMessage='Current number of instances assigned to the resource.)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='Min, max, and default scale values of the SKU.)')]
        [SkuCapacity]
        $skuCapacity,
        [parameter(mandatory=$False,HelpMessage='Service tier of the resource SKU.)')]
        [string]
        $tier,
        [parameter(mandatory=$False,HelpMessage='Size specifier of the resource SKU.)')]
        [string]
        $size,
        [parameter(mandatory=$False,HelpMessage='Locations of the SKU.)')]
        [string[]]
        $locations,
        [parameter(mandatory=$False,HelpMessage='Name of the resource SKU.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Family code of the resource SKU.)')]
        [string]
        $family,
        [parameter(mandatory=$False,HelpMessage='Capabilities of the SKU, e.g., is traffic manager enabled?)')]
        $capabilities
    )

    process
    {
        return $([SkuDescription]$PSBoundParameters)
    }
}
class HostingEnvironmentProfile
{
    [string] $id
}
function New-AzureNativeTypeWebHostingEnvironmentProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID of the App Service Environment.)')]
        [string]
        $id
    )

    process
    {
        return $([HostingEnvironmentProfile]$PSBoundParameters)
    }
}
function New-AzureNativeWebAppServicePlan
{
    [Alias('azure_native_web_appserviceplan')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service plan.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Specification for the Kubernetes Environment to use for the App Service plan.)')]
        [KubeEnvironmentProfile]
        $kubeEnvironmentProfile,
        [parameter(mandatory=$False,HelpMessage='If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.)')]
        [bool]
        $hyperV,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan)')]
        [int]
        $maximumElasticWorkerCount,
        [parameter(mandatory=$False,HelpMessage='The time when the server farm free offer expires.)')]
        [string]
        $freeOfferExpirationTime,
        [parameter(mandatory=$False,HelpMessage='If Linux app service plan <code>true</code>, <code>false</code> otherwise.)')]
        [bool]
        $reserved,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='If <code>true</code>, this App Service Plan owns spot instances.)')]
        [bool]
        $isSpot,
        [parameter(mandatory=$False,HelpMessage='Target worker tier assigned to the App Service plan.)')]
        [string]
        $workerTierName,
        [parameter(mandatory=$False,HelpMessage='Description of a SKU for a scalable resource.)')]
        [SkuDescription]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Specification for the App Service Environment to use for the App Service plan.)')]
        [HostingEnvironmentProfile]
        $hostingEnvironmentProfile,
        [parameter(mandatory=$False,HelpMessage='The time when the server farm expires. Valid only if it is a spot server farm.)')]
        [string]
        $spotExpirationTime,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Scaling worker count.)')]
        [int]
        $targetWorkerCount,
        [parameter(mandatory=$False,HelpMessage='If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.)'
)]
        [bool]
        $perSiteScaling,
        [parameter(mandatory=$False,HelpMessage='Scaling worker size ID.)')]
        [int]
        $targetWorkerSizeId,
        [parameter(mandatory=$False,HelpMessage='Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.)')]
        [bool]
        $isXenon,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ApiResourceDefinitions
{
    [string] $modifiedSwaggerUrl
    [string] $originalSwaggerUrl
}
function New-AzureNativeTypeWebApiResourceDefinitions
{
    param (
        [parameter(mandatory=$False,HelpMessage='The modified swagger URL)')]
        [string]
        $modifiedSwaggerUrl,
        [parameter(mandatory=$False,HelpMessage='The original swagger URL)')]
        [string]
        $originalSwaggerUrl
    )

    process
    {
        return $([ApiResourceDefinitions]$PSBoundParameters)
    }
}
class ApiResourceBackendService
{
    [string] $serviceUrl
}
function New-AzureNativeTypeWebApiResourceBackendService
{
    param (
        [parameter(mandatory=$False,HelpMessage='The service URL)')]
        [string]
        $serviceUrl
    )

    process
    {
        return $([ApiResourceBackendService]$PSBoundParameters)
    }
}
class WsdlDefinition
{
    [WsdlService] $service
    [string] $content
    [ArgumentCompletions('NotSpecified', 'SoapToRest', 'SoapPassThrough')]
    [string] $importMethod
    [string] $url
}
function New-AzureNativeTypeWebWsdlDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='The service with name and endpoint names)')]
        [WsdlService]
        $service,
        [parameter(mandatory=$False,HelpMessage='The WSDL content)')]
        [string]
        $content,
        [parameter(mandatory=$False,HelpMessage='The WSDL import method)')]
        [string]
        [ArgumentCompletions('NotSpecified', 'SoapToRest', 'SoapPassThrough')]
        $importMethod,
        [parameter(mandatory=$False,HelpMessage='The WSDL URL)')]
        [string]
        $url
    )

    process
    {
        return $([WsdlDefinition]$PSBoundParameters)
    }
}
class CustomApiPropertiesDefinition
{
    [string] $displayName
    [string] $iconUri
    [object] $swagger
    [string] $brandColor
    [string[]] $runtimeUrls
    [string] $description
    [ApiResourceDefinitions] $apiDefinitions
    [object] $connectionParameters
    [ApiResourceBackendService] $backendService
    [WsdlDefinition] $wsdlDefinition
    [ArgumentCompletions('NotSpecified', 'Rest', 'Soap')]
    [string] $apiType
    [string[]] $capabilities
}
class ApiOAuthSettings
{
    [string] $clientSecret
    [string[]] $scopes
    [string] $clientId
    [object] $customParameters
    [object] $properties
    [string] $identityProvider
    [string] $redirectUrl
}
class ApiOAuthSettingsParameter
{
    [object] $uiDefinition
    [string] $value
    [object] $options
}
function New-AzureNativeTypeWebApiOAuthSettingsParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='UI definitions per culture as caller can specify the culture)')]
        $uiDefinition,
        [parameter(mandatory=$False,HelpMessage='Value of the setting)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Options available to this parameter)')]
        $options
    )

    process
    {
        return $([ApiOAuthSettingsParameter]$PSBoundParameters)
    }
}
function New-AzureNativeTypeWebApiOAuthSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Client Secret needed for OAuth)')]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='OAuth scopes)')]
        [string[]]
        $scopes,
        [parameter(mandatory=$False,HelpMessage='Resource provider client id)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='OAuth parameters key is the name of parameter)')]
        [ApiOAuthSettingsParameter]
        $customParameters,
        [parameter(mandatory=$False,HelpMessage='Read only properties for this oauth setting.)')]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Identity provider)')]
        [string]
        $identityProvider,
        [parameter(mandatory=$False,HelpMessage='Url)')]
        [string]
        $redirectUrl
    )

    process
    {
        return $([ApiOAuthSettings]$PSBoundParameters)
    }
}
class ConnectionParameter
{
    [ArgumentCompletions('string', 'securestring', 'secureobject', 'int', 'bool', 'object', 'array', 'oauthSetting', 'connection')]
    [object] $type
    [ApiOAuthSettings] $oAuthSettings
}
function New-AzureNativeTypeWebConnectionParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of the parameter)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='OAuth settings for the connection provider)')]
        [ApiOAuthSettings]
        $oAuthSettings
    )

    process
    {
        return $([ConnectionParameter]$PSBoundParameters)
    }
}
function New-AzureNativeTypeWebCustomApiPropertiesDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='The display name)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='The icon URI)')]
        [string]
        $iconUri,
        [parameter(mandatory=$False,HelpMessage='The JSON representation of the swagger)')]
        $swagger,
        [parameter(mandatory=$False,HelpMessage='Brand color)')]
        [string]
        $brandColor,
        [parameter(mandatory=$False,HelpMessage='Runtime URLs)')]
        [string[]]
        $runtimeUrls,
        [parameter(mandatory=$False,HelpMessage='The custom API description)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='API Definitions)')]
        [ApiResourceDefinitions]
        $apiDefinitions,
        [parameter(mandatory=$False,HelpMessage='Connection parameters)')]
        [ConnectionParameter]
        $connectionParameters,
        [parameter(mandatory=$False,HelpMessage='The API backend service)')]
        [ApiResourceBackendService]
        $backendService,
        [parameter(mandatory=$False,HelpMessage='The WSDL definition)')]
        [WsdlDefinition]
        $wsdlDefinition,
        [parameter(mandatory=$False,HelpMessage='The API type)')]
        [string]
        [ArgumentCompletions('NotSpecified', 'Rest', 'Soap')]
        $apiType,
        [parameter(mandatory=$False,HelpMessage='The custom API capabilities)')]
        [string[]]
        $capabilities
    )

    process
    {
        return $([CustomApiPropertiesDefinition]$PSBoundParameters)
    }
}
function New-AzureNativeWebCustomApi
{
    [Alias('azure_native_web_customapi')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Custom API properties)')]
        [CustomApiPropertiesDefinition]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Subscription Id)')]
        [string]
        $subscriptionId,
        [parameter(mandatory=$False,HelpMessage='API name)')]
        [string]
        $apiName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppHostNameBinding
{
    [Alias('azure_native_web_webapphostnamebinding')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Azure resource type.)')]
        $azureResourceType,
        [parameter(mandatory=$False,HelpMessage='SSL type)')]
        $sslState,
        [parameter(mandatory=$False,HelpMessage='Custom DNS record type.)')]
        $customHostNameDnsRecordType,
        [parameter(mandatory=$False,HelpMessage='App Service app name.)')]
        [string]
        $siteName,
        [parameter(mandatory=$False,HelpMessage='Azure resource name.)')]
        [string]
        $azureResourceName,
        [parameter(mandatory=$False,HelpMessage='SSL certificate thumbprint)')]
        [string]
        $thumbprint,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Hostname type.)')]
        $hostNameType,
        [parameter(mandatory=$False,HelpMessage='Hostname in the hostname binding.)')]
        [string]
        $hostName,
        [parameter(mandatory=$False,HelpMessage='Fully qualified ARM domain resource URI.)')]
        [string]
        $domainId,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSourceControl
{
    [Alias('azure_native_web_webappsourcecontrol')]
    param (
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if this is deployed via GitHub action.)')]
        [bool]
        $isGitHubAction,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to enable deployment rollback; otherwise, <code>false</code>.)')]
        [bool]
        $deploymentRollbackEnabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.)')]
        [bool]
        $isMercurial,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='If GitHub Action is selected, than the associated configuration.)')]
        [GitHubActionConfiguration]
        $gitHubActionConfiguration,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).)')]
        [bool]
        $isManualIntegration,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of branch to use for deployment.)')]
        [string]
        $branch,
        [parameter(mandatory=$False,HelpMessage='Repository or source control URL.)')]
        [string]
        $repoUrl,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppDeployment
{
    [Alias('azure_native_web_webappdeployment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Author email.)')]
        [string]
        $authorEmail,
        [parameter(mandatory=$False,HelpMessage='Start time.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='End time.)')]
        [string]
        $endTime,
        [parameter(mandatory=$False,HelpMessage='Who authored the deployment.)')]
        [string]
        $author,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Details about deployment status.)')]
        [string]
        $message,
        [parameter(mandatory=$False,HelpMessage='Deployment status.)')]
        [int]
        $status,
        [parameter(mandatory=$False,HelpMessage='Details on deployment.)')]
        [string]
        $details,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Who performed the deployment.)')]
        [string]
        $deployer,
        [parameter(mandatory=$False,HelpMessage='True if deployment is currently active, false if completed and null if not started.)')]
        [bool]
        $active,
        [parameter(mandatory=$False,HelpMessage='ID of an existing deployment.)')]
        [string]
        $id,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppConnectionStrings
{
    [Alias('azure_native_web_webappconnectionstrings')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Connection strings.)')]
        [ConnStringValueTypePair]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppFunction
{
    [Alias('azure_native_web_webappfunction')]
    param (
        [parameter(mandatory=$False,HelpMessage='Test data used when testing via the Azure Portal.)')]
        [string]
        $testData,
        [parameter(mandatory=$False,HelpMessage='Script root path URI.)')]
        [string]
        $scriptRootPathHref,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a value indicating whether the function is disabled)')]
        [bool]
        $isDisabled,
        [parameter(mandatory=$False,HelpMessage='Script URI.)')]
        [string]
        $scriptHref,
        [parameter(mandatory=$False,HelpMessage='Config information.)')]
        $config,
        [parameter(mandatory=$False,HelpMessage='Function App ID.)')]
        [string]
        $functionAppId,
        [parameter(mandatory=$False,HelpMessage='The invocation URL)')]
        [string]
        $invokeUrlTemplate,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Secrets file URI.)')]
        [string]
        $secretsFileHref,
        [parameter(mandatory=$False,HelpMessage='Function URI.)')]
        [string]
        $href,
        [parameter(mandatory=$False,HelpMessage='Config URI.)')]
        [string]
        $configHref,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName,
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='File list.)')]
        [hashtable]
        $files,
        [parameter(mandatory=$False,HelpMessage='The function language)')]
        [string]
        $language,
        [parameter(mandatory=$False,HelpMessage='Test data URI.)')]
        [string]
        $testDataHref,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExtendedLocation
{
    [string] $name
}
function New-AzureNativeTypeWebExtendedLocation
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of extended location.)')]
        [string]
        $name
    )

    process
    {
        return $([ExtendedLocation]$PSBoundParameters)
    }
}
class LogAnalyticsConfiguration
{
    [string] $customerId
    [string] $sharedKey
}
function New-AzureNativeTypeWebLogAnalyticsConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $customerId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $sharedKey
    )

    process
    {
        return $([LogAnalyticsConfiguration]$PSBoundParameters)
    }
}
class AppLogsConfiguration
{
    [string] $destination
    [LogAnalyticsConfiguration] $logAnalyticsConfiguration
}
function New-AzureNativeTypeWebAppLogsConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $destination,
        [parameter(mandatory=$False,HelpMessage=')')]
        [LogAnalyticsConfiguration]
        $logAnalyticsConfiguration
    )

    process
    {
        return $([AppLogsConfiguration]$PSBoundParameters)
    }
}
class FrontEndConfiguration
{
    [ArgumentCompletions('NodePort', 'LoadBalancer')]
    [object] $kind
}
function New-AzureNativeTypeWebFrontEndConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        $kind
    )

    process
    {
        return $([FrontEndConfiguration]$PSBoundParameters)
    }
}
class ArcConfiguration
{
    [string] $artifactStorageClassName
    [string] $artifactStorageNodeName
    [string] $kubeConfig
    [string] $artifactStorageAccessMode
    [ArgumentCompletions('LocalNode', 'NetworkFileSystem')]
    [object] $artifactsStorageType
    [FrontEndConfiguration] $frontEndServiceConfiguration
    [string] $artifactStorageMountPath
}
function New-AzureNativeTypeWebArcConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $artifactStorageClassName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $artifactStorageNodeName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $kubeConfig,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $artifactStorageAccessMode,
        [parameter(mandatory=$False,HelpMessage=')')]
        $artifactsStorageType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [FrontEndConfiguration]
        $frontEndServiceConfiguration,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $artifactStorageMountPath
    )

    process
    {
        return $([ArcConfiguration]$PSBoundParameters)
    }
}
function New-AzureNativeWebKubeEnvironment
{
    [Alias('azure_native_web_kubeenvironment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $aksResourceID,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Extended Location.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Kubernetes Environment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Cluster configuration which enables the log daemon to export
app logs to a destination. Currently only "log-analytics" is
supported)'
)]
        [AppLogsConfiguration]
        $appLogsConfiguration,
        [parameter(mandatory=$False,HelpMessage='Static IP of the KubeEnvironment)')]
        [string]
        $staticIp,
        [parameter(mandatory=$False,HelpMessage='Cluster configuration which determines the ARC cluster
components types. Eg: Choosing between BuildService kind,
FrontEnd Service ArtifactsStorageType etc.)'
)]
        [ArcConfiguration]
        $arcConfiguration,
        [parameter(mandatory=$False,HelpMessage='Only visible within Vnet/Subnet)')]
        [bool]
        $internalLoadBalancerEnabled,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkConnectionState
{
    [string] $description
    [string] $status
    [string] $actionsRequired
}
function New-AzureNativeTypeWebPrivateLinkConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='Description of a private link connection)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Status of a private link connection)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='ActionsRequired for a private link connection)')]
        [string]
        $actionsRequired
    )

    process
    {
        return $([PrivateLinkConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeWebWebAppPrivateEndpointConnection
{
    [Alias('azure_native_web_webappprivateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The state of a private link connection)')]
        [PrivateLinkConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppVnetConnectionSlot
{
    [Alias('azure_native_web_webappvnetconnectionslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Virtual Network''s resource ID.)')]
        [string]
        $vnetResourceId,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Flag that is used to denote if this is VNET injection)')]
        [bool]
        $isSwift,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will add or update connections for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='A certificate file (.cer) blob containing the public key of the private key used to authenticate a
Point-To-Site VPN connection.)'
)]
        [string]
        $certBlob,
        [parameter(mandatory=$False,HelpMessage='DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.)')]
        [string]
        $dnsServers,
        [parameter(mandatory=$False,HelpMessage='Name of an existing Virtual Network.)')]
        [string]
        $vnetName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ConnStringInfo
{
    [string] $name
    [string] $connectionString
    [ArgumentCompletions('MySql', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'ApiHub', 'DocDb', 'RedisCache', 'PostgreSQL')]
    [object] $type
}
function New-AzureNativeTypeWebConnStringInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of connection string.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Connection string value.)')]
        [string]
        $connectionString,
        [parameter(mandatory=$False,HelpMessage='Type of database.)')]
        $type
    )

    process
    {
        return $([ConnStringInfo]$PSBoundParameters)
    }
}
class ApiManagementConfig
{
    [string] $id
}
function New-AzureNativeTypeWebApiManagementConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='APIM-Api Identifier.)')]
        [string]
        $id
    )

    process
    {
        return $([ApiManagementConfig]$PSBoundParameters)
    }
}
class IpSecurityRestriction
{
    [string] $action
    [int] $vnetTrafficTag
    [ArgumentCompletions('Default', 'XffProxy', 'ServiceTag')]
    [string] $tag
    [string] $ipAddress
    [string] $description
    [string] $name
    [string] $vnetSubnetResourceId
    [int] $subnetTrafficTag
    [object] $headers
    [string] $subnetMask
    [int] $priority
}
function New-AzureNativeTypeWebIpSecurityRestriction
{
    param (
        [parameter(mandatory=$False,HelpMessage='Allow or Deny access for this IP range.)')]
        [string]
        $action,
        [parameter(mandatory=$False,HelpMessage='(internal) Vnet traffic tag)')]
        [int]
        $vnetTrafficTag,
        [parameter(mandatory=$False,HelpMessage='Defines what this IP filter will be used for. This is to support IP filtering on proxies.)')]
        [string]
        [ArgumentCompletions('Default', 'XffProxy', 'ServiceTag')]
        $tag,
        [parameter(mandatory=$False,HelpMessage='IP address the security restriction is valid for.
It can be in form of pure ipv4 address (required SubnetMask property) or
CIDR notation such as ipv4/mask (leading bit match). For CIDR,
SubnetMask property must not be specified.)'
)]
        [string]
        $ipAddress,
        [parameter(mandatory=$False,HelpMessage='IP restriction rule description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='IP restriction rule name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Virtual network resource id)')]
        [string]
        $vnetSubnetResourceId,
        [parameter(mandatory=$False,HelpMessage='(internal) Subnet traffic tag)')]
        [int]
        $subnetTrafficTag,
        [parameter(mandatory=$False,HelpMessage='IP restriction rule headers.
X-Forwarded-Host (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples).
The matching logic is ..
- If the property is null or empty (default), all hosts(or lack of) are allowed.
- A value is compared using ordinal-ignore-case (excluding port number).
- Subdomain wildcards are permitted but don''t match the root domain. For example, *.contoso.com matches the subdomain foo.contoso.com
 but not the root domain contoso.com or multi-level foo.bar.contoso.com
- Unicode host names are allowed but are converted to Punycode for matching.

X-Forwarded-For (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples).
The matching logic is ..
- If the property is null or empty (default), any forwarded-for chains (or lack of) are allowed.
- If any address (excluding port number) in the chain (comma separated) matches the CIDR defined by the property.

X-Azure-FDID and X-FD-HealthProbe.
The matching logic is exact match.)'
)]
        [object]
        $headers,
        [parameter(mandatory=$False,HelpMessage='Subnet mask for the range of IP addresses the restriction is valid for.)')]
        [string]
        $subnetMask,
        [parameter(mandatory=$False,HelpMessage='Priority of IP restriction rule.)')]
        [int]
        $priority
    )

    process
    {
        return $([IpSecurityRestriction]$PSBoundParameters)
    }
}
class SiteLimits
{
    [int] $maxDiskSizeInMb
    [int] $maxPercentageCpu
    [int] $maxMemoryInMb
}
function New-AzureNativeTypeWebSiteLimits
{
    param (
        [parameter(mandatory=$False,HelpMessage='Maximum allowed disk size usage in MB.)')]
        [int]
        $maxDiskSizeInMb,
        [parameter(mandatory=$False,HelpMessage='Maximum allowed CPU usage percentage.)')]
        [int]
        $maxPercentageCpu,
        [parameter(mandatory=$False,HelpMessage='Maximum allowed memory usage in MB.)')]
        [int]
        $maxMemoryInMb
    )

    process
    {
        return $([SiteLimits]$PSBoundParameters)
    }
}
class CorsSettings
{
    [bool] $supportCredentials
    [string[]] $allowedOrigins
}
function New-AzureNativeTypeWebCorsSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets whether CORS requests with credentials are allowed. See
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
for more details.)'
)]
        [bool]
        $supportCredentials,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the list of origins that should be allowed to make cross-origin
calls (for example: http://example.com:12345). Use "*" to allow all.)'
)]
        [string[]]
        $allowedOrigins
    )

    process
    {
        return $([CorsSettings]$PSBoundParameters)
    }
}
class NameValuePair
{
    [string] $name
    [string] $value
}
function New-AzureNativeTypeWebNameValuePair
{
    param (
        [parameter(mandatory=$False,HelpMessage='Pair name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Pair value.)')]
        [string]
        $value
    )

    process
    {
        return $([NameValuePair]$PSBoundParameters)
    }
}
class RampUpRule
{
    [string] $actionHostName
    [int] $changeStep
    [int] $minReroutePercentage
    [string] $changeDecisionCallbackUrl
    [int] $changeIntervalInMinutes
    [int] $reroutePercentage
    [string] $name
    [int] $maxReroutePercentage
}
function New-AzureNativeTypeWebRampUpRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.)')]
        [string]
        $actionHostName,
        [parameter(mandatory=$False,HelpMessage='In auto ramp up scenario this is the step to add/remove from <code>ReroutePercentage</code> until it reaches \n<code>MinReroutePercentage</code> or
<code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.)'
)]
        [int]
        $changeStep,
        [parameter(mandatory=$False,HelpMessage='Specifies lower boundary above which ReroutePercentage will stay.)')]
        [int]
        $minReroutePercentage,
        [parameter(mandatory=$False,HelpMessage='Custom decision algorithm can be provided in TiPCallback site extension which URL can be specified. See TiPCallback site extension for the scaffold and contracts.
https://www.siteextensions.net/packages/TiPCallback/)'
)]
        [string]
        $changeDecisionCallbackUrl,
        [parameter(mandatory=$False,HelpMessage='Specifies interval in minutes to reevaluate ReroutePercentage.)')]
        [int]
        $changeIntervalInMinutes,
        [parameter(mandatory=$False,HelpMessage='Percentage of the traffic which will be redirected to <code>ActionHostName</code>.)')]
        [int]
        $reroutePercentage,
        [parameter(mandatory=$False,HelpMessage='Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Specifies upper boundary below which ReroutePercentage will stay.)')]
        [int]
        $maxReroutePercentage
    )

    process
    {
        return $([RampUpRule]$PSBoundParameters)
    }
}
class Experiments
{
    [RampUpRule[]] $rampUpRules
}
function New-AzureNativeTypeWebExperiments
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of ramp-up rules.)')]
        $rampUpRules
    )

    process
    {
        return $([Experiments]$PSBoundParameters)
    }
}
class VirtualDirectory
{
    [string] $physicalPath
    [string] $virtualPath
}
function New-AzureNativeTypeWebVirtualDirectory
{
    param (
        [parameter(mandatory=$False,HelpMessage='Physical path.)')]
        [string]
        $physicalPath,
        [parameter(mandatory=$False,HelpMessage='Path to virtual application.)')]
        [string]
        $virtualPath
    )

    process
    {
        return $([VirtualDirectory]$PSBoundParameters)
    }
}
class VirtualApplication
{
    [bool] $preloadEnabled
    [VirtualDirectory[]] $virtualDirectories
    [string] $physicalPath
    [string] $virtualPath
}
function New-AzureNativeTypeWebVirtualApplication
{
    param (
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if preloading is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $preloadEnabled,
        [parameter(mandatory=$False,HelpMessage='Virtual directories for virtual application.)')]
        $virtualDirectories,
        [parameter(mandatory=$False,HelpMessage='Physical path.)')]
        [string]
        $physicalPath,
        [parameter(mandatory=$False,HelpMessage='Virtual path.)')]
        [string]
        $virtualPath
    )

    process
    {
        return $([VirtualApplication]$PSBoundParameters)
    }
}
class HandlerMapping
{
    [string] $scriptProcessor
    [string] $arguments
    [string] $extension
}
function New-AzureNativeTypeWebHandlerMapping
{
    param (
        [parameter(mandatory=$False,HelpMessage='The absolute path to the FastCGI application.)')]
        [string]
        $scriptProcessor,
        [parameter(mandatory=$False,HelpMessage='Command-line arguments to be passed to the script processor.)')]
        [string]
        $arguments,
        [parameter(mandatory=$False,HelpMessage='Requests with this extension will be handled using the specified FastCGI application.)')]
        [string]
        $extension
    )

    process
    {
        return $([HandlerMapping]$PSBoundParameters)
    }
}
class SlowRequestsBasedTrigger
{
    [string] $timeInterval
    [string] $timeTaken
    [string] $path
    [int] $count
}
function New-AzureNativeTypeWebSlowRequestsBasedTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='Time interval.)')]
        [string]
        $timeInterval,
        [parameter(mandatory=$False,HelpMessage='Time taken.)')]
        [string]
        $timeTaken,
        [parameter(mandatory=$False,HelpMessage='Request Path.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='Request Count.)')]
        [int]
        $count
    )

    process
    {
        return $([SlowRequestsBasedTrigger]$PSBoundParameters)
    }
}
class StatusCodesBasedTrigger
{
    [int] $subStatus
    [string] $timeInterval
    [int] $status
    [int] $win32Status
    [int] $count
    [string] $path
}
function New-AzureNativeTypeWebStatusCodesBasedTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='Request Sub Status.)')]
        [int]
        $subStatus,
        [parameter(mandatory=$False,HelpMessage='Time interval.)')]
        [string]
        $timeInterval,
        [parameter(mandatory=$False,HelpMessage='HTTP status code.)')]
        [int]
        $status,
        [parameter(mandatory=$False,HelpMessage='Win32 error code.)')]
        [int]
        $win32Status,
        [parameter(mandatory=$False,HelpMessage='Request Count.)')]
        [int]
        $count,
        [parameter(mandatory=$False,HelpMessage='Request Path)')]
        [string]
        $path
    )

    process
    {
        return $([StatusCodesBasedTrigger]$PSBoundParameters)
    }
}
class RequestsBasedTrigger
{
    [string] $timeInterval
    [int] $count
}
function New-AzureNativeTypeWebRequestsBasedTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='Time interval.)')]
        [string]
        $timeInterval,
        [parameter(mandatory=$False,HelpMessage='Request Count.)')]
        [int]
        $count
    )

    process
    {
        return $([RequestsBasedTrigger]$PSBoundParameters)
    }
}
class StatusCodesRangeBasedTrigger
{
    [string] $timeInterval
    [string] $statusCodes
    [string] $path
    [int] $count
}
function New-AzureNativeTypeWebStatusCodesRangeBasedTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='Time interval.)')]
        [string]
        $timeInterval,
        [parameter(mandatory=$False,HelpMessage='HTTP status code.)')]
        [string]
        $statusCodes,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='Request Count.)')]
        [int]
        $count
    )

    process
    {
        return $([StatusCodesRangeBasedTrigger]$PSBoundParameters)
    }
}
class AutoHealTriggers
{
    [SlowRequestsBasedTrigger[]] $slowRequestsWithPath
    [StatusCodesBasedTrigger[]] $statusCodes
    [int] $privateBytesInKB
    [RequestsBasedTrigger] $requests
    [StatusCodesRangeBasedTrigger[]] $statusCodesRange
    [SlowRequestsBasedTrigger] $slowRequests
}
function New-AzureNativeTypeWebAutoHealTriggers
{
    param (
        [parameter(mandatory=$False,HelpMessage='A rule based on multiple Slow Requests Rule with path)')]
        $slowRequestsWithPath,
        [parameter(mandatory=$False,HelpMessage='A rule based on status codes.)')]
        $statusCodes,
        [parameter(mandatory=$False,HelpMessage='A rule based on private bytes.)')]
        [int]
        $privateBytesInKB,
        [parameter(mandatory=$False,HelpMessage='A rule based on total requests.)')]
        [RequestsBasedTrigger]
        $requests,
        [parameter(mandatory=$False,HelpMessage='A rule based on status codes ranges.)')]
        $statusCodesRange,
        [parameter(mandatory=$False,HelpMessage='A rule based on request execution time.)')]
        [SlowRequestsBasedTrigger]
        $slowRequests
    )

    process
    {
        return $([AutoHealTriggers]$PSBoundParameters)
    }
}
class AutoHealCustomAction
{
    [string] $exe
    [string] $parameters
}
function New-AzureNativeTypeWebAutoHealCustomAction
{
    param (
        [parameter(mandatory=$False,HelpMessage='Executable to be run.)')]
        [string]
        $exe,
        [parameter(mandatory=$False,HelpMessage='Parameters for the executable.)')]
        [string]
        $parameters
    )

    process
    {
        return $([AutoHealCustomAction]$PSBoundParameters)
    }
}
class AutoHealActions
{
    [AutoHealCustomAction] $customAction
    [ArgumentCompletions('Recycle', 'LogEvent', 'CustomAction')]
    [object] $actionType
    [string] $minProcessExecutionTime
}
function New-AzureNativeTypeWebAutoHealActions
{
    param (
        [parameter(mandatory=$False,HelpMessage='Custom action to be taken.)')]
        [AutoHealCustomAction]
        $customAction,
        [parameter(mandatory=$False,HelpMessage='Predefined action to be taken.)')]
        $actionType,
        [parameter(mandatory=$False,HelpMessage='Minimum time the process must execute
before taking the action)'
)]
        [string]
        $minProcessExecutionTime
    )

    process
    {
        return $([AutoHealActions]$PSBoundParameters)
    }
}
class AutoHealRules
{
    [AutoHealTriggers] $triggers
    [AutoHealActions] $actions
}
function New-AzureNativeTypeWebAutoHealRules
{
    param (
        [parameter(mandatory=$False,HelpMessage='Conditions that describe when to execute the auto-heal actions.)')]
        [AutoHealTriggers]
        $triggers,
        [parameter(mandatory=$False,HelpMessage='Actions to be executed when a rule is triggered.)')]
        [AutoHealActions]
        $actions
    )

    process
    {
        return $([AutoHealRules]$PSBoundParameters)
    }
}
class PushSettings
{
    [bool] $isPushEnabled
    [string] $kind
    [string] $tagsRequiringAuth
    [string] $dynamicTagsJson
    [string] $tagWhitelistJson
}
function New-AzureNativeTypeWebPushSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets a flag indicating whether the Push endpoint is enabled.)')]
        [bool]
        $isPushEnabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
Tags can consist of alphanumeric characters and the following:
''_'', ''@'', ''#'', ''.'', '':'', ''-''.
Validation should be performed at the PushRequestHandler.)'
)]
        [string]
        $tagsRequiringAuth,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of dynamic tags that will be evaluated from user claims in the push registration endpoint.)')]
        [string]
        $dynamicTagsJson,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.)')]
        [string]
        $tagWhitelistJson
    )

    process
    {
        return $([PushSettings]$PSBoundParameters)
    }
}
class ApiDefinitionInfo
{
    [string] $url
}
function New-AzureNativeTypeWebApiDefinitionInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='The URL of the API definition.)')]
        [string]
        $url
    )

    process
    {
        return $([ApiDefinitionInfo]$PSBoundParameters)
    }
}
class SiteConfig
{
    [ArgumentCompletions('1.0', '1.1', '1.2')]
    [string] $minTlsVersion
    [bool] $acrUseManagedIdentityCreds
    [bool] $httpLoggingEnabled
    [string] $requestTracingExpirationTime
    [string] $javaContainerVersion
    [string] $healthCheckPath
    [int] $vnetPrivatePortsCount
    [string] $javaContainer
    [bool] $autoHealEnabled
    [ConnStringInfo[]] $connectionStrings
    [bool] $scmIpSecurityRestrictionsUseMain
    [ApiManagementConfig] $apiManagementConfig
    [ArgumentCompletions('WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash', 'PerSiteRoundRobin')]
    [object] $loadBalancing
    [bool] $remoteDebuggingEnabled
    [bool] $alwaysOn
    [bool] $webSocketsEnabled
    [IpSecurityRestriction[]] $ipSecurityRestrictions
    [string] $remoteDebuggingVersion
    [string] $linuxFxVersion
    [bool] $vnetRouteAllEnabled
    [bool] $localMySqlEnabled
    [string] $vnetName
    [int] $logsDirectorySizeLimit
    [string] $acrUserManagedIdentityID
    [string] $javaVersion
    [int] $preWarmedInstanceCount
    [SiteLimits] $limits
    [bool] $requestTracingEnabled
    [bool] $use32BitWorkerProcess
    [ArgumentCompletions('AllAllowed', 'FtpsOnly', 'Disabled')]
    [string] $ftpsState
    [int] $numberOfWorkers
    [object] $azureStorageAccounts
    [CorsSettings] $cors
    [string] $keyVaultReferenceIdentity
    [string] $powerShellVersion
    [string] $nodeVersion
    [string] $websiteTimeZone
    [IpSecurityRestriction[]] $scmIpSecurityRestrictions
    [NameValuePair[]] $appSettings
    [string] $phpVersion
    [int] $xManagedServiceIdentityId
    [ArgumentCompletions('1.0', '1.1', '1.2')]
    [string] $scmMinTlsVersion
    [bool] $detailedErrorLoggingEnabled
    [string] $netFrameworkVersion
    [Experiments] $experiments
    [string] $tracingOptions
    [bool] $functionsRuntimeScaleMonitoringEnabled
    [string] $autoSwapSlotName
    [bool] $http20Enabled
    [string] $documentRoot
    [int] $managedServiceIdentityId
    [string] $publicNetworkAccess
    [string] $pythonVersion
    [string] $publishingUsername
    [string[]] $defaultDocuments
    [ArgumentCompletions('None', 'Dropbox', 'Tfs', 'LocalGit', 'GitHub', 'CodePlexGit', 'CodePlexHg', 'BitbucketGit', 'BitbucketHg', 'ExternalGit', 'ExternalHg', 'OneDrive', 'VSO', 'VSTSRM')]
    [string] $scmType
    [VirtualApplication[]] $virtualApplications
    [ArgumentCompletions('Integrated', 'Classic')]
    [object] $managedPipelineMode
    [string] $windowsFxVersion
    [int] $minimumElasticInstanceCount
    [HandlerMapping[]] $handlerMappings
    [AutoHealRules] $autoHealRules
    [PushSettings] $push
    [int] $functionAppScaleLimit
    [string] $appCommandLine
    [ApiDefinitionInfo] $apiDefinition
}
class AzureStorageInfoValue
{
    [string] $accountName
    [string] $accessKey
    [string] $shareName
    [string] $mountPath
    [ArgumentCompletions('AzureFiles', 'AzureBlob')]
    [object] $type
}
function New-AzureNativeTypeWebAzureStorageInfoValue
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the storage account.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='Access key for the storage account.)')]
        [string]
        $accessKey,
        [parameter(mandatory=$False,HelpMessage='Name of the file share (container name, for Blob storage).)')]
        [string]
        $shareName,
        [parameter(mandatory=$False,HelpMessage='Path to mount the storage within the site''s runtime environment.)')]
        [string]
        $mountPath,
        [parameter(mandatory=$False,HelpMessage='Type of storage.)')]
        $type
    )

    process
    {
        return $([AzureStorageInfoValue]$PSBoundParameters)
    }
}
function New-AzureNativeTypeWebSiteConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='MinTlsVersion: configures the minimum version of TLS required for SSL requests)')]
        [string]
        [ArgumentCompletions('1.0', '1.1', '1.2')]
        $minTlsVersion,
        [parameter(mandatory=$False,HelpMessage='Flag to use Managed Identity Creds for ACR pull)')]
        [bool]
        $acrUseManagedIdentityCreds,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $httpLoggingEnabled,
        [parameter(mandatory=$False,HelpMessage='Request tracing expiration time.)')]
        [string]
        $requestTracingExpirationTime,
        [parameter(mandatory=$False,HelpMessage='Java container version.)')]
        [string]
        $javaContainerVersion,
        [parameter(mandatory=$False,HelpMessage='Health check path)')]
        [string]
        $healthCheckPath,
        [parameter(mandatory=$False,HelpMessage='The number of private ports assigned to this app. These will be assigned dynamically on runtime.)')]
        [int]
        $vnetPrivatePortsCount,
        [parameter(mandatory=$False,HelpMessage='Java container.)')]
        [string]
        $javaContainer,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $autoHealEnabled,
        [parameter(mandatory=$False,HelpMessage='Connection strings.)')]
        $connectionStrings,
        [parameter(mandatory=$False,HelpMessage='IP security restrictions for scm to use main.)')]
        [bool]
        $scmIpSecurityRestrictionsUseMain,
        [parameter(mandatory=$False,HelpMessage='Azure API management settings linked to the app.)')]
        [ApiManagementConfig]
        $apiManagementConfig,
        [parameter(mandatory=$False,HelpMessage='Site load balancing.)')]
        $loadBalancing,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $remoteDebuggingEnabled,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if Always On is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $alwaysOn,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $webSocketsEnabled,
        [parameter(mandatory=$False,HelpMessage='IP security restrictions for main.)')]
        $ipSecurityRestrictions,
        [parameter(mandatory=$False,HelpMessage='Remote debugging version.)')]
        [string]
        $remoteDebuggingVersion,
        [parameter(mandatory=$False,HelpMessage='Linux App Framework and version)')]
        [string]
        $linuxFxVersion,
        [parameter(mandatory=$False,HelpMessage='Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.)')]
        [bool]
        $vnetRouteAllEnabled,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to enable local MySQL; otherwise, <code>false</code>.)')]
        [bool]
        $localMySqlEnabled,
        [parameter(mandatory=$False,HelpMessage='Virtual Network name.)')]
        [string]
        $vnetName,
        [parameter(mandatory=$False,HelpMessage='HTTP logs directory size limit.)')]
        [int]
        $logsDirectorySizeLimit,
        [parameter(mandatory=$False,HelpMessage='If using user managed identity, the user managed identity ClientId)')]
        [string]
        $acrUserManagedIdentityID,
        [parameter(mandatory=$False,HelpMessage='Java version.)')]
        [string]
        $javaVersion,
        [parameter(mandatory=$False,HelpMessage='Number of preWarmed instances.
This setting only applies to the Consumption and Elastic Plans)'
)]
        [int]
        $preWarmedInstanceCount,
        [parameter(mandatory=$False,HelpMessage='Site limits.)')]
        [SiteLimits]
        $limits,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if request tracing is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $requestTracingEnabled,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.)')]
        [bool]
        $use32BitWorkerProcess,
        [parameter(mandatory=$False,HelpMessage='State of FTP / FTPS service)')]
        [string]
        [ArgumentCompletions('AllAllowed', 'FtpsOnly', 'Disabled')]
        $ftpsState,
        [parameter(mandatory=$False,HelpMessage='Number of workers.)')]
        [int]
        $numberOfWorkers,
        [parameter(mandatory=$False,HelpMessage='List of Azure Storage Accounts.)')]
        [AzureStorageInfoValue]
        $azureStorageAccounts,
        [parameter(mandatory=$False,HelpMessage='Cross-Origin Resource Sharing (CORS) settings.)')]
        [CorsSettings]
        $cors,
        [parameter(mandatory=$False,HelpMessage='Identity to use for Key Vault Reference authentication.)')]
        [string]
        $keyVaultReferenceIdentity,
        [parameter(mandatory=$False,HelpMessage='Version of PowerShell.)')]
        [string]
        $powerShellVersion,
        [parameter(mandatory=$False,HelpMessage='Version of Node.js.)')]
        [string]
        $nodeVersion,
        [parameter(mandatory=$False,HelpMessage='Sets the time zone a site uses for generating timestamps. Compatible with Linux and Windows App Service. Setting the WEBSITE_TIME_ZONE app setting takes precedence over this config. For Linux, expects tz database values https://www.iana.org/time-zones (for a quick reference see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For Windows, expects one of the time zones listed under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones)')]
        [string]
        $websiteTimeZone,
        [parameter(mandatory=$False,HelpMessage='IP security restrictions for scm.)')]
        $scmIpSecurityRestrictions,
        [parameter(mandatory=$False,HelpMessage='Application settings.)')]
        $appSettings,
        [parameter(mandatory=$False,HelpMessage='Version of PHP.)')]
        [string]
        $phpVersion,
        [parameter(mandatory=$False,HelpMessage='Explicit Managed Service Identity Id)')]
        [int]
        $xManagedServiceIdentityId,
        [parameter(mandatory=$False,HelpMessage='ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site)')]
        [string]
        [ArgumentCompletions('1.0', '1.1', '1.2')]
        $scmMinTlsVersion,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.)')]
        [bool]
        $detailedErrorLoggingEnabled,
        [parameter(mandatory=$False,HelpMessage='.NET Framework version.)')]
        [string]
        $netFrameworkVersion,
        [parameter(mandatory=$False,HelpMessage='This is work around for polymorphic types.)')]
        [Experiments]
        $experiments,
        [parameter(mandatory=$False,HelpMessage='Tracing options.)')]
        [string]
        $tracingOptions,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a value indicating whether functions runtime scale monitoring is enabled. When enabled,
the ScaleController will not monitor event sources directly, but will instead call to the
runtime to get scale status.)'
)]
        [bool]
        $functionsRuntimeScaleMonitoringEnabled,
        [parameter(mandatory=$False,HelpMessage='Auto-swap slot name.)')]
        [string]
        $autoSwapSlotName,
        [parameter(mandatory=$False,HelpMessage='Http20Enabled: configures a web site to allow clients to connect over http2.0)')]
        [bool]
        $http20Enabled,
        [parameter(mandatory=$False,HelpMessage='Document root.)')]
        [string]
        $documentRoot,
        [parameter(mandatory=$False,HelpMessage='Managed Service Identity Id)')]
        [int]
        $managedServiceIdentityId,
        [parameter(mandatory=$False,HelpMessage='Property to allow or block all public traffic.)')]
        [string]
        $publicNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='Version of Python.)')]
        [string]
        $pythonVersion,
        [parameter(mandatory=$False,HelpMessage='Publishing user name.)')]
        [string]
        $publishingUsername,
        [parameter(mandatory=$False,HelpMessage='Default documents.)')]
        [string[]]
        $defaultDocuments,
        [parameter(mandatory=$False,HelpMessage='SCM type.)')]
        [string]
        [ArgumentCompletions('None', 'Dropbox', 'Tfs', 'LocalGit', 'GitHub', 'CodePlexGit', 'CodePlexHg', 'BitbucketGit', 'BitbucketHg', 'ExternalGit', 'ExternalHg', 'OneDrive', 'VSO', 'VSTSRM')]
        $scmType,
        [parameter(mandatory=$False,HelpMessage='Virtual applications.)')]
        $virtualApplications,
        [parameter(mandatory=$False,HelpMessage='Managed pipeline mode.)')]
        $managedPipelineMode,
        [parameter(mandatory=$False,HelpMessage='Xenon App Framework and version)')]
        [string]
        $windowsFxVersion,
        [parameter(mandatory=$False,HelpMessage='Number of minimum instance count for a site
This setting only applies to the Elastic Plans)'
)]
        [int]
        $minimumElasticInstanceCount,
        [parameter(mandatory=$False,HelpMessage='Handler mappings.)')]
        $handlerMappings,
        [parameter(mandatory=$False,HelpMessage='Auto Heal rules.)')]
        [AutoHealRules]
        $autoHealRules,
        [parameter(mandatory=$False,HelpMessage='Push endpoint settings.)')]
        [PushSettings]
        $push,
        [parameter(mandatory=$False,HelpMessage='Maximum number of workers that a site can scale out to.
This setting only applies to the Consumption and Elastic Premium Plans)'
)]
        [int]
        $functionAppScaleLimit,
        [parameter(mandatory=$False,HelpMessage='App command line to launch.)')]
        [string]
        $appCommandLine,
        [parameter(mandatory=$False,HelpMessage='Information about the formal API definition for the app.)')]
        [ApiDefinitionInfo]
        $apiDefinition
    )

    process
    {
        return $([SiteConfig]$PSBoundParameters)
    }
}
class ManagedServiceIdentity
{
    [ArgumentCompletions('SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None')]
    [object] $type
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeWebManagedServiceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of managed service identity.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The list of user assigned identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName})')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([ManagedServiceIdentity]$PSBoundParameters)
    }
}
class CloningInfo
{
    [string] $hostingEnvironment
    [string] $correlationId
    [bool] $cloneSourceControl
    [bool] $configureLoadBalancing
    [string] $sourceWebAppLocation
    [string] $trafficManagerProfileName
    [string] $sourceWebAppId
    [bool] $cloneCustomHostNames
    [bool] $overwrite
    [string] $trafficManagerProfileId
    [object] $appSettingsOverrides
}
function New-AzureNativeTypeWebCloningInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='App Service Environment.)')]
        [string]
        $hostingEnvironment,
        [parameter(mandatory=$False,HelpMessage='Correlation ID of cloning operation. This ID ties multiple cloning operations
together to use the same snapshot.)'
)]
        [string]
        $correlationId,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to clone source control from source app; otherwise, <code>false</code>.)')]
        [bool]
        $cloneSourceControl,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to configure load balancing for source and destination app.)')]
        [bool]
        $configureLoadBalancing,
        [parameter(mandatory=$False,HelpMessage='Location of source app ex: West US or North Europe)')]
        [string]
        $sourceWebAppLocation,
        [parameter(mandatory=$False,HelpMessage='Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.)')]
        [string]
        $trafficManagerProfileName,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the source app. App resource ID is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.)'
)]
        [string]
        $sourceWebAppId,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.)')]
        [bool]
        $cloneCustomHostNames,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to overwrite destination app; otherwise, <code>false</code>.)')]
        [bool]
        $overwrite,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.)'
)]
        [string]
        $trafficManagerProfileId,
        [parameter(mandatory=$False,HelpMessage='Application setting overrides for cloned app. If specified, these settings override the settings cloned
from source app. Otherwise, application settings from source app are retained.)'
)]
        [hashtable]
        $appSettingsOverrides
    )

    process
    {
        return $([CloningInfo]$PSBoundParameters)
    }
}
function New-AzureNativeWebWebAppSlot
{
    [Alias('azure_native_web_webappslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName})'
)]
        [string]
        $virtualNetworkSubnetId,
        [parameter(mandatory=$False,HelpMessage='client certificate authentication comma-separated exclusion paths)')]
        [string]
        $clientCertExclusionPaths,
        [parameter(mandatory=$False,HelpMessage='Hyper-V sandbox.)')]
        [bool]
        $hyperV,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Site redundancy mode)')]
        $redundancyMode,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot to create or update. The name ''production'' is reserved.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Size of the function container.)')]
        [int]
        $containerSize,
        [parameter(mandatory=$False,HelpMessage='App Service Environment to use for the app.)')]
        [HostingEnvironmentProfile]
        $hostingEnvironmentProfile,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.)')]
        [bool]
        $scmSiteAlsoStopped,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if reserved; otherwise, <code>false</code>.)')]
        [bool]
        $reserved,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
 If <code>true</code>, the app is only accessible via API management process.)'
)]
        [bool]
        $hostNamesDisabled,
        [parameter(mandatory=$False,HelpMessage='Obsolete: Hyper-V sandbox.)')]
        [bool]
        $isXenon,
        [parameter(mandatory=$False,HelpMessage='HttpsOnly: configures a web site to accept only https requests. Issues redirect for
http requests)'
)]
        [bool]
        $httpsOnly,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.)')]
        [bool]
        $clientCertEnabled,
        [parameter(mandatory=$False,HelpMessage='Configuration of the app.)')]
        [SiteConfig]
        $siteConfig,
        [parameter(mandatory=$False,HelpMessage='Managed service identity.)')]
        [ManagedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Maximum allowed daily memory-time quota (applicable on dynamic apps only).)')]
        [int]
        $dailyMemoryTimeQuota,
        [parameter(mandatory=$False,HelpMessage='Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".)')]
        [string]
        $serverFarmId,
        [parameter(mandatory=$False,HelpMessage='Checks if Customer provided storage account is required)')]
        [bool]
        $storageAccountRequired,
        [parameter(mandatory=$False,HelpMessage='If specified during app creation, the app is cloned from a source app.)')]
        [CloningInfo]
        $cloningInfo,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to enable client affinity; <code>false</code> to stop sending session affinity cookies, which route client requests in the same session to the same instance. Default is <code>true</code>.)')]
        [bool]
        $clientAffinityEnabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Identity to use for Key Vault Reference authentication.)')]
        [string]
        $keyVaultReferenceIdentity,
        [parameter(mandatory=$False,HelpMessage='Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.)')]
        [string]
        $customDomainVerificationId,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting this value to false disables the app (takes the app offline).)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='This composes with ClientCertEnabled setting.
- ClientCertEnabled: false means ClientCert is ignored.
- ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
- ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted.)'
)]
        $clientCertMode,
        [parameter(mandatory=$False,HelpMessage='Hostname SSL states are used to manage the SSL bindings for app''s hostnames.)')]
        $hostNameSslStates,
        [parameter(mandatory=$False,HelpMessage='Unique name of the app to create or update. To create or update a deployment slot, use the {slot} parameter.)')]
        [string]
        $name,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppBackupConfigurationSlot
{
    [Alias('azure_native_web_webappbackupconfigurationslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the backup configuration for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='SAS URL to the container.)')]
        [string]
        $storageAccountUrl,
        [parameter(mandatory=$False,HelpMessage='Databases included in the backup.)')]
        $databases,
        [parameter(mandatory=$False,HelpMessage='Schedule for the backup if it is executed periodically.)')]
        [BackupSchedule]
        $backupSchedule,
        [parameter(mandatory=$False,HelpMessage='Name of the backup.)')]
        [string]
        $backupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot
        $resource.properties["storageAccountUrl"] = $storageAccountUrl

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppAzureStorageAccountsSlot
{
    [Alias('azure_native_web_webappazurestorageaccountsslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the Azure storage account configurations for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Azure storage accounts.)')]
        [AzureStorageInfoValue]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class FileSystemHttpLogsConfig
{
    [int] $retentionInDays
    [bool] $enabled
    [int] $retentionInMb
}
function New-AzureNativeTypeWebFileSystemHttpLogsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Retention in days.
Remove files older than X days.
0 or lower means no retention.)'
)]
        [int]
        $retentionInDays,
        [parameter(mandatory=$False,HelpMessage='True if configuration is enabled, false if it is disabled and null if configuration is not set.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='Maximum size in megabytes that http log files can use.
When reached old log files will be removed to make space for new ones.
Value can range between 25 and 100.)'
)]
        [int]
        $retentionInMb
    )

    process
    {
        return $([FileSystemHttpLogsConfig]$PSBoundParameters)
    }
}
class AzureBlobStorageHttpLogsConfig
{
    [int] $retentionInDays
    [bool] $enabled
    [string] $sasUrl
}
function New-AzureNativeTypeWebAzureBlobStorageHttpLogsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Retention in days.
Remove blobs older than X days.
0 or lower means no retention.)'
)]
        [int]
        $retentionInDays,
        [parameter(mandatory=$False,HelpMessage='True if configuration is enabled, false if it is disabled and null if configuration is not set.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='SAS url to a azure blob container with read/write/list/delete permissions.)')]
        [string]
        $sasUrl
    )

    process
    {
        return $([AzureBlobStorageHttpLogsConfig]$PSBoundParameters)
    }
}
class HttpLogsConfig
{
    [FileSystemHttpLogsConfig] $fileSystem
    [AzureBlobStorageHttpLogsConfig] $azureBlobStorage
}
function New-AzureNativeTypeWebHttpLogsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Http logs to file system configuration.)')]
        [FileSystemHttpLogsConfig]
        $fileSystem,
        [parameter(mandatory=$False,HelpMessage='Http logs to azure blob storage configuration.)')]
        [AzureBlobStorageHttpLogsConfig]
        $azureBlobStorage
    )

    process
    {
        return $([HttpLogsConfig]$PSBoundParameters)
    }
}
class EnabledConfig
{
    [bool] $enabled
}
function New-AzureNativeTypeWebEnabledConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='True if configuration is enabled, false if it is disabled and null if configuration is not set.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([EnabledConfig]$PSBoundParameters)
    }
}
class AzureBlobStorageApplicationLogsConfig
{
    [string] $sasUrl
    [int] $retentionInDays
    [ArgumentCompletions('Off', 'Verbose', 'Information', 'Warning', 'Error')]
    [object] $level
}
function New-AzureNativeTypeWebAzureBlobStorageApplicationLogsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='SAS url to a azure blob container with read/write/list/delete permissions.)')]
        [string]
        $sasUrl,
        [parameter(mandatory=$False,HelpMessage='Retention in days.
Remove blobs older than X days.
0 or lower means no retention.)'
)]
        [int]
        $retentionInDays,
        [parameter(mandatory=$False,HelpMessage='Log level.)')]
        $level
    )

    process
    {
        return $([AzureBlobStorageApplicationLogsConfig]$PSBoundParameters)
    }
}
class AzureTableStorageApplicationLogsConfig
{
    [ArgumentCompletions('Off', 'Verbose', 'Information', 'Warning', 'Error')]
    [object] $level
    [string] $sasUrl
}
function New-AzureNativeTypeWebAzureTableStorageApplicationLogsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Log level.)')]
        $level,
        [parameter(mandatory=$False,HelpMessage='SAS URL to an Azure table with add/query/delete permissions.)')]
        [string]
        $sasUrl
    )

    process
    {
        return $([AzureTableStorageApplicationLogsConfig]$PSBoundParameters)
    }
}
class FileSystemApplicationLogsConfig
{
    [ArgumentCompletions('Off', 'Verbose', 'Information', 'Warning', 'Error')]
    [object] $level
}
function New-AzureNativeTypeWebFileSystemApplicationLogsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Log level.)')]
        $level
    )

    process
    {
        return $([FileSystemApplicationLogsConfig]$PSBoundParameters)
    }
}
class ApplicationLogsConfig
{
    [AzureBlobStorageApplicationLogsConfig] $azureBlobStorage
    [AzureTableStorageApplicationLogsConfig] $azureTableStorage
    [FileSystemApplicationLogsConfig] $fileSystem
}
function New-AzureNativeTypeWebApplicationLogsConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Application logs to blob storage configuration.)')]
        [AzureBlobStorageApplicationLogsConfig]
        $azureBlobStorage,
        [parameter(mandatory=$False,HelpMessage='Application logs to azure table storage configuration.)')]
        [AzureTableStorageApplicationLogsConfig]
        $azureTableStorage,
        [parameter(mandatory=$False,HelpMessage='Application logs to file system configuration.)')]
        [FileSystemApplicationLogsConfig]
        $fileSystem
    )

    process
    {
        return $([ApplicationLogsConfig]$PSBoundParameters)
    }
}
function New-AzureNativeWebWebAppDiagnosticLogsConfiguration
{
    [Alias('azure_native_web_webappdiagnosticlogsconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='HTTP logs configuration.)')]
        [HttpLogsConfig]
        $httpLogs,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Detailed error messages configuration.)')]
        [EnabledConfig]
        $detailedErrorMessages,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Application logs configuration.)')]
        [ApplicationLogsConfig]
        $applicationLogs,
        [parameter(mandatory=$False,HelpMessage='Failed requests tracing configuration.)')]
        [EnabledConfig]
        $failedRequestsTracing,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppPrivateEndpointConnectionSlot
{
    [Alias('azure_native_web_webappprivateendpointconnectionslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The state of a private link connection)')]
        [PrivateLinkConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory=$False,HelpMessage='Name of the site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $slot,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebStaticSiteUserProvidedFunctionAppForStaticSiteBuild
{
    [Alias('azure_native_web_staticsiteuserprovidedfunctionappforstaticsitebuild')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the function app to register with the static site build.)')]
        [string]
        $functionAppName,
        [parameter(mandatory=$False,HelpMessage='The stage site identifier.)')]
        [string]
        $environmentName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Specify <code>true</code> to force the update of the auth configuration on the function app even if an AzureStaticWebApps provider is already configured on the function app. The default is <code>false</code>.)')]
        [bool]
        $isForced,
        [parameter(mandatory=$False,HelpMessage='The region of the function app registered with the static site)')]
        [string]
        $functionAppRegion,
        [parameter(mandatory=$False,HelpMessage='The resource id of the function app registered with the static site)')]
        [string]
        $functionAppResourceId,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["environmentName"] = $environmentName
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppRelayServiceConnection
{
    [Alias('azure_native_web_webapprelayserviceconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $entityConnectionString,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $entityName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $resourceConnectionString,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $biztalkUri,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $hostname,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSiteExtensionSlot
{
    [Alias('azure_native_web_webappsiteextensionslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site extension name.)')]
        [string]
        $siteExtensionId,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API uses the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppAzureStorageAccounts
{
    [Alias('azure_native_web_webappazurestorageaccounts')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Azure storage accounts.)')]
        [AzureStorageInfoValue]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSiteExtension
{
    [Alias('azure_native_web_webappsiteextension')]
    param (
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Site extension name.)')]
        [string]
        $siteExtensionId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSitePushSettingsSlot
{
    [Alias('azure_native_web_webappsitepushsettingsslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of web app slot. If not specified then will default to production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
Tags can consist of alphanumeric characters and the following:
''_'', ''@'', ''#'', ''.'', '':'', ''-''.
Validation should be performed at the PushRequestHandler.)'
)]
        [string]
        $tagsRequiringAuth,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.)')]
        [string]
        $tagWhitelistJson,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of dynamic tags that will be evaluated from user claims in the push registration endpoint.)')]
        [string]
        $dynamicTagsJson,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a flag indicating whether the Push endpoint is enabled.)')]
        [bool]
        $isPushEnabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["isPushEnabled"] = $isPushEnabled
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppInstanceFunctionSlot
{
    [Alias('azure_native_web_webappinstancefunctionslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Site name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The invocation URL)')]
        [string]
        $invokeUrlTemplate,
        [parameter(mandatory=$False,HelpMessage='Config URI.)')]
        [string]
        $configHref,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Secrets file URI.)')]
        [string]
        $secretsFileHref,
        [parameter(mandatory=$False,HelpMessage='Function name.)')]
        [string]
        $functionName,
        [parameter(mandatory=$False,HelpMessage='Function URI.)')]
        [string]
        $href,
        [parameter(mandatory=$False,HelpMessage='Script URI.)')]
        [string]
        $scriptHref,
        [parameter(mandatory=$False,HelpMessage='Script root path URI.)')]
        [string]
        $scriptRootPathHref,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a value indicating whether the function is disabled)')]
        [bool]
        $isDisabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Config information.)')]
        $config,
        [parameter(mandatory=$False,HelpMessage='The function language)')]
        [string]
        $language,
        [parameter(mandatory=$False,HelpMessage='Test data URI.)')]
        [string]
        $testDataHref,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='Test data used when testing via the Azure Portal.)')]
        [string]
        $testData,
        [parameter(mandatory=$False,HelpMessage='File list.)')]
        [hashtable]
        $files,
        [parameter(mandatory=$False,HelpMessage='Function App ID.)')]
        [string]
        $functionAppId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CookieExpiration
{
    [string] $timeToExpiration
    [ArgumentCompletions('FixedTime', 'IdentityProviderDerived')]
    [object] $convention
}
function New-AzureNativeTypeWebCookieExpiration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The time after the request is made when the session cookie should expire.)')]
        [string]
        $timeToExpiration,
        [parameter(mandatory=$False,HelpMessage='The convention used when determining the session cookie''s expiration.)')]
        $convention
    )

    process
    {
        return $([CookieExpiration]$PSBoundParameters)
    }
}
class Nonce
{
    [bool] $validateNonce
    [string] $nonceExpirationInterval
}
function New-AzureNativeTypeWebNonce
{
    param (
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the nonce should not be validated while completing the login flow; otherwise, <code>true</code>.)')]
        [bool]
        $validateNonce,
        [parameter(mandatory=$False,HelpMessage='The time after the request is made when the nonce should expire.)')]
        [string]
        $nonceExpirationInterval
    )

    process
    {
        return $([Nonce]$PSBoundParameters)
    }
}
class BlobStorageTokenStore
{
    [string] $sasUrlSettingName
}
function New-AzureNativeTypeWebBlobStorageTokenStore
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the app setting containing the SAS URL of the blob storage containing the tokens.)')]
        [string]
        $sasUrlSettingName
    )

    process
    {
        return $([BlobStorageTokenStore]$PSBoundParameters)
    }
}
class FileSystemTokenStore
{
    [string] $directory
}
function New-AzureNativeTypeWebFileSystemTokenStore
{
    param (
        [parameter(mandatory=$False,HelpMessage='The directory in which the tokens will be stored.)')]
        [string]
        $directory
    )

    process
    {
        return $([FileSystemTokenStore]$PSBoundParameters)
    }
}
class TokenStore
{
    [BlobStorageTokenStore] $azureBlobStorage
    [int] $tokenRefreshExtensionHours
    [FileSystemTokenStore] $fileSystem
    [bool] $enabled
}
function New-AzureNativeTypeWebTokenStore
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the storage of the tokens if blob storage is used.)')]
        [BlobStorageTokenStore]
        $azureBlobStorage,
        [parameter(mandatory=$False,HelpMessage='The number of hours after session token expiration that a session token can be used to
call the token refresh API. The default is 72 hours.)'
)]
        [int]
        $tokenRefreshExtensionHours,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the storage of the tokens if a file system is used.)')]
        [FileSystemTokenStore]
        $fileSystem,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
 The default is <code>false</code>.)'
)]
        [bool]
        $enabled
    )

    process
    {
        return $([TokenStore]$PSBoundParameters)
    }
}
class LoginRoutes
{
    [string] $logoutEndpoint
}
function New-AzureNativeTypeWebLoginRoutes
{
    param (
        [parameter(mandatory=$False,HelpMessage='The endpoint at which a logout request should be made.)')]
        [string]
        $logoutEndpoint
    )

    process
    {
        return $([LoginRoutes]$PSBoundParameters)
    }
}
class Login
{
    [CookieExpiration] $cookieExpiration
    [Nonce] $nonce
    [TokenStore] $tokenStore
    [string[]] $allowedExternalRedirectUrls
    [bool] $preserveUrlFragmentsForLogins
    [LoginRoutes] $routes
}
function New-AzureNativeTypeWebLogin
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the session cookie''s expiration.)')]
        [CookieExpiration]
        $cookieExpiration,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the nonce used in the login flow.)')]
        [Nonce]
        $nonce,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the token store.)')]
        [TokenStore]
        $tokenStore,
        [parameter(mandatory=$False,HelpMessage='External URLs that can be redirected to as part of logging in or logging out of the app. Note that the query string part of the URL is ignored.
This is an advanced setting typically only needed by Windows Store application backends.
Note that URLs within the current domain are always implicitly allowed.)'
)]
        [string[]]
        $allowedExternalRedirectUrls,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the fragments from the request are preserved after the login request is made; otherwise, <code>false</code>.)')]
        [bool]
        $preserveUrlFragmentsForLogins,
        [parameter(mandatory=$False,HelpMessage='The routes that specify the endpoints used for login and logout requests.)')]
        [LoginRoutes]
        $routes
    )

    process
    {
        return $([Login]$PSBoundParameters)
    }
}
class AzureActiveDirectoryRegistration
{
    [string] $clientSecretCertificateThumbprint
    [string] $clientSecretCertificateSubjectAlternativeName
    [string] $clientId
    [string] $clientSecretCertificateIssuer
    [string] $openIdIssuer
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeWebAzureActiveDirectoryRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
a replacement for the Client Secret. It is also optional.)'
)]
        [string]
        $clientSecretCertificateThumbprint,
        [parameter(mandatory=$False,HelpMessage='An alternative to the client secret thumbprint, that is the subject alternative name of a certificate used for signing purposes. This property acts as
a replacement for the Client Secret Certificate Thumbprint. It is also optional.)'
)]
        [string]
        $clientSecretCertificateSubjectAlternativeName,
        [parameter(mandatory=$False,HelpMessage='The Client ID of this relying party application, known as the client_id.
This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
other 3rd party OpenID Connect providers.
More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html)'
)]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='An alternative to the client secret thumbprint, that is the issuer of a certificate used for signing purposes. This property acts as
a replacement for the Client Secret Certificate Thumbprint. It is also optional.)'
)]
        [string]
        $clientSecretCertificateIssuer,
        [parameter(mandatory=$False,HelpMessage='The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://login.microsoftonline.com/v2.0/{tenant-guid}/.
This URI is a case-sensitive identifier for the token issuer.
More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html)'
)]
        [string]
        $openIdIssuer,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret of the relying party application.)')]
        [string]
        $clientSecretSettingName
    )

    process
    {
        return $([AzureActiveDirectoryRegistration]$PSBoundParameters)
    }
}
class AzureActiveDirectoryLogin
{
    [string[]] $loginParameters
    [bool] $disableWWWAuthenticate
}
function New-AzureNativeTypeWebAzureActiveDirectoryLogin
{
    param (
        [parameter(mandatory=$False,HelpMessage='Login parameters to send to the OpenID Connect authorization endpoint when
a user logs in. Each parameter must be in the form "key=value".)'
)]
        [string[]]
        $loginParameters,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the www-authenticate provider should be omitted from the request; otherwise, <code>false</code>.)')]
        [bool]
        $disableWWWAuthenticate
    )

    process
    {
        return $([AzureActiveDirectoryLogin]$PSBoundParameters)
    }
}
class JwtClaimChecks
{
    [string[]] $allowedGroups
    [string[]] $allowedClientApplications
}
function New-AzureNativeTypeWebJwtClaimChecks
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of the allowed groups.)')]
        [string[]]
        $allowedGroups,
        [parameter(mandatory=$False,HelpMessage='The list of the allowed client applications.)')]
        [string[]]
        $allowedClientApplications
    )

    process
    {
        return $([JwtClaimChecks]$PSBoundParameters)
    }
}
class AzureActiveDirectoryValidation
{
    [string[]] $allowedAudiences
    [JwtClaimChecks] $jwtClaimChecks
}
function New-AzureNativeTypeWebAzureActiveDirectoryValidation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of audiences that can make successful authentication/authorization requests.)')]
        [string[]]
        $allowedAudiences,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the checks that should be made while validating the JWT Claims.)')]
        [JwtClaimChecks]
        $jwtClaimChecks
    )

    process
    {
        return $([AzureActiveDirectoryValidation]$PSBoundParameters)
    }
}
class AzureActiveDirectory
{
    [AzureActiveDirectoryRegistration] $registration
    [bool] $isAutoProvisioned
    [AzureActiveDirectoryLogin] $login
    [bool] $enabled
    [AzureActiveDirectoryValidation] $validation
}
function New-AzureNativeTypeWebAzureActiveDirectory
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active Directory app registration.)')]
        [AzureActiveDirectoryRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='Gets a value indicating whether the Azure AD configuration was auto-provisioned using 1st party tooling.
This is an internal flag primarily intended to support the Azure Management Portal. Users should not
read or write to this property.)'
)]
        [bool]
        $isAutoProvisioned,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active Directory login flow.)')]
        [AzureActiveDirectoryLogin]
        $login,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the Azure Active Directory provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active Directory token validation flow.)')]
        [AzureActiveDirectoryValidation]
        $validation
    )

    process
    {
        return $([AzureActiveDirectory]$PSBoundParameters)
    }
}
class ClientRegistration
{
    [string] $clientId
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeWebClientRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Client ID of the app used for login.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret.)')]
        [string]
        $clientSecretSettingName
    )

    process
    {
        return $([ClientRegistration]$PSBoundParameters)
    }
}
class LoginScopes
{
    [string[]] $scopes
}
function New-AzureNativeTypeWebLoginScopes
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of the scopes that should be requested while authenticating.)')]
        [string[]]
        $scopes
    )

    process
    {
        return $([LoginScopes]$PSBoundParameters)
    }
}
class AllowedAudiencesValidation
{
    [string[]] $allowedAudiences
}
function New-AzureNativeTypeWebAllowedAudiencesValidation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the allowed list of audiences from which to validate the JWT token.)')]
        [string[]]
        $allowedAudiences
    )

    process
    {
        return $([AllowedAudiencesValidation]$PSBoundParameters)
    }
}
class Google
{
    [ClientRegistration] $registration
    [LoginScopes] $login
    [bool] $enabled
    [AllowedAudiencesValidation] $validation
}
function New-AzureNativeTypeWebGoogle
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the app registration for the Google provider.)')]
        [ClientRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow.)')]
        [LoginScopes]
        $login,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the Google provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active Directory token validation flow.)')]
        [AllowedAudiencesValidation]
        $validation
    )

    process
    {
        return $([Google]$PSBoundParameters)
    }
}
class AppleRegistration
{
    [string] $clientId
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeWebAppleRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Client ID of the app used for login.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret.)')]
        [string]
        $clientSecretSettingName
    )

    process
    {
        return $([AppleRegistration]$PSBoundParameters)
    }
}
class Apple
{
    [AppleRegistration] $registration
    [LoginScopes] $login
    [bool] $enabled
}
function New-AzureNativeTypeWebApple
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Apple registration.)')]
        [AppleRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow.)')]
        [LoginScopes]
        $login,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the Apple provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([Apple]$PSBoundParameters)
    }
}
class AzureStaticWebAppsRegistration
{
    [string] $clientId
}
function New-AzureNativeTypeWebAzureStaticWebAppsRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Client ID of the app used for login.)')]
        [string]
        $clientId
    )

    process
    {
        return $([AzureStaticWebAppsRegistration]$PSBoundParameters)
    }
}
class AzureStaticWebApps
{
    [bool] $enabled
    [AzureStaticWebAppsRegistration] $registration
}
function New-AzureNativeTypeWebAzureStaticWebApps
{
    param (
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the Azure Static Web Apps provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Static Web Apps registration.)')]
        [AzureStaticWebAppsRegistration]
        $registration
    )

    process
    {
        return $([AzureStaticWebApps]$PSBoundParameters)
    }
}
class LegacyMicrosoftAccount
{
    [ClientRegistration] $registration
    [LoginScopes] $login
    [bool] $enabled
    [AllowedAudiencesValidation] $validation
}
function New-AzureNativeTypeWebLegacyMicrosoftAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the app registration for the legacy Microsoft Account provider.)')]
        [ClientRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow.)')]
        [LoginScopes]
        $login,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the legacy Microsoft Account provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the legacy Microsoft Account provider token validation flow.)')]
        [AllowedAudiencesValidation]
        $validation
    )

    process
    {
        return $([LegacyMicrosoftAccount]$PSBoundParameters)
    }
}
class AppRegistration
{
    [string] $appId
    [string] $appSecretSettingName
}
function New-AzureNativeTypeWebAppRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The App ID of the app used for login.)')]
        [string]
        $appId,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the app secret.)')]
        [string]
        $appSecretSettingName
    )

    process
    {
        return $([AppRegistration]$PSBoundParameters)
    }
}
class Facebook
{
    [AppRegistration] $registration
    [string] $graphApiVersion
    [LoginScopes] $login
    [bool] $enabled
}
function New-AzureNativeTypeWebFacebook
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the app registration for the Facebook provider.)')]
        [AppRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='The version of the Facebook api to be used while logging in.)')]
        [string]
        $graphApiVersion,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow.)')]
        [LoginScopes]
        $login,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the Facebook provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([Facebook]$PSBoundParameters)
    }
}
class GitHub
{
    [ClientRegistration] $registration
    [LoginScopes] $login
    [bool] $enabled
}
function New-AzureNativeTypeWebGitHub
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the app registration for the GitHub provider.)')]
        [ClientRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow.)')]
        [LoginScopes]
        $login,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the GitHub provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([GitHub]$PSBoundParameters)
    }
}
class TwitterRegistration
{
    [string] $consumerSecretSettingName
    [string] $consumerKey
}
function New-AzureNativeTypeWebTwitterRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
application used for sign-in.)'
)]
        [string]
        $consumerSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The OAuth 1.0a consumer key of the Twitter application used for sign-in.
This setting is required for enabling Twitter Sign-In.
Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in)'
)]
        [string]
        $consumerKey
    )

    process
    {
        return $([TwitterRegistration]$PSBoundParameters)
    }
}
class Twitter
{
    [bool] $enabled
    [TwitterRegistration] $registration
}
function New-AzureNativeTypeWebTwitter
{
    param (
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the Twitter provider should not be enabled despite the set registration; otherwise, <code>true</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the app registration for the Twitter provider.)')]
        [TwitterRegistration]
        $registration
    )

    process
    {
        return $([Twitter]$PSBoundParameters)
    }
}
class IdentityProviders
{
    [AzureActiveDirectory] $azureActiveDirectory
    [Google] $google
    [Apple] $apple
    [AzureStaticWebApps] $azureStaticWebApps
    [LegacyMicrosoftAccount] $legacyMicrosoftAccount
    [Facebook] $facebook
    [object] $customOpenIdConnectProviders
    [GitHub] $gitHub
    [Twitter] $twitter
}
class OpenIdConnectClientCredential
{
    [ArgumentCompletions('ClientSecretPost')]
    [object] $method
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeWebOpenIdConnectClientCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The method that should be used to authenticate the user.)')]
        $method,
        [parameter(mandatory=$False,HelpMessage='The app setting that contains the client secret for the custom Open ID Connect provider.)')]
        [string]
        $clientSecretSettingName
    )

    process
    {
        return $([OpenIdConnectClientCredential]$PSBoundParameters)
    }
}
class OpenIdConnectConfig
{
    [string] $wellKnownOpenIdConfiguration
    [string] $issuer
    [string] $certificationUri
    [string] $tokenEndpoint
    [string] $authorizationEndpoint
}
function New-AzureNativeTypeWebOpenIdConnectConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='The endpoint that contains all the configuration endpoints for the provider.)')]
        [string]
        $wellKnownOpenIdConfiguration,
        [parameter(mandatory=$False,HelpMessage='The endpoint that issues the token.)')]
        [string]
        $issuer,
        [parameter(mandatory=$False,HelpMessage='The endpoint that provides the keys necessary to validate the token.)')]
        [string]
        $certificationUri,
        [parameter(mandatory=$False,HelpMessage='The endpoint to be used to request a token.)')]
        [string]
        $tokenEndpoint,
        [parameter(mandatory=$False,HelpMessage='The endpoint to be used to make an authorization request.)')]
        [string]
        $authorizationEndpoint
    )

    process
    {
        return $([OpenIdConnectConfig]$PSBoundParameters)
    }
}
class OpenIdConnectRegistration
{
    [OpenIdConnectClientCredential] $clientCredential
    [OpenIdConnectConfig] $openIdConnectConfiguration
    [string] $clientId
}
function New-AzureNativeTypeWebOpenIdConnectRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The authentication credentials of the custom Open ID Connect provider.)')]
        [OpenIdConnectClientCredential]
        $clientCredential,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the endpoints used for the custom Open ID Connect provider.)')]
        [OpenIdConnectConfig]
        $openIdConnectConfiguration,
        [parameter(mandatory=$False,HelpMessage='The client id of the custom Open ID Connect provider.)')]
        [string]
        $clientId
    )

    process
    {
        return $([OpenIdConnectRegistration]$PSBoundParameters)
    }
}
class OpenIdConnectLogin
{
    [string[]] $scopes
    [string] $nameClaimType
}
function New-AzureNativeTypeWebOpenIdConnectLogin
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of the scopes that should be requested while authenticating.)')]
        [string[]]
        $scopes,
        [parameter(mandatory=$False,HelpMessage='The name of the claim that contains the users name.)')]
        [string]
        $nameClaimType
    )

    process
    {
        return $([OpenIdConnectLogin]$PSBoundParameters)
    }
}
class CustomOpenIdConnectProvider
{
    [OpenIdConnectRegistration] $registration
    [OpenIdConnectLogin] $login
    [bool] $enabled
}
function New-AzureNativeTypeWebCustomOpenIdConnectProvider
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the app registration for the custom Open ID Connect provider.)')]
        [OpenIdConnectRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow of the custom Open ID Connect provider.)')]
        [OpenIdConnectLogin]
        $login,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the custom Open ID provider provider should not be enabled; otherwise, <code>true</code>.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([CustomOpenIdConnectProvider]$PSBoundParameters)
    }
}
function New-AzureNativeTypeWebIdentityProviders
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active directory provider.)')]
        [AzureActiveDirectory]
        $azureActiveDirectory,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Google provider.)')]
        [Google]
        $google,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Apple provider.)')]
        [Apple]
        $apple,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Static Web Apps provider.)')]
        [AzureStaticWebApps]
        $azureStaticWebApps,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the legacy Microsoft Account provider.)')]
        [LegacyMicrosoftAccount]
        $legacyMicrosoftAccount,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Facebook provider.)')]
        [Facebook]
        $facebook,
        [parameter(mandatory=$False,HelpMessage='The map of the name of the alias of each custom Open ID Connect provider to the
configuration settings of the custom Open ID Connect provider.)'
)]
        [CustomOpenIdConnectProvider]
        $customOpenIdConnectProviders,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the GitHub provider.)')]
        [GitHub]
        $gitHub,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Twitter provider.)')]
        [Twitter]
        $twitter
    )

    process
    {
        return $([IdentityProviders]$PSBoundParameters)
    }
}
class GlobalValidation
{
    [string] $redirectToProvider
    [bool] $requireAuthentication
    [string[]] $excludedPaths
    [ArgumentCompletions('RedirectToLoginPage', 'AllowAnonymous', 'Return401', 'Return403')]
    [object] $unauthenticatedClientAction
}
function New-AzureNativeTypeWebGlobalValidation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The default authentication provider to use when multiple providers are configured.
This setting is only needed if multiple providers are configured and the unauthenticated client
action is set to "RedirectToLoginPage".)'
)]
        [string]
        $redirectToProvider,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the authentication flow is required any request is made; otherwise, <code>false</code>.)')]
        [bool]
        $requireAuthentication,
        [parameter(mandatory=$False,HelpMessage='The paths for which unauthenticated flow would not be redirected to the login page.)')]
        [string[]]
        $excludedPaths,
        [parameter(mandatory=$False,HelpMessage='The action to take when an unauthenticated client attempts to access the app.)')]
        $unauthenticatedClientAction
    )

    process
    {
        return $([GlobalValidation]$PSBoundParameters)
    }
}
class AuthPlatform
{
    [string] $configFilePath
    [bool] $enabled
    [string] $runtimeVersion
}
function New-AzureNativeTypeWebAuthPlatform
{
    param (
        [parameter(mandatory=$False,HelpMessage='The path of the config file containing auth settings if they come from a file.
If the path is relative, base will the site''s root directory.)'
)]
        [string]
        $configFilePath,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
The setting in this value can control the behavior of certain features in the Authentication / Authorization module.)'
)]
        [string]
        $runtimeVersion
    )

    process
    {
        return $([AuthPlatform]$PSBoundParameters)
    }
}
class HttpSettingsRoutes
{
    [string] $apiPrefix
}
function New-AzureNativeTypeWebHttpSettingsRoutes
{
    param (
        [parameter(mandatory=$False,HelpMessage='The prefix that should precede all the authentication/authorization paths.)')]
        [string]
        $apiPrefix
    )

    process
    {
        return $([HttpSettingsRoutes]$PSBoundParameters)
    }
}
class ForwardProxy
{
    [string] $customHostHeaderName
    [ArgumentCompletions('NoProxy', 'Standard', 'Custom')]
    [object] $convention
    [string] $customProtoHeaderName
}
function New-AzureNativeTypeWebForwardProxy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the header containing the host of the request.)')]
        [string]
        $customHostHeaderName,
        [parameter(mandatory=$False,HelpMessage='The convention used to determine the url of the request made.)')]
        $convention,
        [parameter(mandatory=$False,HelpMessage='The name of the header containing the scheme of the request.)')]
        [string]
        $customProtoHeaderName
    )

    process
    {
        return $([ForwardProxy]$PSBoundParameters)
    }
}
class HttpSettings
{
    [HttpSettingsRoutes] $routes
    [ForwardProxy] $forwardProxy
    [bool] $requireHttps
}
function New-AzureNativeTypeWebHttpSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the paths HTTP requests.)')]
        [HttpSettingsRoutes]
        $routes,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of a forward proxy used to make the requests.)')]
        [ForwardProxy]
        $forwardProxy,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if the authentication/authorization responses not having the HTTPS scheme are permissible; otherwise, <code>true</code>.)')]
        [bool]
        $requireHttps
    )

    process
    {
        return $([HttpSettings]$PSBoundParameters)
    }
}
function New-AzureNativeWebWebAppAuthSettingsV2Slot
{
    [Alias('azure_native_web_webappauthsettingsv2slot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow of users using App Service Authentication/Authorization.)')]
        [Login]
        $login,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of each of the identity providers used to configure App Service Authentication/Authorization.)')]
        [IdentityProviders]
        $identityProviders,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The configuration settings that determines the validation flow of users using App Service Authentication/Authorization.)')]
        [GlobalValidation]
        $globalValidation,
        [parameter(mandatory=$False,HelpMessage='Name of web app slot. If not specified then will default to production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the platform of App Service Authentication/Authorization.)')]
        [AuthPlatform]
        $platform,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the HTTP requests for authentication and authorization requests made against App Service Authentication/Authorization.)')]
        [HttpSettings]
        $httpSettings,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebApp
{
    [Alias('azure_native_web_webapp')]
    param (
        [parameter(mandatory=$False,HelpMessage='Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName})'
)]
        [string]
        $virtualNetworkSubnetId,
        [parameter(mandatory=$False,HelpMessage='client certificate authentication comma-separated exclusion paths)')]
        [string]
        $clientCertExclusionPaths,
        [parameter(mandatory=$False,HelpMessage='Hyper-V sandbox.)')]
        [bool]
        $hyperV,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Site redundancy mode)')]
        $redundancyMode,
        [parameter(mandatory=$False,HelpMessage='Size of the function container.)')]
        [int]
        $containerSize,
        [parameter(mandatory=$False,HelpMessage='App Service Environment to use for the app.)')]
        [HostingEnvironmentProfile]
        $hostingEnvironmentProfile,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.)')]
        [bool]
        $scmSiteAlsoStopped,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if reserved; otherwise, <code>false</code>.)')]
        [bool]
        $reserved,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
 If <code>true</code>, the app is only accessible via API management process.)'
)]
        [bool]
        $hostNamesDisabled,
        [parameter(mandatory=$False,HelpMessage='Obsolete: Hyper-V sandbox.)')]
        [bool]
        $isXenon,
        [parameter(mandatory=$False,HelpMessage='HttpsOnly: configures a web site to accept only https requests. Issues redirect for
http requests)'
)]
        [bool]
        $httpsOnly,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.)')]
        [bool]
        $clientCertEnabled,
        [parameter(mandatory=$False,HelpMessage='Configuration of the app.)')]
        [SiteConfig]
        $siteConfig,
        [parameter(mandatory=$False,HelpMessage='Managed service identity.)')]
        [ManagedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Maximum allowed daily memory-time quota (applicable on dynamic apps only).)')]
        [int]
        $dailyMemoryTimeQuota,
        [parameter(mandatory=$False,HelpMessage='Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".)')]
        [string]
        $serverFarmId,
        [parameter(mandatory=$False,HelpMessage='Checks if Customer provided storage account is required)')]
        [bool]
        $storageAccountRequired,
        [parameter(mandatory=$False,HelpMessage='If specified during app creation, the app is cloned from a source app.)')]
        [CloningInfo]
        $cloningInfo,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to enable client affinity; <code>false</code> to stop sending session affinity cookies, which route client requests in the same session to the same instance. Default is <code>true</code>.)')]
        [bool]
        $clientAffinityEnabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Identity to use for Key Vault Reference authentication.)')]
        [string]
        $keyVaultReferenceIdentity,
        [parameter(mandatory=$False,HelpMessage='Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.)')]
        [string]
        $customDomainVerificationId,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting this value to false disables the app (takes the app offline).)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='This composes with ClientCertEnabled setting.
- ClientCertEnabled: false means ClientCert is ignored.
- ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
- ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted.)'
)]
        $clientCertMode,
        [parameter(mandatory=$False,HelpMessage='Hostname SSL states are used to manage the SSL bindings for app''s hostnames.)')]
        $hostNameSslStates,
        [parameter(mandatory=$False,HelpMessage='Unique name of the app to create or update. To create or update a deployment slot, use the {slot} parameter.)')]
        [string]
        $name,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSitePushSettings
{
    [Alias('azure_native_web_webappsitepushsettings')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of dynamic tags that will be evaluated from user claims in the push registration endpoint.)')]
        [string]
        $dynamicTagsJson,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.)')]
        [string]
        $tagWhitelistJson,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
Tags can consist of alphanumeric characters and the following:
''_'', ''@'', ''#'', ''.'', '':'', ''-''.
Validation should be performed at the PushRequestHandler.)'
)]
        [string]
        $tagsRequiringAuth,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a flag indicating whether the Push endpoint is enabled.)')]
        [bool]
        $isPushEnabled,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["isPushEnabled"] = $isPushEnabled
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebStaticSitePrivateEndpointConnection
{
    [Alias('azure_native_web_staticsiteprivateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The state of a private link connection)')]
        [PrivateLinkConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppPremierAddOnSlot
{
    [Alias('azure_native_web_webapppremieraddonslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Premier add on Marketplace offer.)')]
        [string]
        $marketplaceOffer,
        [parameter(mandatory=$False,HelpMessage='Premier add on Marketplace publisher.)')]
        [string]
        $marketplacePublisher,
        [parameter(mandatory=$False,HelpMessage='Premier add on SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Add-on name.)')]
        [string]
        $premierAddOnName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Premier add on Vendor.)')]
        [string]
        $vendor,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Premier add on Product.)')]
        [string]
        $product,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API will update the named add-on for the production slot.)')]
        [string]
        $slot,
        [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(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppAuthSettingsSlot
{
    [Alias('azure_native_web_webappauthsettingsslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret associated with
the Google web application.)'
)]
        [string]
        $googleClientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret of the Github
app used for GitHub Login.)'
)]
        [string]
        $gitHubClientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The Client Id of the GitHub app used for login.
This setting is required for enabling Github login)'
)]
        [string]
        $gitHubClientId,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 client ID that was created for the app used for authentication.
This setting is required for enabling Microsoft Account authentication.
Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm)'
)]
        [string]
        $microsoftAccountClientId,
        [parameter(mandatory=$False,HelpMessage='The Client Secret of the GitHub app used for Github Login.
This setting is required for enabling Github login.)'
)]
        [string]
        $gitHubClientSecret,
        [parameter(mandatory=$False,HelpMessage='The OAuth 1.0a consumer key of the Twitter application used for sign-in.
This setting is required for enabling Twitter Sign-In.
Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in)'
)]
        [string]
        $twitterConsumerKey,
        [parameter(mandatory=$False,HelpMessage='<code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
 The default is <code>false</code>.)'
)]
        [bool]
        $tokenStoreEnabled,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
This setting is optional. If not specified, "wl.basic" is used as the default scope.
Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx)'
)]
        [string[]]
        $microsoftAccountOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 client secret that was created for the app used for authentication.
This setting is required for enabling Microsoft Account authentication.
Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm)'
)]
        [string]
        $microsoftAccountClientSecret,
        [parameter(mandatory=$False,HelpMessage='Allowed audience values to consider when validating JWTs issued by
Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
allowed audience, regardless of this setting.)'
)]
        [string[]]
        $allowedAudiences,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the client secret of the relying party application.)')]
        [string]
        $clientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The App Secret of the Facebook app used for Facebook Login.
This setting is required for enabling Facebook Login.
Facebook Login documentation: https://developers.facebook.com/docs/facebook-login)'
)]
        [string]
        $facebookAppSecret,
        [parameter(mandatory=$False,HelpMessage='The action to take when an unauthenticated client attempts to access the app.)')]
        $unauthenticatedClientAction,
        [parameter(mandatory=$False,HelpMessage='The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
This setting is required for enabling Twitter Sign-In.
Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in)'
)]
        [string]
        $twitterConsumerSecret,
        [parameter(mandatory=$False,HelpMessage='External URLs that can be redirected to as part of logging in or logging out of the app. Note that the query string part of the URL is ignored.
This is an advanced setting typically only needed by Windows Store application backends.
Note that URLs within the current domain are always implicitly allowed.)'
)]
        [string[]]
        $allowedExternalRedirectUrls,
        [parameter(mandatory=$False,HelpMessage='Login parameters to send to the OpenID Connect authorization endpoint when
a user logs in. Each parameter must be in the form "key=value".)'
)]
        [string[]]
        $additionalLoginParams,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
This setting is optional)'
)]
        [string[]]
        $gitHubOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
The setting in this value can control the behavior of certain features in the Authentication / Authorization module.)'
)]
        [string]
        $runtimeVersion,
        [parameter(mandatory=$False,HelpMessage='The client secret associated with the Google web application.
This setting is required for enabling Google Sign-In.
Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/)'
)]
        [string]
        $googleClientSecret,
        [parameter(mandatory=$False,HelpMessage='The ConfigVersion of the Authentication / Authorization feature in use for the current app.
The setting in this value can control the behavior of the control plane for Authentication / Authorization.)'
)]
        [string]
        $configVersion,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
This setting is optional.
Facebook Login documentation: https://developers.facebook.com/docs/facebook-login)'
)]
        [string[]]
        $facebookOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the app secret used for Facebook Login.)')]
        [string]
        $facebookAppSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
This URI is a case-sensitive identifier for the token issuer.
More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html)'
)]
        [string]
        $issuer,
        [parameter(mandatory=$False,HelpMessage='Name of web app slot. If not specified then will default to production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='The path of the config file containing auth settings.
If the path is relative, base will the site''s root directory.)'
)]
        [string]
        $authFilePath,
        [parameter(mandatory=$False,HelpMessage='The number of hours after session token expiration that a session token can be used to
call the token refresh API. The default is 72 hours.)'
)]
        [int]
        $tokenRefreshExtensionHours,
        [parameter(mandatory=$False,HelpMessage='The default authentication provider to use when multiple providers are configured.
This setting is only needed if multiple providers are configured and the unauthenticated client
action is set to "RedirectToLoginPage".)'
)]
        $defaultProvider,
        [parameter(mandatory=$False,HelpMessage='The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/)'
)]
        [string[]]
        $googleOAuthScopes,
        [parameter(mandatory=$False,HelpMessage='An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
a replacement for the Client Secret. It is also optional.)'
)]
        [string]
        $clientSecretCertificateThumbprint,
        [parameter(mandatory=$False,HelpMessage='Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.)')]
        [bool]
        $validateIssuer,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='"true" if the auth config settings should be read from a file,
"false" otherwise)'
)]
        [string]
        $isAuthFromFile,
        [parameter(mandatory=$False,HelpMessage='The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html)'
)]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='Gets a JSON string containing the Azure AD Acl settings.)')]
        [string]
        $aadClaimsAuthorization,
        [parameter(mandatory=$False,HelpMessage='The App ID of the Facebook app used for login.
This setting is required for enabling Facebook Login.
Facebook Login documentation: https://developers.facebook.com/docs/facebook-login)'
)]
        [string]
        $facebookAppId,
        [parameter(mandatory=$False,HelpMessage='The app setting name containing the OAuth 2.0 client secret that was created for the
app used for authentication.)'
)]
        [string]
        $microsoftAccountClientSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The OpenID Connect Client ID for the Google web application.
This setting is required for enabling Google Sign-In.
Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/)'
)]
        [string]
        $googleClientId,
        [parameter(mandatory=$False,HelpMessage='The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
application used for sign-in.)'
)]
        [string]
        $twitterConsumerSecretSettingName,
        [parameter(mandatory=$False,HelpMessage='The Client ID of this relying party application, known as the client_id.
This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
other 3rd party OpenID Connect providers.
More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html)'
)]
        [string]
        $clientId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppHybridConnectionSlot
{
    [Alias('azure_native_web_webapphybridconnectionslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='The namespace for this hybrid connection.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the slot for the web app.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.)')]
        [string]
        $sendKeyName,
        [parameter(mandatory=$False,HelpMessage='The hostname of the endpoint.)')]
        [string]
        $hostname,
        [parameter(mandatory=$False,HelpMessage='The ARM URI to the Service Bus relay.)')]
        [string]
        $relayArmUri,
        [parameter(mandatory=$False,HelpMessage='The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
normally, use the POST /listKeys API instead.)'
)]
        [string]
        $sendKeyValue,
        [parameter(mandatory=$False,HelpMessage='The name of the web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus relay.)')]
        [string]
        $relayName,
        [parameter(mandatory=$False,HelpMessage='The suffix for the service bus endpoint. By default this is .servicebus.windows.net)')]
        [string]
        $serviceBusSuffix,
        [parameter(mandatory=$False,HelpMessage='The port of the endpoint.)')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage='The name of the Service Bus namespace.)')]
        [string]
        $serviceBusNamespace,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["namespaceName"] = $namespaceName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebAppServiceEnvironmentPrivateEndpointConnection
{
    [Alias('azure_native_web_appserviceenvironmentprivateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service Environment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The state of a private link connection)')]
        [PrivateLinkConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebStaticSiteCustomDomain
{
    [Alias('azure_native_web_staticsitecustomdomain')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the static site.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The custom domain to create.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='Validation method for adding a custom domain)')]
        [string]
        $validationMethod,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebAppServicePlanRouteForVnet
{
    [Alias('azure_native_web_appserviceplanrouteforvnet')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Virtual Network.)')]
        [string]
        $vnetName,
        [parameter(mandatory=$False,HelpMessage='Name of the Virtual Network route.)')]
        [string]
        $routeName,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service plan.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.)')]
        [string]
        $startAddress,
        [parameter(mandatory=$False,HelpMessage='The type of route this is:
DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
INHERITED - Routes inherited from the real Virtual Network routes
STATIC - Static route set on the app only

These values will be used for syncing an app''s routes with those from a Virtual Network.)'
)]
        [string]
        [ArgumentCompletions('DEFAULT', 'INHERITED', 'STATIC')]
        $routeType,
        [parameter(mandatory=$False,HelpMessage='The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.)')]
        [string]
        $endAddress,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["vnetName"] = $vnetName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppSwiftVirtualNetworkConnection
{
    [Alias('azure_native_web_webappswiftvirtualnetworkconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='A flag that specifies if the scale unit this Web App is on supports Swift integration.)')]
        [bool]
        $swiftSupported,
        [parameter(mandatory=$False,HelpMessage='The Virtual Network subnet''s resource ID. This is the subnet that this Web App will join. This subnet must have a delegation to Microsoft.Web/serverFarms defined first.)')]
        [string]
        $subnetResourceId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebCertificate
{
    [Alias('azure_native_web_certificate')]
    param (
        [parameter(mandatory=$False,HelpMessage='Pfx blob.)')]
        [string]
        $pfxBlob,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Key Vault secret name.)')]
        [string]
        $keyVaultSecretName,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Certificate password.)')]
        [string]
        $password,
        [parameter(mandatory=$False,HelpMessage='CNAME of the certificate to be issued via free certificate)')]
        [string]
        $canonicalName,
        [parameter(mandatory=$False,HelpMessage='Name of the certificate.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Method of domain validation for free cert)')]
        [string]
        $domainValidationMethod,
        [parameter(mandatory=$False,HelpMessage='Host names the certificate applies to.)')]
        [string[]]
        $hostNames,
        [parameter(mandatory=$False,HelpMessage='Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".)')]
        [string]
        $serverFarmId,
        [parameter(mandatory=$False,HelpMessage='Key Vault Csm resource Id.)')]
        [string]
        $keyVaultId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppDeploymentSlot
{
    [Alias('azure_native_web_webappdeploymentslot')]
    param (
        [parameter(mandatory=$False,HelpMessage='Author email.)')]
        [string]
        $authorEmail,
        [parameter(mandatory=$False,HelpMessage='Name of the deployment slot. If a slot is not specified, the API creates a deployment for the production slot.)')]
        [string]
        $slot,
        [parameter(mandatory=$False,HelpMessage='End time.)')]
        [string]
        $endTime,
        [parameter(mandatory=$False,HelpMessage='Who authored the deployment.)')]
        [string]
        $author,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Details about deployment status.)')]
        [string]
        $message,
        [parameter(mandatory=$False,HelpMessage='Deployment status.)')]
        [int]
        $status,
        [parameter(mandatory=$False,HelpMessage='Details on deployment.)')]
        [string]
        $details,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Who performed the deployment.)')]
        [string]
        $deployer,
        [parameter(mandatory=$False,HelpMessage='Start time.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='True if deployment is currently active, false if completed and null if not started.)')]
        [bool]
        $active,
        [parameter(mandatory=$False,HelpMessage='ID of an existing deployment.)')]
        [string]
        $id,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["slot"] = $slot

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppVnetConnection
{
    [Alias('azure_native_web_webappvnetconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='A certificate file (.cer) blob containing the public key of the private key used to authenticate a
Point-To-Site VPN connection.)'
)]
        [string]
        $certBlob,
        [parameter(mandatory=$False,HelpMessage='Name of an existing Virtual Network.)')]
        [string]
        $vnetName,
        [parameter(mandatory=$False,HelpMessage='The Virtual Network''s resource ID.)')]
        [string]
        $vnetResourceId,
        [parameter(mandatory=$False,HelpMessage='DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.)')]
        [string]
        $dnsServers,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Flag that is used to denote if this is VNET injection)')]
        [bool]
        $isSwift,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppMetadata
{
    [Alias('azure_native_web_webappmetadata')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Settings.)')]
        [hashtable]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class StaticSiteBuildProperties
{
    [string] $apiLocation
    [string] $appArtifactLocation
    [string] $apiBuildCommand
    [bool] $skipGithubActionWorkflowGeneration
    [string] $appBuildCommand
    [string] $githubActionSecretNameOverride
    [string] $outputLocation
    [string] $appLocation
}
function New-AzureNativeTypeWebStaticSiteBuildProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The path to the api code within the repository.)')]
        [string]
        $apiLocation,
        [parameter(mandatory=$False,HelpMessage='Deprecated: The path of the app artifacts after building (deprecated in favor of OutputLocation))')]
        [string]
        $appArtifactLocation,
        [parameter(mandatory=$False,HelpMessage='A custom command to run during deployment of the Azure Functions API application.)')]
        [string]
        $apiBuildCommand,
        [parameter(mandatory=$False,HelpMessage='Skip Github Action workflow generation.)')]
        [bool]
        $skipGithubActionWorkflowGeneration,
        [parameter(mandatory=$False,HelpMessage='A custom command to run during deployment of the static content application.)')]
        [string]
        $appBuildCommand,
        [parameter(mandatory=$False,HelpMessage='Github Action secret name override.)')]
        [string]
        $githubActionSecretNameOverride,
        [parameter(mandatory=$False,HelpMessage='The output path of the app after building.)')]
        [string]
        $outputLocation,
        [parameter(mandatory=$False,HelpMessage='The path to the app code within the repository.)')]
        [string]
        $appLocation
    )

    process
    {
        return $([StaticSiteBuildProperties]$PSBoundParameters)
    }
}
class StaticSiteTemplateOptions
{
    [string] $owner
    [bool] $isPrivate
    [string] $repositoryName
    [string] $templateRepositoryUrl
    [string] $description
}
function New-AzureNativeTypeWebStaticSiteTemplateOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage='Owner of the newly generated repository.)')]
        [string]
        $owner,
        [parameter(mandatory=$False,HelpMessage='Whether or not the newly generated repository is a private repository. Defaults to false (i.e. public).)')]
        [bool]
        $isPrivate,
        [parameter(mandatory=$False,HelpMessage='Name of the newly generated repository.)')]
        [string]
        $repositoryName,
        [parameter(mandatory=$False,HelpMessage='URL of the template repository. The newly generated repository will be based on this one.)')]
        [string]
        $templateRepositoryUrl,
        [parameter(mandatory=$False,HelpMessage='Description of the newly generated repository.)')]
        [string]
        $description
    )

    process
    {
        return $([StaticSiteTemplateOptions]$PSBoundParameters)
    }
}
function New-AzureNativeWebStaticSite
{
    [Alias('azure_native_web_staticsite')]
    param (
        [parameter(mandatory=$False,HelpMessage='State indicating whether staging environments are allowed or not allowed for a static web app.)')]
        $stagingEnvironmentPolicy,
        [parameter(mandatory=$False,HelpMessage='Description of a SKU for a scalable resource.)')]
        [SkuDescription]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='<code>false</code> if config file is locked for this static web app; otherwise, <code>true</code>.)')]
        [bool]
        $allowConfigFileUpdates,
        [parameter(mandatory=$False,HelpMessage='The target branch in the repository.)')]
        [string]
        $branch,
        [parameter(mandatory=$False,HelpMessage='Resource Location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='URL for the repository of the static site.)')]
        [string]
        $repositoryUrl,
        [parameter(mandatory=$False,HelpMessage='Name of the static site to create or update.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A user''s github repository token. This is used to setup the Github Actions workflow file and API secrets.)')]
        [string]
        $repositoryToken,
        [parameter(mandatory=$False,HelpMessage='Managed service identity.)')]
        [ManagedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Build properties to configure on the repository.)')]
        [StaticSiteBuildProperties]
        $buildProperties,
        [parameter(mandatory=$False,HelpMessage='Template options for generating a new repository.)')]
        [StaticSiteTemplateOptions]
        $templateProperties,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebAppServiceEnvironmentAseCustomDnsSuffixConfiguration
{
    [Alias('azure_native_web_appserviceenvironmentasecustomdnssuffixconfiguration')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The default custom domain suffix to use for all sites deployed on the ASE.)')]
        [string]
        $dnsSuffix,
        [parameter(mandatory=$False,HelpMessage='Name of the App Service Environment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The user-assigned identity to use for resolving the key vault certificate reference. If not specified, the system-assigned ASE identity will be used if available.)')]
        [string]
        $keyVaultReferenceIdentity,
        [parameter(mandatory=$False,HelpMessage='The URL referencing the Azure Key Vault certificate secret that should be used as the default SSL/TLS certificate for sites with the custom domain suffix.)')]
        [string]
        $certificateUrl,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWebWebAppAuthSettingsV2
{
    [Alias('azure_native_web_webappauthsettingsv2')]
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of each of the identity providers used to configure App Service Authentication/Authorization.)')]
        [IdentityProviders]
        $identityProviders,
        [parameter(mandatory=$False,HelpMessage='The configuration settings that determines the validation flow of users using App Service Authentication/Authorization.)')]
        [GlobalValidation]
        $globalValidation,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group to which the resource belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow of users using App Service Authentication/Authorization.)')]
        [Login]
        $login,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the HTTP requests for authentication and authorization requests made against App Service Authentication/Authorization.)')]
        [HttpSettings]
        $httpSettings,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the platform of App Service Authentication/Authorization.)')]
        [AuthPlatform]
        $platform,
        [parameter(mandatory=$False,HelpMessage='Name of web app.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Kind of resource.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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