pspulumiyaml.azurenative.datafactory.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionDatafactoryGetDataFlow
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [parameter(mandatory=$False,HelpMessage='The data flow name.)')]
        [string]
        $dataFlowName
    )

    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-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
    }
}
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-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-AzureNativeFunctionDatafactoryGetIntegrationRuntimeObjectMetadatum
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Metadata path.)')]
        [string]
        $metadataPath,
        [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-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-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-AzureNativeFunctionDatafactoryGetManagedPrivateEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Managed private endpoint name)')]
        [string]
        $managedPrivateEndpointName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Managed virtual network name)')]
        [string]
        $managedVirtualNetworkName,
        [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-AzureNativeFunctionDatafactoryGetExposureControlFeatureValueByFactory
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The feature name.)')]
        [string]
        $featureName,
        [parameter(mandatory=$False,HelpMessage='The feature type.)')]
        [string]
        $featureType,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName
    )

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

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

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

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

    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-AzureNativeFunctionDatafactoryGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The private endpoint connection name.)')]
        [string]
        $privateEndpointConnectionName,
        [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["privateEndpointConnectionName"] = $privateEndpointConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getPrivateEndpointConnection -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-AzureNativeFunctionDatafactoryGetDataset
{
    param (
        [parameter(mandatory=$False,HelpMessage='The dataset name.)')]
        [string]
        $datasetName,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [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
    }
}
class GitHubClientSecret
{
    [string] $byoaSecretAkvUrl
    [string] $byoaSecretName
}
function New-AzureNativeTypeDatafactoryGitHubClientSecret
{
    param (
        [parameter(mandatory=$False,HelpMessage='Bring your own app client secret AKV URL.)')]
        [string]
        $byoaSecretAkvUrl,
        [parameter(mandatory=$False,HelpMessage='Bring your own app client secret name in AKV.)')]
        [string]
        $byoaSecretName
    )

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

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

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getFactoryGitHubAccessToken -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-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-AzureNativeFunctionDatafactoryGetExposureControlFeatureValue
{
    param (
        [parameter(mandatory=$False,HelpMessage='The feature name.)')]
        [string]
        $featureName,
        [parameter(mandatory=$False,HelpMessage='The feature type.)')]
        [string]
        $featureType,
        [parameter(mandatory=$False,HelpMessage='The location identifier.)')]
        [string]
        $locationId
    )

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

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

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

        $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-AzureNativeFunctionDatafactoryGetFactoryDataPlaneAccess
{
    param (
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [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='The resource group name.)')]
        [string]
        $resourceGroupName,
        [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 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='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
    )

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

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

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

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

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datafactory:getFactoryDataPlaneAccess -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
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 RetryPolicy
{
    [ValidateSet('Minute', 'Hour', 'Month')]
    [object] $count
    [ValidateSet('Minute', 'Hour', 'Month')]
    [int] $intervalInSeconds
}
function New-AzureNativeTypeDatafactoryRetryPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Maximum ordinary retry attempts. Default is 0. Type: integer (or Expression with resultType integer), minimum: 0.)')]
        $count,
        [parameter(mandatory=$False,HelpMessage='Interval between retries in seconds. Default is 30.)')]
        [int]
        $intervalInSeconds
    )

    process
    {
        return $([RetryPolicy]$PSBoundParameters)
    }
}
class TumblingWindowTrigger
{
    [object] $dependsOn #todo add class here
    [string] $startTime
    [object] $delay
    [string] $type
    [string] $description
    [TriggerPipelineReference] $pipeline
    [int] $maxConcurrency
    [int] $interval
    [ValidateSet('Minute', 'Hour', 'Month')]
    [string] $frequency
    [ValidateSet('Minute', 'Hour', 'Month')]
    [object[]] $annotations
    [ValidateSet('Minute', 'Hour', 'Month')]
    [RetryPolicy] $retryPolicy
    [ValidateSet('Minute', 'Hour', 'Month')]
    [string] $endTime
}
function New-AzureNativeTypeDatafactoryTumblingWindowTrigger
{
    param (
        [parameter(mandatory=$False,HelpMessage='Triggers that this trigger depends on. Only tumbling window triggers are supported.)')]
        $dependsOn,
        [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='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='Trigger type.
Expected value is ''TumblingWindowTrigger''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Trigger description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Pipeline for which runs are created when an event is fired for trigger window that is ready.)')]
        [TriggerPipelineReference]
        $pipeline,
        [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 interval of the time windows. The minimum interval allowed is 15 Minutes.)')]
        [int]
        $interval,
        [parameter(mandatory=$False,HelpMessage='The frequency of the time windows.)')]
        [string]
        [ValidateSet('Minute', 'Hour', 'Month')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the trigger.)')]
        $annotations,
        [parameter(mandatory=$False,HelpMessage='Retry policy that will be applied for failed pipeline runs.)')]
        [RetryPolicy]
        $retryPolicy,
        [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
    )

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

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

        $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 SelfHostedIntegrationRuntime
{
    [string] $description
    [string] $type
    [object] $linkedInfo #todo add class here
}
class CredentialReference
{
    [ValidateSet('CredentialReference')]
    [string] $type
    [ValidateSet('CredentialReference')]
    [string] $referenceName
}
function New-AzureNativeTypeDatafactoryCredentialReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Credential reference type.)')]
        [string]
        [ValidateSet('CredentialReference')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Reference credential name.)')]
        [string]
        $referenceName
    )

    process
    {
        return $([CredentialReference]$PSBoundParameters)
    }
}
class LinkedIntegrationRuntimeRbacAuthorization
{
    [string] $authorizationType
    [string] $resourceId
    [CredentialReference] $credential
}
function New-AzureNativeTypeDatafactoryLinkedIntegrationRuntimeRbacAuthorization
{
    param (
        [parameter(mandatory=$False,HelpMessage='The authorization type for integration runtime sharing.
Expected value is ''RBAC''.)'
)]
        [string]
        $authorizationType,
        [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
    )

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

    process
    {
        return $([SelfHostedIntegrationRuntime]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryIntegrationRuntime
{
    [Alias('azure_native_datafactory_integrationruntime')]
    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='Integration runtime properties.)')]
        [SelfHostedIntegrationRuntime]
        $properties,
        [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
    )

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

        $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 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 LinkedServiceReference
{
    [string] $type
    [object] $parameters
    [string] $referenceName
}
function New-AzureNativeTypeDatafactoryLinkedServiceReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Linked service reference type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Arguments for LinkedService.)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference LinkedService name.)')]
        [string]
        $referenceName
    )

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

    process
    {
        return $([ParameterSpecification]$PSBoundParameters)
    }
}
function New-AzureNativeTypeDatafactoryZohoObjectDataset
{
    param (
        [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='Parameters for dataset.)')]
        [ParameterSpecification]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Type of dataset.
Expected value is ''ZohoObject''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Dataset description.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Linked service reference.)')]
        [LinkedServiceReference]
        $linkedServiceName,
        [parameter(mandatory=$False,HelpMessage='The table name. Type: string (or Expression with resultType string).)')]
        $tableName,
        [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='Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.)')]
        $structure,
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the Dataset.)')]
        $annotations
    )

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

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

        $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 IntegrationRuntimeReference
{
    [string] $type
    [object] $parameters
    [string] $referenceName
}
function New-AzureNativeTypeDatafactoryIntegrationRuntimeReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of integration runtime.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Arguments for integration runtime.)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference integration runtime name.)')]
        [string]
        $referenceName
    )

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

    process
    {
        return $([SecureString]$PSBoundParameters)
    }
}
function New-AzureNativeTypeDatafactoryZohoLinkedService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.)')]
        $useEncryptedEndpoints,
        [parameter(mandatory=$False,HelpMessage='Parameters for linked service.)')]
        [ParameterSpecification]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='The access token for Zoho authentication.)')]
        [SecureString]
        $accessToken,
        [parameter(mandatory=$False,HelpMessage='Linked service description.)')]
        [string]
        $description,
        [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='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='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='Type of linked service.
Expected value is ''Zoho''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='The integration runtime reference.)')]
        [IntegrationRuntimeReference]
        $connectVia,
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the linked service.)')]
        $annotations,
        [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='The endpoint of the Zoho server. (i.e. crm.zoho.com/crm/private))')]
        $endpoint
    )

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

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

        $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
    }
}
class DataFlowReference
{
    [ValidateSet('DataFlowReference')]
    [string] $type
    [ValidateSet('DataFlowReference')]
    [object] $datasetParameters
    [ValidateSet('DataFlowReference')]
    [object] $parameters
    [ValidateSet('DataFlowReference')]
    [string] $referenceName
}
function New-AzureNativeTypeDatafactoryDataFlowReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Data flow reference type.)')]
        [string]
        [ValidateSet('DataFlowReference')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Reference data flow parameters from dataset.)')]
        $datasetParameters,
        [parameter(mandatory=$False,HelpMessage='Data flow parameters)')]
        [object]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference data flow name.)')]
        [string]
        $referenceName
    )

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

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

    process
    {
        return $([PowerQuerySource]$PSBoundParameters)
    }
}
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 WranglingDataFlow
{
    [PowerQuerySource[]] $sources
    [DataFlowFolder] $folder
    [string] $description
    [string] $documentLocale
    [string] $type
    [object[]] $annotations
    [string] $script
}
function New-AzureNativeTypeDatafactoryWranglingDataFlow
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of sources in Power Query.)')]
        $sources,
        [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='The description of the data flow.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Locale of the Power query mashup document.)')]
        [string]
        $documentLocale,
        [parameter(mandatory=$False,HelpMessage='Type of data flow.
Expected value is ''WranglingDataFlow''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the data flow.)')]
        $annotations,
        [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='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [parameter(mandatory=$False,HelpMessage='Data flow properties.)')]
        [WranglingDataFlow]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The data flow name.)')]
        [string]
        $dataFlowName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $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 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
{
    [ValidateSet('String', 'Bool', 'Array')]
    [string] $type
    [ValidateSet('String', 'Bool', 'Array')]
    [object] $defaultValue
}
function New-AzureNativeTypeDatafactoryVariableSpecification
{
    param (
        [parameter(mandatory=$False,HelpMessage='Variable type.)')]
        [string]
        [ValidateSet('String', 'Bool', 'Array')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Default value of variable.)')]
        $defaultValue
    )

    process
    {
        return $([VariableSpecification]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryPipeline
{
    [Alias('azure_native_datafactory_pipeline')]
    param (
        [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='The max number of concurrent runs for the pipeline.)')]
        [int]
        $concurrency,
        [parameter(mandatory=$False,HelpMessage='List of parameters for pipeline.)')]
        [ParameterSpecification]
        $parameters,
        [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='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='Pipeline Policy.)')]
        [PipelinePolicy]
        $policy,
        [parameter(mandatory=$False,HelpMessage='List of variables for pipeline.)')]
        [VariableSpecification]
        $variables,
        [parameter(mandatory=$False,HelpMessage='List of tags that can be used for describing the Pipeline.)')]
        $annotations,
        [parameter(mandatory=$False,HelpMessage='Dimensions emitted by Pipeline.)')]
        [object]
        $runDimensions,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["factoryName"] = $factoryName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

    process
    {
        return $([PrivateLinkConnectionApprovalRequest]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryPrivateEndpointConnection
{
    [Alias('azure_native_datafactory_privateendpointconnection')]
    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='Core resource properties)')]
        [PrivateLinkConnectionApprovalRequest]
        $properties,
        [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
    )

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

        $resource.properties["factoryName"] = $factoryName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

    process
    {
        return $([GlobalParameterSpecification]$PSBoundParameters)
    }
}
function New-AzureNativeDatafactoryGlobalParameter
{
    [Alias('azure_native_datafactory_globalparameter')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [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 factory name.)')]
        [string]
        $factoryName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $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] $groupId
    [string[]] $fqdns
    [string] $privateLinkResourceId
}
function New-AzureNativeTypeDatafactoryManagedPrivateEndpoint
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='The ARM resource ID of the resource to which the managed private endpoint is created)')]
        [string]
        $privateLinkResourceId
    )

    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 name)')]
        [string]
        $managedPrivateEndpointName,
        [parameter(mandatory=$False,HelpMessage='Managed private endpoint properties.)')]
        [ManagedPrivateEndpoint]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Managed virtual network name)')]
        [string]
        $managedVirtualNetworkName,
        [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
    )

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

        $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 PurviewConfiguration
{
    [string] $purviewResourceId
}
function New-AzureNativeTypeDatafactoryPurviewConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Purview resource id.)')]
        [string]
        $purviewResourceId
    )

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

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

    process
    {
        return $([FactoryVSTSConfiguration]$PSBoundParameters)
    }
}
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] $keyName
    [string] $vaultBaseUrl
    [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 name of the key in Azure Key Vault to use as Customer Managed Key.)')]
        [string]
        $keyName,
        [parameter(mandatory=$False,HelpMessage='The url of the Azure Key Vault used for CMK.)')]
        [string]
        $vaultBaseUrl,
        [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)
    }
}
function New-AzureNativeDatafactoryFactory
{
    [Alias('azure_native_datafactory_factory')]
    param (
        [parameter(mandatory=$False,HelpMessage='Whether or not public network access is allowed for the data factory.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $publicNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='Purview information of the factory.)')]
        [PurviewConfiguration]
        $purviewConfiguration,
        [parameter(mandatory=$False,HelpMessage='Managed service identity of the factory.)')]
        [FactoryIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='List of parameters for factory.)')]
        [GlobalParameterSpecification]
        $globalParameters,
        [parameter(mandatory=$False,HelpMessage='The resource group name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Git repo information of the factory.)')]
        [FactoryVSTSConfiguration]
        $repoConfiguration,
        [parameter(mandatory=$False,HelpMessage='The factory name.)')]
        [string]
        $factoryName,
        [parameter(mandatory=$False,HelpMessage='The resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Properties to enable Customer Managed Key for the factory.)')]
        [EncryptionConfiguration]
        $encryption,
        [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
    )

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

        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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