pspulumiyaml.azurenative.appplatform.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionAppplatformGetAppResourceUploadUrl
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName
    )

    process
    {
        $arguments = @{}
        $arguments["appName"] = $appName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getAppResourceUploadUrl -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetBuildServiceBuildResultLog
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the build result resource.)')]
        [string]
        $buildResultName,
        [parameter(mandatory=$False,HelpMessage='The name of the build service resource.)')]
        [string]
        $buildServiceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the build resource.)')]
        [string]
        $buildName
    )

    process
    {
        $arguments = @{}
        $arguments["buildName"] = $buildName
        $arguments["buildResultName"] = $buildResultName
        $arguments["buildServiceName"] = $buildServiceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getBuildServiceBuildResultLog -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetApiPortalCustomDomain
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of API portal.)')]
        [string]
        $apiPortalName,
        [parameter(mandatory=$False,HelpMessage='The name of the API portal custom domain.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getApiPortalCustomDomain -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetBuildpackBinding
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Buildpack Binding Name)')]
        [string]
        $buildpackBindingName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the build service resource.)')]
        [string]
        $buildServiceName,
        [parameter(mandatory=$False,HelpMessage='The name of the builder resource.)')]
        [string]
        $builderName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["buildServiceName"] = $buildServiceName
        $arguments["builderName"] = $builderName
        $arguments["buildpackBindingName"] = $buildpackBindingName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getBuildpackBinding -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetApiPortal
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of API portal.)')]
        [string]
        $apiPortalName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["apiPortalName"] = $apiPortalName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getApiPortal -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetService
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetGateway
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Spring Cloud Gateway.)')]
        [string]
        $gatewayName
    )

    process
    {
        $arguments = @{}
        $arguments["gatewayName"] = $gatewayName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getGateway -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetServiceRegistry
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of Service Registry.)')]
        [string]
        $serviceRegistryName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName
        $arguments["serviceRegistryName"] = $serviceRegistryName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getServiceRegistry -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetBuildServiceResourceUploadUrl
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the build service resource.)')]
        [string]
        $buildServiceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["buildServiceName"] = $buildServiceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getBuildServiceResourceUploadUrl -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetApp
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Indicates whether sync status)')]
        [string]
        $syncStatus,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName
    )

    process
    {
        $arguments = @{}
        $arguments["appName"] = $appName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getApp -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetDeployment
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Deployment resource.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName
    )

    process
    {
        $arguments = @{}
        $arguments["appName"] = $appName
        $arguments["deploymentName"] = $deploymentName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getDeployment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetGatewayCustomDomain
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Spring Cloud Gateway custom domain.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Spring Cloud Gateway.)')]
        [string]
        $gatewayName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getGatewayCustomDomain -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetDeploymentLogFileUrl
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Deployment resource.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName
    )

    process
    {
        $arguments = @{}
        $arguments["appName"] = $appName
        $arguments["deploymentName"] = $deploymentName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getDeploymentLogFileUrl -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetStorage
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the storage resource.)')]
        [string]
        $storageName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getStorage -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetBinding
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Binding resource.)')]
        [string]
        $bindingName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName
    )

    process
    {
        $arguments = @{}
        $arguments["appName"] = $appName
        $arguments["bindingName"] = $bindingName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getBinding -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformListServiceTestKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:listServiceTestKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetCertificate
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the certificate resource.)')]
        [string]
        $certificateName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getCertificate -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetGatewayRouteConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Spring Cloud Gateway route config.)')]
        [string]
        $routeConfigName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Spring Cloud Gateway.)')]
        [string]
        $gatewayName
    )

    process
    {
        $arguments = @{}
        $arguments["gatewayName"] = $gatewayName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["routeConfigName"] = $routeConfigName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getGatewayRouteConfig -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetBuildServiceBuilder
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the build service resource.)')]
        [string]
        $buildServiceName,
        [parameter(mandatory=$False,HelpMessage='The name of the builder resource.)')]
        [string]
        $builderName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["buildServiceName"] = $buildServiceName
        $arguments["builderName"] = $builderName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getBuildServiceBuilder -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetConfigurationService
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Application Configuration Service.)')]
        [string]
        $configurationServiceName
    )

    process
    {
        $arguments = @{}
        $arguments["configurationServiceName"] = $configurationServiceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getConfigurationService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAppplatformGetCustomDomain
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the custom domain resource.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:appplatform:getCustomDomain -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class BindingResourceProperties
{
    [string] $resourceId
    [object] $bindingParameters
    [string] $key
}
function New-AzureNativeTypeAppplatformBindingResourceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Azure resource id of the bound resource)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='Binding parameters of the Binding resource)')]
        [object]
        $bindingParameters,
        [parameter(mandatory=$False,HelpMessage='The key of the bound resource)')]
        [string]
        $key
    )

    process
    {
        return $([BindingResourceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformBinding
{
    [Alias('azure_native_appplatform_binding')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Properties of the Binding resource)')]
        [BindingResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the Binding resource.)')]
        [string]
        $bindingName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName,
        [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:appplatform:Binding")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CertificateProperties
{
    [string] $certVersion
    [string] $vaultUri
    [string] $keyVaultCertName
}
function New-AzureNativeTypeAppplatformCertificateProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The certificate version of key vault.)')]
        [string]
        $certVersion,
        [parameter(mandatory=$False,HelpMessage='The vault uri of user key vault.)')]
        [string]
        $vaultUri,
        [parameter(mandatory=$False,HelpMessage='The certificate name of key vault.)')]
        [string]
        $keyVaultCertName
    )

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class DeploymentSettings
{
    [object] $environmentVariables
    [int] $cpu
    [ArgumentCompletions('Java_8', 'Java_11', 'NetCore_31')]
    [string] $runtimeVersion
    [int] $memoryInGB
    [string] $netCoreMainEntryPath
    [string] $jvmOptions
}
function New-AzureNativeTypeAppplatformDeploymentSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Collection of environment variables)')]
        [hashtable]
        $environmentVariables,
        [parameter(mandatory=$False,HelpMessage='Required CPU, basic tier should be 1, standard tier should be in range (1, 4))')]
        [int]
        $cpu,
        [parameter(mandatory=$False,HelpMessage='Runtime version)')]
        [string]
        [ArgumentCompletions('Java_8', 'Java_11', 'NetCore_31')]
        $runtimeVersion,
        [parameter(mandatory=$False,HelpMessage='Required Memory size in GB, basic tier should be in range (1, 2), standard tier should be in range (1, 8))')]
        [int]
        $memoryInGB,
        [parameter(mandatory=$False,HelpMessage='The path to the .NET executable relative to zip root)')]
        [string]
        $netCoreMainEntryPath,
        [parameter(mandatory=$False,HelpMessage='JVM parameter)')]
        [string]
        $jvmOptions
    )

    process
    {
        return $([DeploymentSettings]$PSBoundParameters)
    }
}
class UserSourceInfo
{
    [string] $version
    [string] $artifactSelector
    [string] $relativePath
    [ArgumentCompletions('Jar', 'NetCoreZip', 'Source')]
    [string] $type
}
function New-AzureNativeTypeAppplatformUserSourceInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Version of the source)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Selector for the artifact to be used for the deployment for multi-module projects. This should be
the relative path to the target module/project.)'
)]
        [string]
        $artifactSelector,
        [parameter(mandatory=$False,HelpMessage='Relative path of the storage which stores the source)')]
        [string]
        $relativePath,
        [parameter(mandatory=$False,HelpMessage='Type of the source uploaded)')]
        [string]
        [ArgumentCompletions('Jar', 'NetCoreZip', 'Source')]
        $type
    )

    process
    {
        return $([UserSourceInfo]$PSBoundParameters)
    }
}
class DeploymentResourceProperties
{
    [DeploymentSettings] $deploymentSettings
    [UserSourceInfo] $source
}
function New-AzureNativeTypeAppplatformDeploymentResourceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Deployment settings of the Deployment)')]
        [DeploymentSettings]
        $deploymentSettings,
        [parameter(mandatory=$False,HelpMessage='Uploaded source information of the deployment.)')]
        [UserSourceInfo]
        $source
    )

    process
    {
        return $([DeploymentResourceProperties]$PSBoundParameters)
    }
}
class Sku
{
    [string] $name
    [string] $tier
    [int] $capacity
}
function New-AzureNativeTypeAppplatformSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Sku)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Tier of the Sku)')]
        [string]
        $tier,
        [parameter(mandatory=$False,HelpMessage='Current capacity of the target resource)')]
        [int]
        $capacity
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformDeployment
{
    [Alias('azure_native_appplatform_deployment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Properties of the Deployment resource)')]
        [DeploymentResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Deployment resource.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName,
        [parameter(mandatory=$False,HelpMessage='Sku of the Deployment resource)')]
        [Sku]
        $sku,
        [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:appplatform:Deployment")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ConfigurationServiceGitRepository
{
    [string[]] $patterns
    [bool] $strictHostKeyChecking
    [string] $password
    [string] $uri
    [string] $hostKey
    [string] $label
    [string] $name
    [string] $hostKeyAlgorithm
    [string] $username
    [string[]] $searchPaths
    [string] $privateKey
}
function New-AzureNativeTypeAppplatformConfigurationServiceGitRepository
{
    param (
        [parameter(mandatory=$False,HelpMessage='Collection of patterns of the repository)')]
        [string[]]
        $patterns,
        [parameter(mandatory=$False,HelpMessage='Strict host key checking or not.)')]
        [bool]
        $strictHostKeyChecking,
        [parameter(mandatory=$False,HelpMessage='Password of git repository basic auth.)')]
        [string]
        $password,
        [parameter(mandatory=$False,HelpMessage='URI of the repository)')]
        [string]
        $uri,
        [parameter(mandatory=$False,HelpMessage='Public sshKey of git repository.)')]
        [string]
        $hostKey,
        [parameter(mandatory=$False,HelpMessage='Label of the repository)')]
        [string]
        $label,
        [parameter(mandatory=$False,HelpMessage='Name of the repository)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='SshKey algorithm of git repository.)')]
        [string]
        $hostKeyAlgorithm,
        [parameter(mandatory=$False,HelpMessage='Username of git repository basic auth.)')]
        [string]
        $username,
        [parameter(mandatory=$False,HelpMessage='Searching path of the repository)')]
        [string[]]
        $searchPaths,
        [parameter(mandatory=$False,HelpMessage='Private sshKey algorithm of git repository.)')]
        [string]
        $privateKey
    )

    process
    {
        return $([ConfigurationServiceGitRepository]$PSBoundParameters)
    }
}
class ConfigurationServiceGitProperty
{
    [ConfigurationServiceGitRepository[]] $repositories
}
function New-AzureNativeTypeAppplatformConfigurationServiceGitProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Repositories of Application Configuration Service git property.)')]
        $repositories
    )

    process
    {
        return $([ConfigurationServiceGitProperty]$PSBoundParameters)
    }
}
class ConfigurationServiceSettings
{
    [ConfigurationServiceGitProperty] $gitProperty
}
function New-AzureNativeTypeAppplatformConfigurationServiceSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Property of git environment.)')]
        [ConfigurationServiceGitProperty]
        $gitProperty
    )

    process
    {
        return $([ConfigurationServiceSettings]$PSBoundParameters)
    }
}
class ConfigurationServiceProperties
{
    [ConfigurationServiceSettings] $settings
}
function New-AzureNativeTypeAppplatformConfigurationServiceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The settings of Application Configuration Service.)')]
        [ConfigurationServiceSettings]
        $settings
    )

    process
    {
        return $([ConfigurationServiceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformConfigurationService
{
    [Alias('azure_native_appplatform_configurationservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='Application Configuration Service properties payload)')]
        [ConfigurationServiceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Application Configuration Service.)')]
        [string]
        $configurationServiceName,
        [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:appplatform:ConfigurationService")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class GatewayApiRoute
{
    [string] $title
    [string[]] $tags
    [int] $order
    [bool] $ssoEnabled
    [string] $uri
    [string] $description
    [string[]] $filters
    [string[]] $predicates
    [bool] $tokenRelay
}
function New-AzureNativeTypeAppplatformGatewayApiRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='A title, will be applied to methods in the generated OpenAPI documentation.)')]
        [string]
        $title,
        [parameter(mandatory=$False,HelpMessage='Classification tags, will be applied to methods in the generated OpenAPI documentation.)')]
        [string[]]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Route processing order.)')]
        [int]
        $order,
        [parameter(mandatory=$False,HelpMessage='Enable sso validation.)')]
        [bool]
        $ssoEnabled,
        [parameter(mandatory=$False,HelpMessage='Full uri, will override `appName`.)')]
        [string]
        $uri,
        [parameter(mandatory=$False,HelpMessage='A description, will be applied to methods in the generated OpenAPI documentation.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='To modify the request before sending it to the target endpoint, or the received response.)')]
        [string[]]
        $filters,
        [parameter(mandatory=$False,HelpMessage='A number of conditions to evaluate a route for each request. Each predicate may be evaluated against request headers and parameter values. All of the predicates associated with a route must evaluate to true for the route to be matched to the request.)')]
        [string[]]
        $predicates,
        [parameter(mandatory=$False,HelpMessage='Pass currently-authenticated user''s identity token to application service, default is ''false'')')]
        [bool]
        $tokenRelay
    )

    process
    {
        return $([GatewayApiRoute]$PSBoundParameters)
    }
}
class GatewayRouteConfigProperties
{
    [GatewayApiRoute[]] $routes
    [string] $appResourceId
}
function New-AzureNativeTypeAppplatformGatewayRouteConfigProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of API routes, each route contains properties such as `title`, `uri`, `ssoEnabled`, `predicates`, `filters`.)')]
        $routes,
        [parameter(mandatory=$False,HelpMessage='The resource Id of the Azure Spring Cloud app, required unless route defines `uri`.)')]
        [string]
        $appResourceId
    )

    process
    {
        return $([GatewayRouteConfigProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformGatewayRouteConfig
{
    [Alias('azure_native_appplatform_gatewayrouteconfig')]
    param (
        [parameter(mandatory=$False,HelpMessage='API route config of the Spring Cloud Gateway)')]
        [GatewayRouteConfigProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Spring Cloud Gateway route config.)')]
        [string]
        $routeConfigName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Spring Cloud Gateway.)')]
        [string]
        $gatewayName,
        [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:appplatform:GatewayRouteConfig")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class GatewayCorsProperties
{
    [string[]] $exposedHeaders
    [string[]] $allowedMethods
    [bool] $allowCredentials
    [int] $maxAge
    [string[]] $allowedOrigins
    [string[]] $allowedHeaders
}
function New-AzureNativeTypeAppplatformGatewayCorsProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='HTTP response headers to expose for cross-site requests.)')]
        [string[]]
        $exposedHeaders,
        [parameter(mandatory=$False,HelpMessage='Allowed HTTP methods on cross-site requests. The special value `*` allows all methods. If not set, `GET` and `HEAD` are allowed by default.)')]
        [string[]]
        $allowedMethods,
        [parameter(mandatory=$False,HelpMessage='Whether user credentials are supported on cross-site requests. Valid values: `true`, `false`.)')]
        [bool]
        $allowCredentials,
        [parameter(mandatory=$False,HelpMessage='How long, in seconds, the response from a pre-flight request can be cached by clients.)')]
        [int]
        $maxAge,
        [parameter(mandatory=$False,HelpMessage='Allowed origins to make cross-site requests. The special value `*` allows all domains.)')]
        [string[]]
        $allowedOrigins,
        [parameter(mandatory=$False,HelpMessage='Allowed headers in cross-site requests. The special value `*` allows actual requests to send any header.)')]
        [string[]]
        $allowedHeaders
    )

    process
    {
        return $([GatewayCorsProperties]$PSBoundParameters)
    }
}
class SsoProperties
{
    [string] $clientSecret
    [string[]] $scope
    [string] $issuerUri
    [string] $clientId
}
function New-AzureNativeTypeAppplatformSsoProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The secret known only to the application and the authorization server)')]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='It defines the specific actions applications can be allowed to do on a user''s behalf)')]
        [string[]]
        $scope,
        [parameter(mandatory=$False,HelpMessage='The URI of Issuer Identifier)')]
        [string]
        $issuerUri,
        [parameter(mandatory=$False,HelpMessage='The public identifier for the application)')]
        [string]
        $clientId
    )

    process
    {
        return $([SsoProperties]$PSBoundParameters)
    }
}
class GatewayResourceRequests
{
    [string] $memory
    [string] $cpu
}
function New-AzureNativeTypeAppplatformGatewayResourceRequests
{
    param (
        [parameter(mandatory=$False,HelpMessage='Memory allocated to each Spring Cloud Gateway instance.)')]
        [string]
        $memory,
        [parameter(mandatory=$False,HelpMessage='Cpu allocated to each Spring Cloud Gateway instance.)')]
        [string]
        $cpu
    )

    process
    {
        return $([GatewayResourceRequests]$PSBoundParameters)
    }
}
class GatewayApiMetadataProperties
{
    [string] $title
    [string] $serverUrl
    [string] $version
    [string] $description
    [string] $documentation
}
function New-AzureNativeTypeAppplatformGatewayApiMetadataProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Title describing the context of the APIs available on the Gateway instance (default: `Spring Cloud Gateway for K8S`))')]
        [string]
        $title,
        [parameter(mandatory=$False,HelpMessage='Base URL that API consumers will use to access APIs on the Gateway instance.)')]
        [string]
        $serverUrl,
        [parameter(mandatory=$False,HelpMessage='Version of APIs available on this Gateway instance (default: `unspecified`).)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Detailed description of the APIs available on the Gateway instance (default: `Generated OpenAPI 3 document that describes the API routes configured.`))')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Location of additional documentation for the APIs available on the Gateway instance)')]
        [string]
        $documentation
    )

    process
    {
        return $([GatewayApiMetadataProperties]$PSBoundParameters)
    }
}
class GatewayProperties
{
    [GatewayCorsProperties] $corsProperties
    [SsoProperties] $ssoProperties
    [GatewayResourceRequests] $resourceRequests
    [GatewayApiMetadataProperties] $apiMetadataProperties
    [bool] $httpsOnly
    [bool] $public
}
function New-AzureNativeTypeAppplatformGatewayProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Cross-Origin Resource Sharing property)')]
        [GatewayCorsProperties]
        $corsProperties,
        [parameter(mandatory=$False,HelpMessage='Single sign-on related configuration)')]
        [SsoProperties]
        $ssoProperties,
        [parameter(mandatory=$False,HelpMessage='The requested resource quantity for required CPU and Memory.)')]
        [GatewayResourceRequests]
        $resourceRequests,
        [parameter(mandatory=$False,HelpMessage='API metadata property for Spring Cloud Gateway)')]
        [GatewayApiMetadataProperties]
        $apiMetadataProperties,
        [parameter(mandatory=$False,HelpMessage='Indicate if only https is allowed.)')]
        [bool]
        $httpsOnly,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the Spring Cloud Gateway exposes endpoint.)')]
        [bool]
        $public
    )

    process
    {
        return $([GatewayProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformGateway
{
    [Alias('azure_native_appplatform_gateway')]
    param (
        [parameter(mandatory=$False,HelpMessage='Sku of the Spring Cloud Gateway resource)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Spring Cloud Gateway properties payload)')]
        [GatewayProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Spring Cloud Gateway.)')]
        [string]
        $gatewayName,
        [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:appplatform:Gateway")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CustomDomainProperties
{
    [string] $certName
    [string] $thumbprint
}
function New-AzureNativeTypeAppplatformCustomDomainProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The bound certificate name of domain.)')]
        [string]
        $certName,
        [parameter(mandatory=$False,HelpMessage='The thumbprint of bound certificate.)')]
        [string]
        $thumbprint
    )

    process
    {
        return $([CustomDomainProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformCustomDomain
{
    [Alias('azure_native_appplatform_customdomain')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Properties of the custom domain resource.)')]
        [CustomDomainProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the custom domain resource.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName,
        [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:appplatform:CustomDomain")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class StorageAccount
{
    [string] $accountName
    [string] $storageType
    [string] $accountKey
}
function New-AzureNativeTypeAppplatformStorageAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='The account name of the Azure Storage Account.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The type of the storage.
Expected value is ''StorageAccount''.)'
)]
        [string]
        $storageType,
        [parameter(mandatory=$False,HelpMessage='The account key of the Azure Storage Account.)')]
        [string]
        $accountKey
    )

    process
    {
        return $([StorageAccount]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformStorage
{
    [Alias('azure_native_appplatform_storage')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the storage resource.)')]
        [string]
        $storageName,
        [parameter(mandatory=$False,HelpMessage='Properties of the storage resource payload.)')]
        [StorageAccount]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [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:appplatform:Storage")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ApiPortalCustomDomainProperties
{
    [string] $thumbprint
}
function New-AzureNativeTypeAppplatformApiPortalCustomDomainProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The thumbprint of bound certificate.)')]
        [string]
        $thumbprint
    )

    process
    {
        return $([ApiPortalCustomDomainProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformApiPortalCustomDomain
{
    [Alias('azure_native_appplatform_apiportalcustomdomain')]
    param (
        [parameter(mandatory=$False,HelpMessage='The properties of custom domain for API portal)')]
        [ApiPortalCustomDomainProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of API portal.)')]
        [string]
        $apiPortalName,
        [parameter(mandatory=$False,HelpMessage='The name of the API portal custom domain.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [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:appplatform:ApiPortalCustomDomain")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class BuildpackBindingLaunchProperties
{
    [object] $secrets
    [object] $properties
}
function New-AzureNativeTypeAppplatformBuildpackBindingLaunchProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Sensitive properties for launchProperties)')]
        [hashtable]
        $secrets,
        [parameter(mandatory=$False,HelpMessage='Non-sensitive properties for launchProperties)')]
        [hashtable]
        $properties
    )

    process
    {
        return $([BuildpackBindingLaunchProperties]$PSBoundParameters)
    }
}
class BuildpackBindingProperties
{
    [ArgumentCompletions('ApplicationInsights', 'ApacheSkyWalking', 'AppDynamics', 'Dynatrace', 'NewRelic', 'ElasticAPM')]
    [string] $bindingType
    [BuildpackBindingLaunchProperties] $launchProperties
}
function New-AzureNativeTypeAppplatformBuildpackBindingProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Buildpack Binding Type)')]
        [string]
        [ArgumentCompletions('ApplicationInsights', 'ApacheSkyWalking', 'AppDynamics', 'Dynatrace', 'NewRelic', 'ElasticAPM')]
        $bindingType,
        [parameter(mandatory=$False,HelpMessage='The object describes the buildpack binding launch properties)')]
        [BuildpackBindingLaunchProperties]
        $launchProperties
    )

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class TemporaryDisk
{
    [string] $mountPath
    [int] $sizeInGB
}
function New-AzureNativeTypeAppplatformTemporaryDisk
{
    param (
        [parameter(mandatory=$False,HelpMessage='Mount path of the temporary disk)')]
        [string]
        $mountPath,
        [parameter(mandatory=$False,HelpMessage='Size of the temporary disk in GB)')]
        [int]
        $sizeInGB
    )

    process
    {
        return $([TemporaryDisk]$PSBoundParameters)
    }
}
class PersistentDisk
{
    [string] $mountPath
    [int] $sizeInGB
}
function New-AzureNativeTypeAppplatformPersistentDisk
{
    param (
        [parameter(mandatory=$False,HelpMessage='Mount path of the persistent disk)')]
        [string]
        $mountPath,
        [parameter(mandatory=$False,HelpMessage='Size of the persistent disk in GB)')]
        [int]
        $sizeInGB
    )

    process
    {
        return $([PersistentDisk]$PSBoundParameters)
    }
}
class AppResourceProperties
{
    [TemporaryDisk] $temporaryDisk
    [string] $fqdn
    [PersistentDisk] $persistentDisk
    [string] $activeDeploymentName
    [bool] $httpsOnly
    [bool] $public
}
function New-AzureNativeTypeAppplatformAppResourceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Temporary disk settings)')]
        [TemporaryDisk]
        $temporaryDisk,
        [parameter(mandatory=$False,HelpMessage='Fully qualified dns Name.)')]
        [string]
        $fqdn,
        [parameter(mandatory=$False,HelpMessage='Persistent disk settings)')]
        [PersistentDisk]
        $persistentDisk,
        [parameter(mandatory=$False,HelpMessage='Name of the active deployment of the App)')]
        [string]
        $activeDeploymentName,
        [parameter(mandatory=$False,HelpMessage='Indicate if only https is allowed.)')]
        [bool]
        $httpsOnly,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the App exposes public endpoint)')]
        [bool]
        $public
    )

    process
    {
        return $([AppResourceProperties]$PSBoundParameters)
    }
}
class ManagedIdentityProperties
{
    [string] $principalId
    [ArgumentCompletions('None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned')]
    [string] $type
    [string] $tenantId
}
function New-AzureNativeTypeAppplatformManagedIdentityProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Principal Id)')]
        [string]
        $principalId,
        [parameter(mandatory=$False,HelpMessage='Type of the managed identity)')]
        [string]
        [ArgumentCompletions('None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Tenant Id)')]
        [string]
        $tenantId
    )

    process
    {
        return $([ManagedIdentityProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformApp
{
    [Alias('azure_native_appplatform_app')]
    param (
        [parameter(mandatory=$False,HelpMessage='Properties of the App resource)')]
        [AppResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Managed Identity type of the app resource)')]
        [ManagedIdentityProperties]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The GEO location of the application, always the same with its parent resource)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the App resource.)')]
        [string]
        $appName,
        [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:appplatform:App")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeAppplatformServiceRegistry
{
    [Alias('azure_native_appplatform_serviceregistry')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of Service Registry.)')]
        [string]
        $serviceRegistryName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [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:appplatform:ServiceRegistry")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class NetworkProfile
{
    [string] $serviceRuntimeSubnetId
    [string] $serviceRuntimeNetworkResourceGroup
    [string] $appNetworkResourceGroup
    [string] $appSubnetId
    [string] $serviceCidr
}
function New-AzureNativeTypeAppplatformNetworkProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Fully qualified resource Id of the subnet to host Azure Spring Cloud Service Runtime)')]
        [string]
        $serviceRuntimeSubnetId,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group containing network resources of Azure Spring Cloud Service Runtime)')]
        [string]
        $serviceRuntimeNetworkResourceGroup,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group containing network resources of Azure Spring Cloud Apps)')]
        [string]
        $appNetworkResourceGroup,
        [parameter(mandatory=$False,HelpMessage='Fully qualified resource Id of the subnet to host Azure Spring Cloud Apps)')]
        [string]
        $appSubnetId,
        [parameter(mandatory=$False,HelpMessage='Azure Spring Cloud service reserved CIDR)')]
        [string]
        $serviceCidr
    )

    process
    {
        return $([NetworkProfile]$PSBoundParameters)
    }
}
class ClusterResourceProperties
{
    [NetworkProfile] $networkProfile
}
function New-AzureNativeTypeAppplatformClusterResourceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Network profile of the Service)')]
        [NetworkProfile]
        $networkProfile
    )

    process
    {
        return $([ClusterResourceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformService
{
    [Alias('azure_native_appplatform_service')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The GEO location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Properties of the Service resource)')]
        [ClusterResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Tags of the service which is a list of key value pairs that describe the resource.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Sku of the Service resource)')]
        [Sku]
        $sku,
        [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:appplatform:Service")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class StackProperties
{
    [string] $id
    [string] $version
}
function New-AzureNativeTypeAppplatformStackProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Id of the ClusterStack.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Version of the ClusterStack)')]
        [string]
        $version
    )

    process
    {
        return $([StackProperties]$PSBoundParameters)
    }
}
class BuildpackProperties
{
    [string] $id
}
function New-AzureNativeTypeAppplatformBuildpackProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Id of the buildpack)')]
        [string]
        $id
    )

    process
    {
        return $([BuildpackProperties]$PSBoundParameters)
    }
}
class BuildpacksGroupProperties
{
    [BuildpackProperties[]] $buildpacks
    [string] $name
}
function New-AzureNativeTypeAppplatformBuildpacksGroupProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Buildpacks in the buildpack group)')]
        $buildpacks,
        [parameter(mandatory=$False,HelpMessage='Buildpack group name)')]
        [string]
        $name
    )

    process
    {
        return $([BuildpacksGroupProperties]$PSBoundParameters)
    }
}
class BuilderProperties
{
    [StackProperties] $stack
    [BuildpacksGroupProperties[]] $buildpackGroups
}
function New-AzureNativeTypeAppplatformBuilderProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Builder cluster stack property.)')]
        [StackProperties]
        $stack,
        [parameter(mandatory=$False,HelpMessage='Builder buildpack groups.)')]
        $buildpackGroups
    )

    process
    {
        return $([BuilderProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformBuildServiceBuilder
{
    [Alias('azure_native_appplatform_buildservicebuilder')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Property of the Builder resource.)')]
        [BuilderProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the build service resource.)')]
        [string]
        $buildServiceName,
        [parameter(mandatory=$False,HelpMessage='The name of the builder resource.)')]
        [string]
        $builderName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [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:appplatform:BuildServiceBuilder")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class GatewayCustomDomainProperties
{
    [string] $thumbprint
}
function New-AzureNativeTypeAppplatformGatewayCustomDomainProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The thumbprint of bound certificate.)')]
        [string]
        $thumbprint
    )

    process
    {
        return $([GatewayCustomDomainProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformGatewayCustomDomain
{
    [Alias('azure_native_appplatform_gatewaycustomdomain')]
    param (
        [parameter(mandatory=$False,HelpMessage='The properties of custom domain for Spring Cloud Gateway)')]
        [GatewayCustomDomainProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Spring Cloud Gateway custom domain.)')]
        [string]
        $domainName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of Spring Cloud Gateway.)')]
        [string]
        $gatewayName,
        [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:appplatform:GatewayCustomDomain")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ApiPortalProperties
{
    [string[]] $gatewayIds
    [bool] $public
    [string[]] $sourceUrls
    [bool] $httpsOnly
    [SsoProperties] $ssoProperties
}
function New-AzureNativeTypeAppplatformApiPortalProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The array of resource Ids of gateway to integrate with API portal.)')]
        [string[]]
        $gatewayIds,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the API portal exposes endpoint.)')]
        [bool]
        $public,
        [parameter(mandatory=$False,HelpMessage='Collection of OpenAPI source URL locations.)')]
        [string[]]
        $sourceUrls,
        [parameter(mandatory=$False,HelpMessage='Indicate if only https is allowed.)')]
        [bool]
        $httpsOnly,
        [parameter(mandatory=$False,HelpMessage='Single sign-on related configuration)')]
        [SsoProperties]
        $ssoProperties
    )

    process
    {
        return $([ApiPortalProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAppplatformApiPortal
{
    [Alias('azure_native_appplatform_apiportal')]
    param (
        [parameter(mandatory=$False,HelpMessage='Sku of the API portal resource)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='API portal properties payload)')]
        [ApiPortalProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of API portal.)')]
        [string]
        $apiPortalName,
        [parameter(mandatory=$False,HelpMessage='The name of the Service resource.)')]
        [string]
        $serviceName,
        [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:appplatform:ApiPortal")

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

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

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

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

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

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