pspulumiyaml.azurenative.app.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionAppGetManagedEnvironmentsStorage
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the storage.)')]
        [string]
        $storageName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Environment.)')]
        [string]
        $environmentName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:getManagedEnvironmentsStorage -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppListContainerAppSecrets
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $containerAppName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:listContainerAppSecrets -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppGetContainerAppsAuthConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $containerAppName,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App AuthConfig.)')]
        [string]
        $authConfigName
    )

    process
    {
        $arguments = @{}
        $arguments["authConfigName"] = $authConfigName
        $arguments["containerAppName"] = $containerAppName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:getContainerAppsAuthConfig -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppListDaprComponentSecrets
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Dapr Component.)')]
        [string]
        $componentName,
        [parameter(mandatory=$False,HelpMessage='Name of the Managed Environment.)')]
        [string]
        $environmentName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:listDaprComponentSecrets -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppGetManagedEnvironment
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Environment.)')]
        [string]
        $environmentName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:getManagedEnvironment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppGetCertificate
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Certificate.)')]
        [string]
        $certificateName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Managed Environment.)')]
        [string]
        $environmentName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:getCertificate -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppListContainerAppCustomHostNameAnalysis
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Custom hostname.)')]
        [string]
        $customHostname,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $containerAppName
    )

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:listContainerAppCustomHostNameAnalysis -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppGetContainerAppsSourceControl
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Container App SourceControl.)')]
        [string]
        $sourceControlName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $containerAppName
    )

    process
    {
        $arguments = @{}
        $arguments["containerAppName"] = $containerAppName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["sourceControlName"] = $sourceControlName

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:getContainerAppsSourceControl -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppGetContainerApp
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $containerAppName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:getContainerApp -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppGetDaprComponent
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Dapr Component.)')]
        [string]
        $componentName,
        [parameter(mandatory=$False,HelpMessage='Name of the Managed Environment.)')]
        [string]
        $environmentName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:app:getDaprComponent -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class RegistryInfo
{
    [string] $registryUrl
    [string] $registryUserName
    [string] $registryPassword
}
function New-AzureNativeTypeAppRegistryInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='registry server Url.)')]
        [string]
        $registryUrl,
        [parameter(mandatory=$False,HelpMessage='registry username.)')]
        [string]
        $registryUserName,
        [parameter(mandatory=$False,HelpMessage='registry secret.)')]
        [string]
        $registryPassword
    )

    process
    {
        return $([RegistryInfo]$PSBoundParameters)
    }
}
class AzureCredentials
{
    [string] $clientSecret
    [string] $clientId
    [string] $tenantId
    [string] $subscriptionId
}
function New-AzureNativeTypeAppAzureCredentials
{
    param (
        [parameter(mandatory=$False,HelpMessage='Client Secret.)')]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='Client Id.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='Tenant Id.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='Subscription Id.)')]
        [string]
        $subscriptionId
    )

    process
    {
        return $([AzureCredentials]$PSBoundParameters)
    }
}
class GithubActionConfiguration
{
    [string] $publishType
    [string] $runtimeStack
    [string] $image
    [string] $contextPath
    [RegistryInfo] $registryInfo
    [AzureCredentials] $azureCredentials
    [string] $os
    [string] $runtimeVersion
}
function New-AzureNativeTypeAppGithubActionConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Code or Image)')]
        [string]
        $publishType,
        [parameter(mandatory=$False,HelpMessage='Runtime stack)')]
        [string]
        $runtimeStack,
        [parameter(mandatory=$False,HelpMessage='Image name)')]
        [string]
        $image,
        [parameter(mandatory=$False,HelpMessage='Context path)')]
        [string]
        $contextPath,
        [parameter(mandatory=$False,HelpMessage='Registry configurations.)')]
        [RegistryInfo]
        $registryInfo,
        [parameter(mandatory=$False,HelpMessage='AzureCredentials configurations.)')]
        [AzureCredentials]
        $azureCredentials,
        [parameter(mandatory=$False,HelpMessage='Operation system)')]
        [string]
        $os,
        [parameter(mandatory=$False,HelpMessage='Runtime version)')]
        [string]
        $runtimeVersion
    )

    process
    {
        return $([GithubActionConfiguration]$PSBoundParameters)
    }
}
function New-AzureNativeAppContainerAppsSourceControl
{
    [Alias('azure_native_app_containerappssourcecontrol')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The repo url which will be integrated to ContainerApp.)')]
        [string]
        $repoUrl,
        [parameter(mandatory=$False,HelpMessage='Container App Revision Template with all possible settings and the
defaults if user did not provide them. The defaults are populated
as they were at the creation time)'
)]
        [GithubActionConfiguration]
        $githubActionConfiguration,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App SourceControl.)')]
        [string]
        $sourceControlName,
        [parameter(mandatory=$False,HelpMessage='The branch which will trigger the auto deployment)')]
        [string]
        $branch,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $containerAppName,
        [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:app:ContainerAppsSourceControl")

        $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["containerAppName"] = $containerAppName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ManagedServiceIdentity
{
    [ArgumentCompletions('None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned')]
    [string] $type
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeAppManagedServiceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).)')]
        [string]
        [ArgumentCompletions('None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty objects ({}) in requests.)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([ManagedServiceIdentity]$PSBoundParameters)
    }
}
class RegistryCredentials
{
    [string] $server
    [string] $passwordSecretRef
    [string] $identity
    [string] $username
}
function New-AzureNativeTypeAppRegistryCredentials
{
    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='A Managed Identity to use to authenticate with Azure Container Registry. For user-assigned identities, use the full user-assigned identity Resource ID. For system-assigned identities, use ''system'')')]
        [string]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Container Registry Username)')]
        [string]
        $username
    )

    process
    {
        return $([RegistryCredentials]$PSBoundParameters)
    }
}
class TrafficWeight
{
    [string] $revisionName
    [string] $label
    [int] $weight
    [bool] $latestRevision
}
function New-AzureNativeTypeAppTrafficWeight
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of a revision)')]
        [string]
        $revisionName,
        [parameter(mandatory=$False,HelpMessage='Associates a traffic label with a revision)')]
        [string]
        $label,
        [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 CustomDomain
{
    [string] $name
    [ArgumentCompletions('Disabled', 'SniEnabled')]
    [string] $bindingType
    [string] $certificateId
}
function New-AzureNativeTypeAppCustomDomain
{
    param (
        [parameter(mandatory=$False,HelpMessage='Hostname.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Custom Domain binding type.)')]
        [string]
        [ArgumentCompletions('Disabled', 'SniEnabled')]
        $bindingType,
        [parameter(mandatory=$False,HelpMessage='Resource Id of the Certificate to be bound to this hostname. Must exist in the Managed Environment.)')]
        [string]
        $certificateId
    )

    process
    {
        return $([CustomDomain]$PSBoundParameters)
    }
}
class Ingress
{
    [TrafficWeight[]] $traffic
    [bool] $allowInsecure
    [int] $targetPort
    [CustomDomain[]] $customDomains
    [bool] $external
    [ArgumentCompletions('auto', 'http', 'http2')]
    [string] $transport
}
function New-AzureNativeTypeAppIngress
{
    param (
        [parameter(mandatory=$False,HelpMessage='Traffic weights for app''s revisions)')]
        $traffic,
        [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,
        [parameter(mandatory=$False,HelpMessage='Target Port in containers for traffic from ingress)')]
        [int]
        $targetPort,
        [parameter(mandatory=$False,HelpMessage='custom domain bindings for Container Apps'' hostnames.)')]
        $customDomains,
        [parameter(mandatory=$False,HelpMessage='Bool indicating if app exposes an external http endpoint)')]
        [bool]
        $external,
        [parameter(mandatory=$False,HelpMessage='Ingress transport protocol)')]
        [string]
        [ArgumentCompletions('auto', 'http', 'http2')]
        $transport
    )

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

    process
    {
        return $([Secret]$PSBoundParameters)
    }
}
class Dapr
{
    [string] $appId
    [bool] $enabled
    [ArgumentCompletions('http', 'grpc')]
    [string] $appProtocol
    [int] $appPort
}
function New-AzureNativeTypeAppDapr
{
    param (
        [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='Tells Dapr which protocol your application is using. Valid options are http and grpc. Default is http)')]
        [string]
        [ArgumentCompletions('http', 'grpc')]
        $appProtocol,
        [parameter(mandatory=$False,HelpMessage='Tells Dapr which port your application is listening on)')]
        [int]
        $appPort
    )

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

    process
    {
        return $([Configuration]$PSBoundParameters)
    }
}
class Volume
{
    [string] $storageName
    [string] $name
    [ArgumentCompletions('AzureFile', 'EmptyDir')]
    [string] $storageType
}
function New-AzureNativeTypeAppVolume
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of storage resource. No need to provide for EmptyDir.)')]
        [string]
        $storageName,
        [parameter(mandatory=$False,HelpMessage='Volume name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Storage type for the volume. If not provided, use EmptyDir.)')]
        [string]
        [ArgumentCompletions('AzureFile', 'EmptyDir')]
        $storageType
    )

    process
    {
        return $([Volume]$PSBoundParameters)
    }
}
class EnvironmentVar
{
    [string] $name
    [string] $secretRef
    [string] $value
}
function New-AzureNativeTypeAppEnvironmentVar
{
    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 VolumeMount
{
    [string] $mountPath
    [string] $volumeName
}
function New-AzureNativeTypeAppVolumeMount
{
    param (
        [parameter(mandatory=$False,HelpMessage='Path within the container at which the volume should be mounted.Must not contain '':''.)')]
        [string]
        $mountPath,
        [parameter(mandatory=$False,HelpMessage='This must match the Name of a Volume.)')]
        [string]
        $volumeName
    )

    process
    {
        return $([VolumeMount]$PSBoundParameters)
    }
}
class ContainerAppProbeTcpSocket
{
    [string] $host
    [int] $port
}
function New-AzureNativeTypeAppContainerAppProbeTcpSocket
{
    param (
        [parameter(mandatory=$False,HelpMessage='Optional: Host name to connect to, defaults to the pod IP.)')]
        [string]
        $host,
        [parameter(mandatory=$False,HelpMessage='Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.)')]
        [int]
        $port
    )

    process
    {
        return $([ContainerAppProbeTcpSocket]$PSBoundParameters)
    }
}
class ContainerAppProbeHttpHeaders
{
    [string] $name
    [string] $value
}
function New-AzureNativeTypeAppContainerAppProbeHttpHeaders
{
    param (
        [parameter(mandatory=$False,HelpMessage='The header field name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The header field value)')]
        [string]
        $value
    )

    process
    {
        return $([ContainerAppProbeHttpHeaders]$PSBoundParameters)
    }
}
class ContainerAppProbeHttpGet
{
    [int] $port
    [ArgumentCompletions('HTTP', 'HTTPS')]
    [string] $scheme
    [string] $host
    [string] $path
    [ContainerAppProbeHttpHeaders[]] $httpHeaders
}
function New-AzureNativeTypeAppContainerAppProbeHttpGet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.)')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage='Scheme to use for connecting to the host. Defaults to HTTP.)')]
        [string]
        [ArgumentCompletions('HTTP', 'HTTPS')]
        $scheme,
        [parameter(mandatory=$False,HelpMessage='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.)')]
        [string]
        $host,
        [parameter(mandatory=$False,HelpMessage='Path to access on the HTTP server.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='Custom headers to set in the request. HTTP allows repeated headers.)')]
        $httpHeaders
    )

    process
    {
        return $([ContainerAppProbeHttpGet]$PSBoundParameters)
    }
}
class ContainerAppProbe
{
    [ContainerAppProbeTcpSocket] $tcpSocket
    [int] $terminationGracePeriodSeconds
    [int] $timeoutSeconds
    [int] $periodSeconds
    [int] $successThreshold
    [ArgumentCompletions('Liveness', 'Readiness', 'Startup')]
    [string] $type
    [int] $initialDelaySeconds
    [int] $failureThreshold
    [ContainerAppProbeHttpGet] $httpGet
}
function New-AzureNativeTypeAppContainerAppProbe
{
    param (
        [parameter(mandatory=$False,HelpMessage='TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported.)')]
        [ContainerAppProbeTcpSocket]
        $tcpSocket,
        [parameter(mandatory=$False,HelpMessage='Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod''s terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate. Maximum value is 3600 seconds (1 hour))')]
        [int]
        $terminationGracePeriodSeconds,
        [parameter(mandatory=$False,HelpMessage='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 240.)')]
        [int]
        $timeoutSeconds,
        [parameter(mandatory=$False,HelpMessage='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value is 240.)')]
        [int]
        $periodSeconds,
        [parameter(mandatory=$False,HelpMessage='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. Maximum value is 10.)')]
        [int]
        $successThreshold,
        [parameter(mandatory=$False,HelpMessage='The type of probe.)')]
        [string]
        [ArgumentCompletions('Liveness', 'Readiness', 'Startup')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Number of seconds after the container has started before liveness probes are initiated. Minimum value is 1. Maximum value is 60.)')]
        [int]
        $initialDelaySeconds,
        [parameter(mandatory=$False,HelpMessage='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. Maximum value is 10.)')]
        [int]
        $failureThreshold,
        [parameter(mandatory=$False,HelpMessage='HTTPGet specifies the http request to perform.)')]
        [ContainerAppProbeHttpGet]
        $httpGet
    )

    process
    {
        return $([ContainerAppProbe]$PSBoundParameters)
    }
}
class ContainerResources
{
    [string] $memory
    [int] $cpu
}
function New-AzureNativeTypeAppContainerResources
{
    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
    [VolumeMount[]] $volumeMounts
    [string] $image
    [string[]] $args
    [string[]] $command
    [string] $name
    [ContainerAppProbe[]] $probes
    [ContainerResources] $resources
}
function New-AzureNativeTypeAppContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container environment variables.)')]
        $env,
        [parameter(mandatory=$False,HelpMessage='Container volume mounts.)')]
        $volumeMounts,
        [parameter(mandatory=$False,HelpMessage='Container image tag.)')]
        [string]
        $image,
        [parameter(mandatory=$False,HelpMessage='Container start command arguments.)')]
        [string[]]
        $args,
        [parameter(mandatory=$False,HelpMessage='Container start command.)')]
        [string[]]
        $command,
        [parameter(mandatory=$False,HelpMessage='Custom container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='List of probes for the container.)')]
        $probes,
        [parameter(mandatory=$False,HelpMessage='Container resource requirements.)')]
        [ContainerResources]
        $resources
    )

    process
    {
        return $([Container]$PSBoundParameters)
    }
}
class ScaleRuleAuth
{
    [string] $triggerParameter
    [string] $secretRef
}
function New-AzureNativeTypeAppScaleRuleAuth
{
    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-AzureNativeTypeAppHttpScaleRule
{
    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-AzureNativeTypeAppQueueScaleRule
{
    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-AzureNativeTypeAppCustomScaleRule
{
    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-AzureNativeTypeAppScaleRule
{
    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-AzureNativeTypeAppScale
{
    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
    [Volume[]] $volumes
    [Container[]] $containers
    [Scale] $scale
}
function New-AzureNativeTypeAppTemplate
{
    param (
        [parameter(mandatory=$False,HelpMessage='User friendly suffix that is appended to the revision name)')]
        [string]
        $revisionSuffix,
        [parameter(mandatory=$False,HelpMessage='List of volume definitions for the Container App.)')]
        $volumes,
        [parameter(mandatory=$False,HelpMessage='List of container definitions for the Container App.)')]
        $containers,
        [parameter(mandatory=$False,HelpMessage='Scaling properties for the Container App.)')]
        [Scale]
        $scale
    )

    process
    {
        return $([Template]$PSBoundParameters)
    }
}
function New-AzureNativeAppContainerApp
{
    [Alias('azure_native_app_containerapp')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource ID of the Container App''s environment.)')]
        [string]
        $managedEnvironmentId,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='managed identities for the Container App to interact with other Azure services without maintaining any secrets or credentials in code.)')]
        [ManagedServiceIdentity]
        $identity,
        [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='Name of the Container App.)')]
        [string]
        $containerAppName,
        [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:app: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 'managedEnvironmentId')
        {
            $resource.properties["managedEnvironmentId"] = $managedEnvironmentId
        }

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAppDaprComponent
{
    [Alias('azure_native_app_daprcomponent')]
    param (
        [parameter(mandatory=$False,HelpMessage='Collection of secrets used by a Dapr component)')]
        $secrets,
        [parameter(mandatory=$False,HelpMessage='Name of the Managed Environment.)')]
        [string]
        $environmentName,
        [parameter(mandatory=$False,HelpMessage='Boolean describing if the component errors are ignores)')]
        [bool]
        $ignoreErrors,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Dapr Component.)')]
        [string]
        $componentName,
        [parameter(mandatory=$False,HelpMessage='Component metadata)')]
        $metadata,
        [parameter(mandatory=$False,HelpMessage='Initialization timeout)')]
        [string]
        $initTimeout,
        [parameter(mandatory=$False,HelpMessage='Component version)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Names of container apps that can use this Dapr component)')]
        [string[]]
        $scopes,
        [parameter(mandatory=$False,HelpMessage='Component type)')]
        [string]
        $componentType,
        [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:app:DaprComponent")

        $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["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AzureFileProperties
{
    [string] $accountName
    [string] $shareName
    [ArgumentCompletions('ReadOnly', 'ReadWrite')]
    [string] $accessMode
    [string] $accountKey
}
function New-AzureNativeTypeAppAzureFileProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Storage account name for azure file.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='Azure file share name.)')]
        [string]
        $shareName,
        [parameter(mandatory=$False,HelpMessage='Access mode for storage)')]
        [string]
        [ArgumentCompletions('ReadOnly', 'ReadWrite')]
        $accessMode,
        [parameter(mandatory=$False,HelpMessage='Storage account key for azure file.)')]
        [string]
        $accountKey
    )

    process
    {
        return $([AzureFileProperties]$PSBoundParameters)
    }
}
class ManagedEnvironmentStorageProperties
{
    [AzureFileProperties] $azureFile
}
function New-AzureNativeTypeAppManagedEnvironmentStorageProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Azure file properties)')]
        [AzureFileProperties]
        $azureFile
    )

    process
    {
        return $([ManagedEnvironmentStorageProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppManagedEnvironmentsStorage
{
    [Alias('azure_native_app_managedenvironmentsstorage')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the storage.)')]
        [string]
        $storageName,
        [parameter(mandatory=$False,HelpMessage='Storage properties)')]
        [ManagedEnvironmentStorageProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Environment.)')]
        [string]
        $environmentName,
        [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:app:ManagedEnvironmentsStorage")

        $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["resourceGroupName"] = $resourceGroupName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AppleRegistration
{
    [string] $clientId
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeAppAppleRegistration
{
    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 LoginScopes
{
    [string[]] $scopes
}
function New-AzureNativeTypeAppLoginScopes
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of the scopes that should be requested while authenticating.)')]
        [string[]]
        $scopes
    )

    process
    {
        return $([LoginScopes]$PSBoundParameters)
    }
}
class Apple
{
    [AppleRegistration] $registration
    [LoginScopes] $login
    [bool] $enabled
}
function New-AzureNativeTypeAppApple
{
    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 TwitterRegistration
{
    [string] $consumerSecretSettingName
    [string] $consumerKey
}
function New-AzureNativeTypeAppTwitterRegistration
{
    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-AzureNativeTypeAppTwitter
{
    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 ClientRegistration
{
    [string] $clientId
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeAppClientRegistration
{
    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 AllowedAudiencesValidation
{
    [string[]] $allowedAudiences
}
function New-AzureNativeTypeAppAllowedAudiencesValidation
{
    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-AzureNativeTypeAppGoogle
{
    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 AzureStaticWebAppsRegistration
{
    [string] $clientId
}
function New-AzureNativeTypeAppAzureStaticWebAppsRegistration
{
    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-AzureNativeTypeAppAzureStaticWebApps
{
    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 AppRegistration
{
    [string] $appId
    [string] $appSecretSettingName
}
function New-AzureNativeTypeAppAppRegistration
{
    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-AzureNativeTypeAppFacebook
{
    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-AzureNativeTypeAppGitHub
{
    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 AzureActiveDirectoryRegistration
{
    [string] $clientSecretCertificateThumbprint
    [string] $clientSecretCertificateSubjectAlternativeName
    [string] $clientId
    [string] $clientSecretCertificateIssuer
    [string] $openIdIssuer
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeAppAzureActiveDirectoryRegistration
{
    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-AzureNativeTypeAppAzureActiveDirectoryLogin
{
    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 AllowedPrincipals
{
    [string[]] $identities
    [string[]] $groups
}
function New-AzureNativeTypeAppAllowedPrincipals
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of the allowed identities.)')]
        [string[]]
        $identities,
        [parameter(mandatory=$False,HelpMessage='The list of the allowed groups.)')]
        [string[]]
        $groups
    )

    process
    {
        return $([AllowedPrincipals]$PSBoundParameters)
    }
}
class DefaultAuthorizationPolicy
{
    [string[]] $allowedApplications
    [AllowedPrincipals] $allowedPrincipals
}
function New-AzureNativeTypeAppDefaultAuthorizationPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active Directory allowed applications.)')]
        [string[]]
        $allowedApplications,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active Directory allowed principals.)')]
        [AllowedPrincipals]
        $allowedPrincipals
    )

    process
    {
        return $([DefaultAuthorizationPolicy]$PSBoundParameters)
    }
}
class JwtClaimChecks
{
    [string[]] $allowedGroups
    [string[]] $allowedClientApplications
}
function New-AzureNativeTypeAppJwtClaimChecks
{
    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
{
    [DefaultAuthorizationPolicy] $defaultAuthorizationPolicy
    [string[]] $allowedAudiences
    [JwtClaimChecks] $jwtClaimChecks
}
function New-AzureNativeTypeAppAzureActiveDirectoryValidation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the default authorization policy.)')]
        [DefaultAuthorizationPolicy]
        $defaultAuthorizationPolicy,
        [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-AzureNativeTypeAppAzureActiveDirectory
{
    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 IdentityProviders
{
    [Apple] $apple
    [Twitter] $twitter
    [Google] $google
    [AzureStaticWebApps] $azureStaticWebApps
    [object] $customOpenIdConnectProviders
    [Facebook] $facebook
    [GitHub] $gitHub
    [AzureActiveDirectory] $azureActiveDirectory
}
class OpenIdConnectClientCredential
{
    [ArgumentCompletions('ClientSecretPost')]
    [object] $method
    [string] $clientSecretSettingName
}
function New-AzureNativeTypeAppOpenIdConnectClientCredential
{
    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-AzureNativeTypeAppOpenIdConnectConfig
{
    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-AzureNativeTypeAppOpenIdConnectRegistration
{
    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-AzureNativeTypeAppOpenIdConnectLogin
{
    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-AzureNativeTypeAppCustomOpenIdConnectProvider
{
    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-AzureNativeTypeAppIdentityProviders
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Apple provider.)')]
        [Apple]
        $apple,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Twitter provider.)')]
        [Twitter]
        $twitter,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Google provider.)')]
        [Google]
        $google,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Static Web Apps provider.)')]
        [AzureStaticWebApps]
        $azureStaticWebApps,
        [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 Facebook provider.)')]
        [Facebook]
        $facebook,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the GitHub provider.)')]
        [GitHub]
        $gitHub,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the Azure Active directory provider.)')]
        [AzureActiveDirectory]
        $azureActiveDirectory
    )

    process
    {
        return $([IdentityProviders]$PSBoundParameters)
    }
}
class GlobalValidation
{
    [string] $redirectToProvider
    [string[]] $excludedPaths
    [ArgumentCompletions('RedirectToLoginPage', 'AllowAnonymous', 'Return401', 'Return403')]
    [object] $unauthenticatedClientAction
}
function New-AzureNativeTypeAppGlobalValidation
{
    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='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 CookieExpiration
{
    [string] $timeToExpiration
    [ArgumentCompletions('FixedTime', 'IdentityProviderDerived')]
    [object] $convention
}
function New-AzureNativeTypeAppCookieExpiration
{
    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 LoginRoutes
{
    [string] $logoutEndpoint
}
function New-AzureNativeTypeAppLoginRoutes
{
    param (
        [parameter(mandatory=$False,HelpMessage='The endpoint at which a logout request should be made.)')]
        [string]
        $logoutEndpoint
    )

    process
    {
        return $([LoginRoutes]$PSBoundParameters)
    }
}
class Nonce
{
    [bool] $validateNonce
    [string] $nonceExpirationInterval
}
function New-AzureNativeTypeAppNonce
{
    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 Login
{
    [CookieExpiration] $cookieExpiration
    [bool] $preserveUrlFragmentsForLogins
    [string[]] $allowedExternalRedirectUrls
    [LoginRoutes] $routes
    [Nonce] $nonce
}
function New-AzureNativeTypeAppLogin
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the session cookie''s expiration.)')]
        [CookieExpiration]
        $cookieExpiration,
        [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='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='The routes that specify the endpoints used for login and logout requests.)')]
        [LoginRoutes]
        $routes,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the nonce used in the login flow.)')]
        [Nonce]
        $nonce
    )

    process
    {
        return $([Login]$PSBoundParameters)
    }
}
class HttpSettingsRoutes
{
    [string] $apiPrefix
}
function New-AzureNativeTypeAppHttpSettingsRoutes
{
    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-AzureNativeTypeAppForwardProxy
{
    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-AzureNativeTypeAppHttpSettings
{
    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)
    }
}
class AuthPlatform
{
    [bool] $enabled
    [string] $runtimeVersion
}
function New-AzureNativeTypeAppAuthPlatform
{
    param (
        [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)
    }
}
function New-AzureNativeAppContainerAppsAuthConfig
{
    [Alias('azure_native_app_containerappsauthconfig')]
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration settings of each of the identity providers used to configure ContainerApp Service Authentication/Authorization.)')]
        [IdentityProviders]
        $identityProviders,
        [parameter(mandatory=$False,HelpMessage='The configuration settings that determines the validation flow of users using Service Authentication/Authorization.)')]
        [GlobalValidation]
        $globalValidation,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App AuthConfig.)')]
        [string]
        $authConfigName,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the login flow of users using ContainerApp Service Authentication/Authorization.)')]
        [Login]
        $login,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the HTTP requests for authentication and authorization requests made against ContainerApp Service Authentication/Authorization.)')]
        [HttpSettings]
        $httpSettings,
        [parameter(mandatory=$False,HelpMessage='The configuration settings of the platform of ContainerApp Service Authentication/Authorization.)')]
        [AuthPlatform]
        $platform,
        [parameter(mandatory=$False,HelpMessage='Name of the Container App.)')]
        [string]
        $containerAppName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [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:app:ContainerAppsAuthConfig")

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

        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
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class CertificateProperties
{
    [string] $value
    [string] $password
}
function New-AzureNativeTypeAppCertificateProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='PFX or PEM blob)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Certificate password.)')]
        [string]
        $password
    )

    process
    {
        return $([CertificateProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppCertificate
{
    [Alias('azure_native_app_certificate')]
    param (
        [parameter(mandatory=$False,HelpMessage='Certificate resource specific properties)')]
        [CertificateProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the Managed Environment.)')]
        [string]
        $environmentName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the Certificate.)')]
        [string]
        $certificateName,
        [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:app: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["environmentName"] = $environmentName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VnetConfiguration
{
    [string] $platformReservedCidr
    [string] $runtimeSubnetId
    [string] $platformReservedDnsIP
    [string] $dockerBridgeCidr
    [bool] $internal
    [string] $infrastructureSubnetId
}
function New-AzureNativeTypeAppVnetConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='IP range in CIDR notation that can be reserved for environment infrastructure IP addresses. Must not overlap with any other provided IP ranges.)')]
        [string]
        $platformReservedCidr,
        [parameter(mandatory=$False,HelpMessage='Resource ID of a subnet that Container App containers are injected into. This subnet must be in the same VNET as the subnet defined in infrastructureSubnetId. Must not overlap with any other provided IP ranges.)')]
        [string]
        $runtimeSubnetId,
        [parameter(mandatory=$False,HelpMessage=' An IP address from the IP range defined by platformReservedCidr that will be reserved for the internal DNS server.)')]
        [string]
        $platformReservedDnsIP,
        [parameter(mandatory=$False,HelpMessage='CIDR notation IP range assigned to the Docker bridge, network. Must not overlap with any other provided IP ranges.)')]
        [string]
        $dockerBridgeCidr,
        [parameter(mandatory=$False,HelpMessage='Boolean indicating the environment only has an internal load balancer. These environments do not have a public static IP resource. They must provide runtimeSubnetId and infrastructureSubnetId if enabling this property)')]
        [bool]
        $internal,
        [parameter(mandatory=$False,HelpMessage='Resource ID of a subnet for infrastructure components. This subnet must be in the same VNET as the subnet defined in runtimeSubnetId. Must not overlap with any other provided IP ranges.)')]
        [string]
        $infrastructureSubnetId
    )

    process
    {
        return $([VnetConfiguration]$PSBoundParameters)
    }
}
class LogAnalyticsConfiguration
{
    [string] $customerId
    [string] $sharedKey
}
function New-AzureNativeTypeAppLogAnalyticsConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Log analytics customer id)')]
        [string]
        $customerId,
        [parameter(mandatory=$False,HelpMessage='Log analytics customer key)')]
        [string]
        $sharedKey
    )

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

    process
    {
        return $([AppLogsConfiguration]$PSBoundParameters)
    }
}
function New-AzureNativeAppManagedEnvironment
{
    [Alias('azure_native_app_managedenvironment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the Environment.)')]
        [string]
        $environmentName,
        [parameter(mandatory=$False,HelpMessage='Whether or not this Managed Environment is zone-redundant.)')]
        [bool]
        $zoneRedundant,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Vnet configuration for the environment)')]
        [VnetConfiguration]
        $vnetConfiguration,
        [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='Azure Monitor instrumentation key used by Dapr to export Service to Service communication telemetry)')]
        [string]
        $daprAIInstrumentationKey,
        [parameter(mandatory=$False,HelpMessage='Application Insights connection string used by Dapr to export Service to Service communication telemetry)')]
        [string]
        $daprAIConnectionString,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [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:app:ManagedEnvironment")

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

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

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

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

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

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

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

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