pspulumiyaml.azurenative.videoanalyzer.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionVideoanalyzerGetPipelineJob
{
    param (
        [parameter(mandatory=$False,HelpMessage='The pipeline job name.)')]
        [string]
        $pipelineJobName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["pipelineJobName"] = $pipelineJobName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getPipelineJob -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerGetLivePipeline
{
    param (
        [parameter(mandatory=$False,HelpMessage='Live pipeline unique identifier.)')]
        [string]
        $livePipelineName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["livePipelineName"] = $livePipelineName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getLivePipeline -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerListEdgeModuleProvisioningToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='The desired expiration date of the registration token. The Azure Video Analyzer IoT edge module must be initialized and connected to the Internet prior to the token expiration date.)')]
        [string]
        $expirationDate,
        [parameter(mandatory=$False,HelpMessage='The name of the edge module used to create a new provisioning token.)')]
        [string]
        $edgeModuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["edgeModuleName"] = $edgeModuleName
        $arguments["expirationDate"] = $expirationDate
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:listEdgeModuleProvisioningToken -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerListVideoStreamingToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the video to generate a token for playback.)')]
        [string]
        $videoName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["videoName"] = $videoName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:listVideoStreamingToken -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerGetEdgeModule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the edge module to retrieve.)')]
        [string]
        $edgeModuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["edgeModuleName"] = $edgeModuleName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getEdgeModule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerListVideoContentToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Video name.)')]
        [string]
        $videoName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["videoName"] = $videoName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:listVideoContentToken -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Private endpoint connection name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The Video Analyzer account name.)')]
        [string]
        $accountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerGetVideoAnalyzer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Video Analyzer account name.)')]
        [string]
        $accountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getVideoAnalyzer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerGetAccessPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the access policy to retrieve.)')]
        [string]
        $accessPolicyName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accessPolicyName"] = $accessPolicyName
        $arguments["accountName"] = $accountName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getAccessPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerGetPipelineTopology
{
    param (
        [parameter(mandatory=$False,HelpMessage='Pipeline topology unique identifier.)')]
        [string]
        $pipelineTopologyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["pipelineTopologyName"] = $pipelineTopologyName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getPipelineTopology -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionVideoanalyzerGetVideo
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the video to retrieve.)')]
        [string]
        $videoName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["videoName"] = $videoName

        $functionObject = Invoke-PulumiFunction -Name azure-native:videoanalyzer:getVideo -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function New-AzureNativeVideoanalyzerVideo
{
    [Alias('azure_native_videoanalyzer_video')]
    param (
        [parameter(mandatory=$False,HelpMessage='Optional video title provided by the user. Value can be up to 256 characters long.)')]
        [string]
        $title,
        [parameter(mandatory=$False,HelpMessage='The name of the video to create or update.)')]
        [string]
        $videoName,
        [parameter(mandatory=$False,HelpMessage='Optional video description provided by the user. Value can be up to 2048 characters long.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["accountName"] = $accountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeVideoanalyzerLivePipeline
{
    [Alias('azure_native_videoanalyzer_livepipeline')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='List of the instance level parameter values for the user-defined topology parameters. A pipeline can only define or override parameters values for parameters which have been declared in the referenced topology. Topology parameters without a default value must be defined. Topology parameters with a default value can be optionally be overridden.)')]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Maximum bitrate capacity in Kbps reserved for the live pipeline. The allowed range is from 500 to 3000 Kbps in increments of 100 Kbps. If the RTSP camera exceeds this capacity, then the service will disconnect temporarily from the camera. It will retry to re-establish connection (with exponential backoff), checking to see if the camera bitrate is now below the reserved capacity. Doing so will ensure that one ''noisy neighbor'' does not affect other live pipelines in your account.)')]
        [int]
        $bitrateKbps,
        [parameter(mandatory=$False,HelpMessage='Live pipeline unique identifier.)')]
        [string]
        $livePipelineName,
        [parameter(mandatory=$False,HelpMessage='The reference to an existing pipeline topology defined for real-time content processing. When activated, this live pipeline will process content according to the pipeline topology definition.)')]
        [string]
        $topologyName,
        [parameter(mandatory=$False,HelpMessage='An optional description for the pipeline.)')]
        [string]
        $description,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["accountName"] = $accountName
        $resource.properties["bitrateKbps"] = $bitrateKbps
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["topologyName"] = $topologyName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VideoAnalyzerIdentity
{
    [string] $type
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeVideoanalyzerVideoAnalyzerIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The identity type.)')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='The User Assigned Managed Identities.)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([VideoAnalyzerIdentity]$PSBoundParameters)
    }
}
class KeyVaultProperties
{
    [string] $keyIdentifier
}
function New-AzureNativeTypeVideoanalyzerKeyVaultProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The URL of the Key Vault key used to encrypt the account. The key may either be versioned (for example https://vault/keys/mykey/version1) or reference a key without a version (for example https://vault/keys/mykey).)')]
        [string]
        $keyIdentifier
    )

    process
    {
        return $([KeyVaultProperties]$PSBoundParameters)
    }
}
class ResourceIdentity
{
    [string] $userAssignedIdentity
}
function New-AzureNativeTypeVideoanalyzerResourceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The user assigned managed identity''s resource identifier to use when accessing a resource.)')]
        [string]
        $userAssignedIdentity
    )

    process
    {
        return $([ResourceIdentity]$PSBoundParameters)
    }
}
class AccountEncryption
{
    [ArgumentCompletions('SystemKey', 'CustomerKey')]
    [string] $type
    [KeyVaultProperties] $keyVaultProperties
    [ResourceIdentity] $identity
}
function New-AzureNativeTypeVideoanalyzerAccountEncryption
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of key used to encrypt the Account Key.)')]
        [string]
        [ValidateSet('SystemKey', 'CustomerKey')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The properties of the key used to encrypt the account.)')]
        [KeyVaultProperties]
        $keyVaultProperties,
        [parameter(mandatory=$False,HelpMessage='The Key Vault identity.)')]
        [ResourceIdentity]
        $identity
    )

    process
    {
        return $([AccountEncryption]$PSBoundParameters)
    }
}
function New-AzureNativeVideoanalyzerVideoAnalyzer
{
    [Alias('azure_native_videoanalyzer_videoanalyzer')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The set of managed identities associated with the Video Analyzer resource.)')]
        [VideoAnalyzerIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The storage accounts for this resource.)')]
        $storageAccounts,
        [parameter(mandatory=$False,HelpMessage='The account encryption properties.)')]
        [AccountEncryption]
        $encryption,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["encryption"] = $encryption
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["storageAccounts"] = $storageAccounts

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeVideoanalyzerEdgeModule
{
    [Alias('azure_native_videoanalyzer_edgemodule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the edge module to create or update.)')]
        [string]
        $edgeModuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["accountName"] = $accountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $actionsRequired
    [string] $description
    [ArgumentCompletions('Pending', 'Approved', 'Rejected')]
    [string] $status
}
function New-AzureNativeTypeVideoanalyzerPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='A message indicating if changes on the service provider require any updates on the consumer.)')]
        [string]
        $actionsRequired,
        [parameter(mandatory=$False,HelpMessage='The reason for approval/rejection of the connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.)')]
        [string]
        [ValidateSet('Pending', 'Approved', 'Rejected')]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeVideoanalyzerPrivateEndpointConnection
{
    [Alias('azure_native_videoanalyzer_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Private endpoint connection name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["accountName"] = $accountName
        $resource.properties["privateLinkServiceConnectionState"] = $privateLinkServiceConnectionState
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ArgumentCompletions('Live_S1', 'Batch_S1')]
    [string] $name
}
function New-AzureNativeTypeVideoanalyzerSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The SKU name.)')]
        [string]
        [ValidateSet('Live_S1', 'Batch_S1')]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
