pspulumiyaml.azurenative.datafactory.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
class GitHubClientSecret
{
    [string] $byoaSecretName
    [string] $byoaSecretAkvUrl
}
function New-AzureNativeTypeDatafactoryGitHubClientSecret
{
    param (
        [parameter(mandatory=$False,HelpMessage='Bring your own app client secret name in AKV.)')]
        [string]
        $byoaSecretName,
        [parameter(mandatory=$False,HelpMessage='Bring your own app client secret AKV URL.)')]
        [string]
        $byoaSecretAkvUrl
    )

    process
    {
        return $([GitHubClientSecret]$PSBoundParameters)
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetFactoryGitHubAccessToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='GitHub application client ID.)')]
        [string]
        $gitHubClientId,
        [parameter(mandatory=$False,HelpMessage='GitHub access token base URL.)')]
        [string]
        $gitHubAccessTokenBaseUrl,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [parameter(mandatory=$False,HelpMessage='GitHub access code.)')]
        [string]
        $gitHubAccessCode,
        [parameter(mandatory=$False,HelpMessage='GitHub bring your own app client secret information.)')]
        [GitHubClientSecret]
        $gitHubClientSecret
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["gitHubAccessCode"] = $gitHubAccessCode
        $arguments["gitHubAccessTokenBaseUrl"] = $gitHubAccessTokenBaseUrl
        $arguments["resourceGroupName"] = $resourceGroupName

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getFactoryGitHubAccessToken -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetExposureControlFeatureValueByFactory
{
    param (
        [parameter(mandatory=$False,HelpMessage='The feature type.)')]
        [string]
        $featureType,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The feature name.)')]
        [string]
        $featureName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

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

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getExposureControlFeatureValueByFactory -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetPipeline
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The pipeline name.)')]
        [string]
        $pipelineName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["pipelineName"] = $pipelineName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getPipeline -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetFactoryDataPlaneAccess
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource path to get access relative to factory. Currently only empty string is supported which corresponds to the factory resource.)')]
        [string]
        $accessResourcePath,
        [parameter(mandatory=$False,HelpMessage='The name of the profile. Currently only the default is supported. The default value is DefaultProfile.)')]
        [string]
        $profileName,
        [parameter(mandatory=$False,HelpMessage='The string with permissions for Data Plane access. Currently only ''r'' is supported which grants read only access.)')]
        [string]
        $permissions,
        [parameter(mandatory=$False,HelpMessage='Expiration time for the token. Maximum duration for the token is eight hours and by default the token will expire in eight hours.)')]
        [string]
        $expireTime,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [parameter(mandatory=$False,HelpMessage='Start time for the token. If not specified the current time will be used.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName
    )

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

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

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

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

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getFactoryDataPlaneAccess -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetGlobalParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='The global parameter name.)')]
        [string]
        $globalParameterName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["globalParameterName"] = $globalParameterName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getGlobalParameter -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetFactory
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getFactory -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetTriggerEventSubscriptionStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $triggerName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getTriggerEventSubscriptionStatus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryListIntegrationRuntimeAuthKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The integration runtime name.)')]
        [string]
        $integrationRuntimeName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["integrationRuntimeName"] = $integrationRuntimeName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:listIntegrationRuntimeAuthKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetManagedPrivateEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Managed virtual network name)')]
        [string]
        $managedVirtualNetworkName,
        [parameter(mandatory=$False,HelpMessage='Managed private endpoint name)')]
        [string]
        $managedPrivateEndpointName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["managedPrivateEndpointName"] = $managedPrivateEndpointName
        $arguments["managedVirtualNetworkName"] = $managedVirtualNetworkName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getManagedPrivateEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetLinkedService
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The linked service name.)')]
        [string]
        $linkedServiceName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["linkedServiceName"] = $linkedServiceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getLinkedService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetIntegrationRuntimeStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The integration runtime name.)')]
        [string]
        $integrationRuntimeName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["integrationRuntimeName"] = $integrationRuntimeName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getIntegrationRuntimeStatus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetIntegrationRuntimeObjectMetadatum
{
    param (
        [parameter(mandatory=$False,HelpMessage='Metadata path.)')]
        [string]
        $metadataPath,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The integration runtime name.)')]
        [string]
        $integrationRuntimeName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["integrationRuntimeName"] = $integrationRuntimeName
        $arguments["resourceGroupName"] = $resourceGroupName

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getIntegrationRuntimeObjectMetadatum -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The private endpoint connection name.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetDataFlow
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The data flow name.)')]
        [string]
        $dataFlowName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["dataFlowName"] = $dataFlowName
        $arguments["factoryName"] = $factoryName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getDataFlow -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetExposureControlFeatureValue
{
    param (
        [parameter(mandatory=$False,HelpMessage='The feature type.)')]
        [string]
        $featureType,
        [parameter(mandatory=$False,HelpMessage='The location identifier.)')]
        [string]
        $locationId,
        [parameter(mandatory=$False,HelpMessage='The feature name.)')]
        [string]
        $featureName
    )

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

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getExposureControlFeatureValue -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetIntegrationRuntimeConnectionInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The integration runtime name.)')]
        [string]
        $integrationRuntimeName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["integrationRuntimeName"] = $integrationRuntimeName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getIntegrationRuntimeConnectionInfo -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetDataset
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The dataset name.)')]
        [string]
        $datasetName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["datasetName"] = $datasetName
        $arguments["factoryName"] = $factoryName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getDataset -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $triggerName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getTrigger -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatafactoryGetIntegrationRuntime
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The integration runtime name.)')]
        [string]
        $integrationRuntimeName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

    process
    {
        $arguments = @{}
        $arguments["factoryName"] = $factoryName
        $arguments["integrationRuntimeName"] = $integrationRuntimeName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getIntegrationRuntime -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class PrivateEndpoint
{
    [string] $id
}
function New-AzureNativeTypeDatafactoryPrivateEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource Id for private endpoint)')]
        [string]
        $id
    )

    process
    {
        return $([PrivateEndpoint]$PSBoundParameters)
    }
}
class PrivateLinkConnectionState
{
    [string] $description
    [string] $status
    [string] $actionsRequired
}
function New-AzureNativeTypeDatafactoryPrivateLinkConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='Description of a private link connection)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Status of a private link connection)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='ActionsRequired for a private link connection)')]
        [string]
        $actionsRequired
    )

    process
    {
        return $([PrivateLinkConnectionState]$PSBoundParameters)
    }
}
class PrivateLinkConnectionApprovalRequest
{
    [PrivateEndpoint] $privateEndpoint
    [PrivateLinkConnectionState] $privateLinkServiceConnectionState
}
function New-AzureNativeTypeDatafactoryPrivateLinkConnectionApprovalRequest
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource of private endpoint.)')]
        [PrivateEndpoint]
        $privateEndpoint,
        [parameter(mandatory=$False,HelpMessage='The state of a private link connection)')]
        [PrivateLinkConnectionState]
        $privateLinkServiceConnectionState
    )

    process
    {
        return $([PrivateLinkConnectionApprovalRequest]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryPrivateEndpointConnection
{
    [Alias('azure_native_datafactory_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Core resource properties)')]
        [PrivateLinkConnectionApprovalRequest]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The private endpoint connection name.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:PrivateEndpointConnection")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class GlobalParameterSpecification
{
    [ArgumentCompletions('Object', 'String', 'Int', 'Float', 'Bool', 'Array')]
    [string] $type
    [object] $value
}
function New-AzureNativeTypeDatafactoryGlobalParameterSpecification
{
    param (
        [parameter(mandatory=$False,HelpMessage='Global Parameter type.)')]
        [string]
        [ArgumentCompletions('Object', 'String', 'Int', 'Float', 'Bool', 'Array')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Value of parameter.)')]
        $value
    )

    process
    {
        return $([GlobalParameterSpecification]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryGlobalParameter
{
    [Alias('azure_native_datafactory_globalparameter')]
    param (
        [parameter(mandatory=$False,HelpMessage='The global parameter name.)')]
        [string]
        $globalParameterName,
        [parameter(mandatory=$False,HelpMessage='Properties of the global parameter.)')]
        [GlobalParameterSpecification]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:GlobalParameter")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ManagedPrivateEndpoint
{
    [string] $privateLinkResourceId
    [string] $groupId
    [string[]] $fqdns
}
function New-AzureNativeTypeDatafactoryManagedPrivateEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ARM resource ID of the resource to which the managed private endpoint is created)')]
        [string]
        $privateLinkResourceId,
        [parameter(mandatory=$False,HelpMessage='The groupId to which the managed private endpoint is created)')]
        [string]
        $groupId,
        [parameter(mandatory=$False,HelpMessage='Fully qualified domain names)')]
        [string[]]
        $fqdns
    )

    process
    {
        return $([ManagedPrivateEndpoint]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryManagedPrivateEndpoint
{
    [Alias('azure_native_datafactory_managedprivateendpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Managed private endpoint properties.)')]
        [ManagedPrivateEndpoint]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Managed virtual network name)')]
        [string]
        $managedVirtualNetworkName,
        [parameter(mandatory=$False,HelpMessage='Managed private endpoint name)')]
        [string]
        $managedPrivateEndpointName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:ManagedPrivateEndpoint")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CMKIdentityDefinition
{
    [string] $userAssignedIdentity
}
function New-AzureNativeTypeDatafactoryCMKIdentityDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource id of the user assigned identity to authenticate to customer''s key vault.)')]
        [string]
        $userAssignedIdentity
    )

    process
    {
        return $([CMKIdentityDefinition]$PSBoundParameters)
    }
}
class EncryptionConfiguration
{
    [string] $keyVersion
    [string] $vaultBaseUrl
    [string] $keyName
    [CMKIdentityDefinition] $identity
}
function New-AzureNativeTypeDatafactoryEncryptionConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The version of the key used for CMK. If not provided, latest version will be used.)')]
        [string]
        $keyVersion,
        [parameter(mandatory=$False,HelpMessage='The url of the Azure Key Vault used for CMK.)')]
        [string]
        $vaultBaseUrl,
        [parameter(mandatory=$False,HelpMessage='The name of the key in Azure Key Vault to use as Customer Managed Key.)')]
        [string]
        $keyName,
        [parameter(mandatory=$False,HelpMessage='User assigned identity to use to authenticate to customer''s key vault. If not provided Managed Service Identity will be used.)')]
        [CMKIdentityDefinition]
        $identity
    )

    process
    {
        return $([EncryptionConfiguration]$PSBoundParameters)
    }
}
class FactoryVSTSConfiguration
{
    [string] $collaborationBranch
    [string] $repositoryName
    [string] $projectName
    [string] $type
    [string] $accountName
    [string] $rootFolder
    [string] $tenantId
    [string] $lastCommitId
}
function New-AzureNativeTypeDatafactoryFactoryVSTSConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Collaboration branch.)')]
        [string]
        $collaborationBranch,
        [parameter(mandatory=$False,HelpMessage='Repository name.)')]
        [string]
        $repositoryName,
        [parameter(mandatory=$False,HelpMessage='VSTS project name.)')]
        [string]
        $projectName,
        [parameter(mandatory=$False,HelpMessage='Type of repo configuration.
Expected value is ''FactoryVSTSConfiguration''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Account name.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='Root folder.)')]
        [string]
        $rootFolder,
        [parameter(mandatory=$False,HelpMessage='VSTS tenant id.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='Last commit id.)')]
        [string]
        $lastCommitId
    )

    process
    {
        return $([FactoryVSTSConfiguration]$PSBoundParameters)
    }
}
class PurviewConfiguration
{
    [string] $purviewResourceId
}
function New-AzureNativeTypeDatafactoryPurviewConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Purview resource id.)')]
        [string]
        $purviewResourceId
    )

    process
    {
        return $([PurviewConfiguration]$PSBoundParameters)
    }
}
class FactoryIdentity
{
    [ArgumentCompletions('SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned')]
    [string] $type
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeDatafactoryFactoryIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The identity type.)')]
        [string]
        [ArgumentCompletions('SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='List of user assigned identities for the factory.)')]
        [object]
        $userAssignedIdentities
    )

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class RetryPolicy
{
    [int] $intervalInSeconds
    [object] $count
}
function New-AzureNativeTypeDatafactoryRetryPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Interval between retries in seconds. Default is 30.)')]
        [int]
        $intervalInSeconds,
        [parameter(mandatory=$False,HelpMessage='Maximum ordinary retry attempts. Default is 0. Type: integer (or Expression with resultType integer), minimum: 0.)')]
        $count
    )

    process
    {
        return $([RetryPolicy]$PSBoundParameters)
    }
}
class PipelineReference
{
    [string] $name
    [string] $type
    [string] $referenceName
}
function New-AzureNativeTypeDatafactoryPipelineReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Reference name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Pipeline reference type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Reference pipeline name.)')]
        [string]
        $referenceName
    )

    process
    {
        return $([PipelineReference]$PSBoundParameters)
    }
}
class TriggerPipelineReference
{
    [object] $parameters
    [PipelineReference] $pipelineReference
}
function New-AzureNativeTypeDatafactoryTriggerPipelineReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Pipeline parameters.)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Pipeline reference.)')]
        [PipelineReference]
        $pipelineReference
    )

    process
    {
        return $([TriggerPipelineReference]$PSBoundParameters)
    }
}
class TumblingWindowTrigger
{
    [object[]] $annotations
    [string] $startTime
    [string] $endTime
    [int] $maxConcurrency
    [ArgumentCompletions('Minute', 'Hour', 'Month')]
    [string] $frequency
    [string] $description
    [RetryPolicy] $retryPolicy
    [string] $type
    [object] $delay
    [object] $dependsOn #todo add class here
    [int] $interval
    [TriggerPipelineReference] $pipeline
}
function New-AzureNativeTypeDatafactoryTumblingWindowTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the trigger.)')]
        $annotations,
        [parameter(mandatory=$False,HelpMessage='The start time for the time period for the trigger during which events are fired for windows that are ready. Only UTC time is currently supported.)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='The end time for the time period for the trigger during which events are fired for windows that are ready. Only UTC time is currently supported.)')]
        [string]
        $endTime,
        [parameter(mandatory=$False,HelpMessage='The max number of parallel time windows (ready for execution) for which a new run is triggered.)')]
        [int]
        $maxConcurrency,
        [parameter(mandatory=$False,HelpMessage='The frequency of the time windows.)')]
        [string]
        [ArgumentCompletions('Minute', 'Hour', 'Month')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='Trigger description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Retry policy that will be applied for failed pipeline runs.)')]
        [RetryPolicy]
        $retryPolicy,
        [parameter(mandatory=$False,HelpMessage='Trigger type.
Expected value is ''TumblingWindowTrigger''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Specifies how long the trigger waits past due time before triggering new run. It doesn''t alter window start and end time. The default is 0. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).)')]
        $delay,
        [parameter(mandatory=$False,HelpMessage='Triggers that this trigger depends on. Only tumbling window triggers are supported.)')]
        $dependsOn,
        [parameter(mandatory=$False,HelpMessage='The interval of the time windows. The minimum interval allowed is 15 Minutes.)')]
        [int]
        $interval,
        [parameter(mandatory=$False,HelpMessage='Pipeline for which runs are created when an event is fired for trigger window that is ready.)')]
        [TriggerPipelineReference]
        $pipeline
    )

    process
    {
        return $([TumblingWindowTrigger]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryTrigger
{
    [Alias('azure_native_datafactory_trigger')]
    param (
        [parameter(mandatory=$False,HelpMessage='The trigger name.)')]
        [string]
        $triggerName,
        [parameter(mandatory=$False,HelpMessage='Properties of the trigger.)')]
        [TumblingWindowTrigger]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:Trigger")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class DataFlowFolder
{
    [string] $name
}
function New-AzureNativeTypeDatafactoryDataFlowFolder
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the folder that this data flow is in.)')]
        [string]
        $name
    )

    process
    {
        return $([DataFlowFolder]$PSBoundParameters)
    }
}
class LinkedServiceReference
{
    [object] $parameters
    [string] $referenceName
    [ArgumentCompletions('LinkedServiceReference')]
    [string] $type
}
function New-AzureNativeTypeDatafactoryLinkedServiceReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Arguments for LinkedService.)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference LinkedService name.)')]
        [string]
        $referenceName,
        [parameter(mandatory=$False,HelpMessage='Linked service reference type.)')]
        [string]
        [ArgumentCompletions('LinkedServiceReference')]
        $type
    )

    process
    {
        return $([LinkedServiceReference]$PSBoundParameters)
    }
}
class DataFlowReference
{
    [ArgumentCompletions('DataFlowReference')]
    [string] $type
    [object] $parameters
    [string] $referenceName
    [object] $datasetParameters
}
function New-AzureNativeTypeDatafactoryDataFlowReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Data flow reference type.)')]
        [string]
        [ArgumentCompletions('DataFlowReference')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Data flow parameters)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference data flow name.)')]
        [string]
        $referenceName,
        [parameter(mandatory=$False,HelpMessage='Reference data flow parameters from dataset.)')]
        $datasetParameters
    )

    process
    {
        return $([DataFlowReference]$PSBoundParameters)
    }
}
class DatasetReference
{
    [object] $parameters
    [string] $referenceName
    [string] $type
}
function New-AzureNativeTypeDatafactoryDatasetReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Arguments for dataset.)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference dataset name.)')]
        [string]
        $referenceName,
        [parameter(mandatory=$False,HelpMessage='Dataset reference type.)')]
        [string]
        $type
    )

    process
    {
        return $([DatasetReference]$PSBoundParameters)
    }
}
class PowerQuerySource
{
    [string] $description
    [LinkedServiceReference] $schemaLinkedService
    [DataFlowReference] $flowlet
    [LinkedServiceReference] $linkedService
    [string] $name
    [DatasetReference] $dataset
    [string] $script
}
function New-AzureNativeTypeDatafactoryPowerQuerySource
{
    param (
        [parameter(mandatory=$False,HelpMessage='Transformation description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Schema linked service reference.)')]
        [LinkedServiceReference]
        $schemaLinkedService,
        [parameter(mandatory=$False,HelpMessage='Flowlet Reference)')]
        [DataFlowReference]
        $flowlet,
        [parameter(mandatory=$False,HelpMessage='Linked service reference.)')]
        [LinkedServiceReference]
        $linkedService,
        [parameter(mandatory=$False,HelpMessage='Transformation name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Dataset reference.)')]
        [DatasetReference]
        $dataset,
        [parameter(mandatory=$False,HelpMessage='source script.)')]
        [string]
        $script
    )

    process
    {
        return $([PowerQuerySource]$PSBoundParameters)
    }
}
class WranglingDataFlow
{
    [string] $description
    [object[]] $annotations
    [string] $type
    [DataFlowFolder] $folder
    [PowerQuerySource[]] $sources
    [string] $documentLocale
    [string] $script
}
function New-AzureNativeTypeDatafactoryWranglingDataFlow
{
    param (
        [parameter(mandatory=$False,HelpMessage='The description of the data flow.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the data flow.)')]
        $annotations,
        [parameter(mandatory=$False,HelpMessage='Type of data flow.
Expected value is ''WranglingDataFlow''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='The folder that this data flow is in. If not specified, Data flow will appear at the root level.)')]
        [DataFlowFolder]
        $folder,
        [parameter(mandatory=$False,HelpMessage='List of sources in Power Query.)')]
        $sources,
        [parameter(mandatory=$False,HelpMessage='Locale of the Power query mashup document.)')]
        [string]
        $documentLocale,
        [parameter(mandatory=$False,HelpMessage='Power query mashup script.)')]
        [string]
        $script
    )

    process
    {
        return $([WranglingDataFlow]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryDataFlow
{
    [Alias('azure_native_datafactory_dataflow')]
    param (
        [parameter(mandatory=$False,HelpMessage='Data flow properties.)')]
        [WranglingDataFlow]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The data flow name.)')]
        [string]
        $dataFlowName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:DataFlow")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class DatasetFolder
{
    [string] $name
}
function New-AzureNativeTypeDatafactoryDatasetFolder
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the folder that this Dataset is in.)')]
        [string]
        $name
    )

    process
    {
        return $([DatasetFolder]$PSBoundParameters)
    }
}
class ZohoObjectDataset
{
    [object[]] $annotations
    [object] $tableName
    [DatasetFolder] $folder
    [LinkedServiceReference] $linkedServiceName
    [object] $parameters
    [string] $description
    [object] $schema
    [string] $type
    [object] $structure
}
class ParameterSpecification
{
    [object] $defaultValue
    [ArgumentCompletions('Object', 'String', 'Int', 'Float', 'Bool', 'Array', 'SecureString')]
    [string] $type
}
function New-AzureNativeTypeDatafactoryParameterSpecification
{
    param (
        [parameter(mandatory=$False,HelpMessage='Default value of parameter.)')]
        $defaultValue,
        [parameter(mandatory=$False,HelpMessage='Parameter type.)')]
        [string]
        [ArgumentCompletions('Object', 'String', 'Int', 'Float', 'Bool', 'Array', 'SecureString')]
        $type
    )

    process
    {
        return $([ParameterSpecification]$PSBoundParameters)
    }
}
function New-AzureNativeTypeDatafactoryZohoObjectDataset
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the Dataset.)')]
        $annotations,
        [parameter(mandatory=$False,HelpMessage='The table name. Type: string (or Expression with resultType string).)')]
        $tableName,
        [parameter(mandatory=$False,HelpMessage='The folder that this Dataset is in. If not specified, Dataset will appear at the root level.)')]
        [DatasetFolder]
        $folder,
        [parameter(mandatory=$False,HelpMessage='Linked service reference.)')]
        [LinkedServiceReference]
        $linkedServiceName,
        [parameter(mandatory=$False,HelpMessage='Parameters for dataset.)')]
        [ParameterSpecification]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Dataset description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Columns that define the physical type schema of the dataset. Type: array (or Expression with resultType array), itemType: DatasetSchemaDataElement.)')]
        $schema,
        [parameter(mandatory=$False,HelpMessage='Type of dataset.
Expected value is ''ZohoObject''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.)')]
        $structure
    )

    process
    {
        return $([ZohoObjectDataset]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryDataset
{
    [Alias('azure_native_datafactory_dataset')]
    param (
        [parameter(mandatory=$False,HelpMessage='Dataset properties.)')]
        [ZohoObjectDataset]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The dataset name.)')]
        [string]
        $datasetName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:Dataset")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SelfHostedIntegrationRuntime
{
    [object] $linkedInfo #todo add class here
    [string] $description
    [string] $type
}
class CredentialReference
{
    [string] $referenceName
    [ArgumentCompletions('CredentialReference')]
    [string] $type
}
function New-AzureNativeTypeDatafactoryCredentialReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Reference credential name.)')]
        [string]
        $referenceName,
        [parameter(mandatory=$False,HelpMessage='Credential reference type.)')]
        [string]
        [ArgumentCompletions('CredentialReference')]
        $type
    )

    process
    {
        return $([CredentialReference]$PSBoundParameters)
    }
}
class LinkedIntegrationRuntimeRbacAuthorization
{
    [string] $resourceId
    [CredentialReference] $credential
    [string] $authorizationType
}
function New-AzureNativeTypeDatafactoryLinkedIntegrationRuntimeRbacAuthorization
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource identifier of the integration runtime to be shared.)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='The credential reference containing authentication information.)')]
        [CredentialReference]
        $credential,
        [parameter(mandatory=$False,HelpMessage='The authorization type for integration runtime sharing.
Expected value is ''RBAC''.)'
)]
        [string]
        $authorizationType
    )

    process
    {
        return $([LinkedIntegrationRuntimeRbacAuthorization]$PSBoundParameters)
    }
}
function New-AzureNativeTypeDatafactorySelfHostedIntegrationRuntime
{
    param (
        [parameter(mandatory=$False,HelpMessage='The base definition of a linked integration runtime.)')]
        [LinkedIntegrationRuntimeRbacAuthorization]
        $linkedInfo,
        [parameter(mandatory=$False,HelpMessage='Integration runtime description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The type of integration runtime.
Expected value is ''SelfHosted''.)'
)]
        [string]
        $type
    )

    process
    {
        return $([SelfHostedIntegrationRuntime]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryIntegrationRuntime
{
    [Alias('azure_native_datafactory_integrationruntime')]
    param (
        [parameter(mandatory=$False,HelpMessage='Integration runtime properties.)')]
        [SelfHostedIntegrationRuntime]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The integration runtime name.)')]
        [string]
        $integrationRuntimeName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:IntegrationRuntime")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PipelineFolder
{
    [string] $name
}
function New-AzureNativeTypeDatafactoryPipelineFolder
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the folder that this Pipeline is in.)')]
        [string]
        $name
    )

    process
    {
        return $([PipelineFolder]$PSBoundParameters)
    }
}
class PipelineElapsedTimeMetricPolicy
{
    [object] $duration
}
function New-AzureNativeTypeDatafactoryPipelineElapsedTimeMetricPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='TimeSpan value, after which an Azure Monitoring Metric is fired.)')]
        $duration
    )

    process
    {
        return $([PipelineElapsedTimeMetricPolicy]$PSBoundParameters)
    }
}
class PipelinePolicy
{
    [PipelineElapsedTimeMetricPolicy] $elapsedTimeMetric
}
function New-AzureNativeTypeDatafactoryPipelinePolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Pipeline ElapsedTime Metric Policy.)')]
        [PipelineElapsedTimeMetricPolicy]
        $elapsedTimeMetric
    )

    process
    {
        return $([PipelinePolicy]$PSBoundParameters)
    }
}
class VariableSpecification
{
    [object] $defaultValue
    [ArgumentCompletions('String', 'Bool', 'Array')]
    [string] $type
}
function New-AzureNativeTypeDatafactoryVariableSpecification
{
    param (
        [parameter(mandatory=$False,HelpMessage='Default value of variable.)')]
        $defaultValue,
        [parameter(mandatory=$False,HelpMessage='Variable type.)')]
        [string]
        [ArgumentCompletions('String', 'Bool', 'Array')]
        $type
    )

    process
    {
        return $([VariableSpecification]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryPipeline
{
    [Alias('azure_native_datafactory_pipeline')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of activities in pipeline.)')]
        $activities,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [parameter(mandatory=$False,HelpMessage='The pipeline name.)')]
        [string]
        $pipelineName,
        [parameter(mandatory=$False,HelpMessage='The folder that this Pipeline is in. If not specified, Pipeline will appear at the root level.)')]
        [PipelineFolder]
        $folder,
        [parameter(mandatory=$False,HelpMessage='List of parameters for pipeline.)')]
        [ParameterSpecification]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='The max number of concurrent runs for the pipeline.)')]
        [int]
        $concurrency,
        [parameter(mandatory=$False,HelpMessage='The description of the pipeline.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Dimensions emitted by Pipeline.)')]
        [object]
        $runDimensions,
        [parameter(mandatory=$False,HelpMessage='Pipeline Policy.)')]
        [PipelinePolicy]
        $policy,
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the Pipeline.)')]
        $annotations,
        [parameter(mandatory=$False,HelpMessage='List of variables for pipeline.)')]
        [VariableSpecification]
        $variables,
        [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:datafactory:Pipeline")

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class IntegrationRuntimeReference
{
    [object] $parameters
    [string] $referenceName
    [string] $type
}
function New-AzureNativeTypeDatafactoryIntegrationRuntimeReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Arguments for integration runtime.)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference integration runtime name.)')]
        [string]
        $referenceName,
        [parameter(mandatory=$False,HelpMessage='Type of integration runtime.)')]
        [string]
        $type
    )

    process
    {
        return $([IntegrationRuntimeReference]$PSBoundParameters)
    }
}
class ZohoLinkedService
{
    [object[]] $annotations
    [object] $useEncryptedEndpoints
    [object] $encryptedCredential
    [object] $endpoint
    [string] $description
    [object] $parameters
    [string] $type
    [object] $connectionProperties
    [object] $useHostVerification
    [object] $usePeerVerification
    [IntegrationRuntimeReference] $connectVia
    [object] $accessToken #todo add class here
}
class SecureString
{
    [string] $type
    [string] $value
}
function New-AzureNativeTypeDatafactorySecureString
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of the secret.
Expected value is ''SecureString''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Value of secure string.)')]
        [string]
        $value
    )

    process
    {
        return $([SecureString]$PSBoundParameters)
    }
}
function New-AzureNativeTypeDatafactoryZohoLinkedService
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the linked service.)')]
        $annotations,
        [parameter(mandatory=$False,HelpMessage='Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.)')]
        $useEncryptedEndpoints,
        [parameter(mandatory=$False,HelpMessage='The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).)')]
        $encryptedCredential,
        [parameter(mandatory=$False,HelpMessage='The endpoint of the Zoho server. (i.e. crm.zoho.com/crm/private))')]
        $endpoint,
        [parameter(mandatory=$False,HelpMessage='Linked service description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Parameters for linked service.)')]
        [ParameterSpecification]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Type of linked service.
Expected value is ''Zoho''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Properties used to connect to Zoho. It is mutually exclusive with any other properties in the linked service. Type: object.)')]
        $connectionProperties,
        [parameter(mandatory=$False,HelpMessage='Specifies whether to require the host name in the server''s certificate to match the host name of the server when connecting over SSL. The default value is true.)')]
        $useHostVerification,
        [parameter(mandatory=$False,HelpMessage='Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.)')]
        $usePeerVerification,
        [parameter(mandatory=$False,HelpMessage='The integration runtime reference.)')]
        [IntegrationRuntimeReference]
        $connectVia,
        [parameter(mandatory=$False,HelpMessage='The access token for Zoho authentication.)')]
        [SecureString]
        $accessToken
    )

    process
    {
        return $([ZohoLinkedService]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryLinkedService
{
    [Alias('azure_native_datafactory_linkedservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='Properties of linked service.)')]
        [ZohoLinkedService]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The linked service name.)')]
        [string]
        $linkedServiceName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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:datafactory:LinkedService")

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

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

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