pspulumiyaml.azurenative.videoanalyzer.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionVideoanalyzerListVideoStreamingToken
{
    param (
        [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='The name of the video to generate a token for playback.)')]
        [string]
        $videoName
    )

    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-AzureNativeFunctionVideoanalyzerGetPrivateEndpointConnection
{
    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='Private endpoint connection name.)')]
        [string]
        $name
    )

    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-AzureNativeFunctionVideoanalyzerListVideoContentToken
{
    param (
        [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='The Video name.)')]
        [string]
        $videoName
    )

    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-AzureNativeFunctionVideoanalyzerGetPipelineJob
{
    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
    )

    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-AzureNativeFunctionVideoanalyzerGetVideoAnalyzer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName
    )

    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 Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the access policy to retrieve.)')]
        [string]
        $accessPolicyName
    )

    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-AzureNativeFunctionVideoanalyzerGetVideo
{
    param (
        [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='The name of the video to retrieve.)')]
        [string]
        $videoName
    )

    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 Invoke-AzureNativeFunctionVideoanalyzerListEdgeModuleProvisioningToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the edge module used to create a new provisioning token.)')]
        [string]
        $edgeModuleName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [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 resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionVideoanalyzerGetEdgeModule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the edge module to retrieve.)')]
        [string]
        $edgeModuleName,
        [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
    )

    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-AzureNativeFunctionVideoanalyzerGetPipelineTopology
{
    param (
        [parameter(mandatory=$False,HelpMessage='Pipeline topology unique identifier.)')]
        [string]
        $pipelineTopologyName,
        [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
    )

    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-AzureNativeFunctionVideoanalyzerGetLivePipeline
{
    param (
        [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='Live pipeline unique identifier.)')]
        [string]
        $livePipelineName
    )

    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 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='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='An optional description for the pipeline.)')]
        [string]
        $description,
        [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='Live pipeline unique identifier.)')]
        [string]
        $livePipelineName,
        [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='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
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeVideoanalyzerPipelineJob
{
    [Alias('azure_native_videoanalyzer_pipelinejob')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [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='The pipeline job name.)')]
        [string]
        $pipelineJobName,
        [parameter(mandatory=$False,HelpMessage='An optional description for the pipeline.)')]
        [string]
        $description,
        [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='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
    )

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

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

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

        $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 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,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeVideoanalyzerVideo
{
    [Alias('azure_native_videoanalyzer_video')]
    param (
        [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 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='The name of the video to create or update.)')]
        [string]
        $videoName,
        [parameter(mandatory=$False,HelpMessage='Optional video title provided by the user. Value can be up to 256 characters long.)')]
        [string]
        $title,
        [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:videoanalyzer:Video")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ValidateSet('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 processor nodes. Processor nodes enable pipeline data to be analyzed, processed or transformed.)')]
        $processors,
        [parameter(mandatory=$False,HelpMessage='Describes the properties of a SKU.)')]
        [Sku]
        $sku,
        [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 source nodes. Source nodes enable external data to be ingested by the pipeline.)')]
        $sources,
        [parameter(mandatory=$False,HelpMessage='Topology kind.)')]
        [string]
        [ValidateSet('Live', 'Batch')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [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='Pipeline topology unique identifier.)')]
        [string]
        $pipelineTopologyName,
        [parameter(mandatory=$False,HelpMessage='The Azure Video Analyzer account name.)')]
        [string]
        $accountName,
        [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,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [string] $actionsRequired
    [ValidateSet('Pending', 'Approved', 'Rejected')]
    [string] $status
}
function New-AzureNativeTypeVideoanalyzerPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reason for approval/rejection of the connection.)')]
        [string]
        $description,
        [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='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='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='Private endpoint connection name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [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:videoanalyzer:PrivateEndpointConnection")

        $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 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
{
    [ValidateSet('SystemKey', 'CustomerKey')]
    [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
{
    [KeyVaultProperties] $keyVaultProperties
    [ValidateSet('SystemKey', 'CustomerKey')]
    [string] $type
    [ValidateSet('SystemKey', 'CustomerKey')]
    [ResourceIdentity] $identity
}
function New-AzureNativeTypeVideoanalyzerAccountEncryption
{
    param (
        [parameter(mandatory=$False,HelpMessage='The properties of the key used to encrypt the account.)')]
        [KeyVaultProperties]
        $keyVaultProperties,
        [parameter(mandatory=$False,HelpMessage='The type of key used to encrypt the Account Key.)')]
        [string]
        [ValidateSet('SystemKey', 'CustomerKey')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The Key Vault identity.)')]
        [ResourceIdentity]
        $identity
    )

    process
    {
        return $([AccountEncryption]$PSBoundParameters)
    }
}
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)
    }
}
function New-AzureNativeVideoanalyzerVideoAnalyzer
{
    [Alias('azure_native_videoanalyzer_videoanalyzer')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The account encryption properties.)')]
        [AccountEncryption]
        $encryption,
        [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 geo-location where the resource lives)')]
        [string]
        $location,
        [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
    )

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

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

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

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

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

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

        $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
{
    [TokenClaim[]] $claims
    [string[]] $issuers
    [string] $type
    [object] $keys #todo add class here
    [string[]] $audiences
}
function New-AzureNativeTypeVideoanalyzerJwtAuthentication
{
    param (
        [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 issuers. Token issuer is valid if it matches at least one of the given values.)')]
        [string[]]
        $issuers,
        [parameter(mandatory=$False,HelpMessage='The discriminator for derived types.
Expected value is ''#Microsoft.VideoAnalyzer.JwtAuthentication''.)'
)]
        [string]
        $type,
        [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 audiences. Token audience is valid if it matches at least one of the given values.)')]
        [string[]]
        $audiences
    )

    process
    {
        return $([JwtAuthentication]$PSBoundParameters)
    }
}
function New-AzureNativeVideoanalyzerAccessPolicy
{
    [Alias('azure_native_videoanalyzer_accesspolicy')]
    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='The name of the access policy to create or update.)')]
        [string]
        $accessPolicyName,
        [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,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

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

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