function New-AzureNativeVideoanalyzerPipelineTopology
{
    [Alias('azure_native_videoanalyzer_pipelinetopology')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of the topology parameter declarations. Parameters declared here can be referenced throughout the topology nodes through the use of "${PARAMETER_NAME}" string pattern. Parameters can have optional default values and can later be defined in individual instances of the pipeline.)')]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='List of the topology sink nodes. Sink nodes allow pipeline data to be stored or exported.)')]
        $sinks,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Describes the properties of a SKU.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='List of the topology source nodes. Source nodes enable external data to be ingested by the pipeline.)')]
        $sources,
        [parameter(mandatory=$False,HelpMessage='List of the topology processor nodes. Processor nodes enable pipeline data to be analyzed, processed or transformed.)')]
        $processors,
        [parameter(mandatory=$False,HelpMessage='Pipeline topology unique identifier.)')]
        [string]
        $pipelineTopologyName,
        [parameter(mandatory=$False,HelpMessage='An optional description of the pipeline topology. It is recommended that the expected use of the topology to be described here.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Topology kind.)')]
        [string]
        [ValidateSet('Live', 'Batch')]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["accountName"] = $accountName
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sinks"] = $sinks
        $resource.properties["sku"] = $sku
        $resource.properties["sources"] = $sources

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class TokenClaim
{
    [string] $name
    [string] $value
}
function New-AzureNativeTypeVideoanalyzerTokenClaim
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the claim which must be present on the token.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Expected value of the claim to be present on the token.)')]
        [string]
        $value
    )

    process
    {
        return $([TokenClaim]$PSBoundParameters)
    }
}
class JwtAuthentication
{
    [string] $type
    [TokenClaim[]] $claims
    [string[]] $audiences
    [object] $keys #todo add class here
    [string[]] $issuers
}
function New-AzureNativeTypeVideoanalyzerJwtAuthentication
{
    param (
        [parameter(mandatory=$False,HelpMessage='The discriminator for derived types.
Expected value is ''#Microsoft.VideoAnalyzer.JwtAuthentication''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='List of additional token claims to be validated. Token must contains all claims and respective values for it to be valid.)')]
        $claims,
        [parameter(mandatory=$False,HelpMessage='List of expected token audiences. Token audience is valid if it matches at least one of the given values.)')]
        [string[]]
        $audiences,
        [parameter(mandatory=$False,HelpMessage='List of keys which can be used to validate access tokens. Having multiple keys allow for seamless key rotation of the token signing key. Token signature must match exactly one key.)')]
        $keys,
        [parameter(mandatory=$False,HelpMessage='List of expected token issuers. Token issuer is valid if it matches at least one of the given values.)')]
        [string[]]
        $issuers
    )

    process
    {
        return $([JwtAuthentication]$PSBoundParameters)
    }
}
function New-AzureNativeVideoanalyzerAccessPolicy
{
    [Alias('azure_native_videoanalyzer_accesspolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the access level granted by this policy.)')]
        [string]
        [ValidateSet('Reader')]
        $role,
        [parameter(mandatory=$False,HelpMessage='Authentication method to be used when validating client API access.)')]
        [JwtAuthentication]
        $authentication,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the access policy to create or update.)')]
        [string]
        $accessPolicyName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["accountName"] = $accountName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeVideoanalyzerPipelineJob
{
    [Alias('azure_native_videoanalyzer_pipelinejob')]
    param (
        [parameter(mandatory=$False,HelpMessage='The pipeline job name.)')]
        [string]
        $pipelineJobName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='List of the instance level parameter values for the user-defined topology parameters. A pipeline can only define or override parameters values for parameters which have been declared in the referenced topology. Topology parameters without a default value must be defined. Topology parameters with a default value can be optionally be overridden.)')]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Reference to an existing pipeline topology. When activated, this pipeline job will process content according to the pipeline topology definition.)')]
        [string]
        $topologyName,
        [parameter(mandatory=$False,HelpMessage='An optional description for the pipeline.)')]
        [string]
        $description,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["accountName"] = $accountName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["topologyName"] = $topologyName

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

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

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

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