pspulumiyaml.azurenative.cognitiveservices.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionCognitiveservicesGetAccount
{
    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 Cognitive Services account.)')]
        [string]
        $accountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:cognitiveservices:getAccount -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCognitiveservicesGetPrivateEndpointConnection
{
    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 private endpoint connection associated with the Cognitive Services Account)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of Cognitive Services account.)')]
        [string]
        $accountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:cognitiveservices:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCognitiveservicesListAccountKeys
{
    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 Cognitive Services account.)')]
        [string]
        $accountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:cognitiveservices:listAccountKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCognitiveservicesGetDeployment
{
    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 deployment associated with the Cognitive Services Account)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='The name of Cognitive Services account.)')]
        [string]
        $accountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:cognitiveservices:getDeployment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCognitiveservicesGetCommitmentPlan
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the commitmentPlan associated with the Cognitive Services Account)')]
        [string]
        $commitmentPlanName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of Cognitive Services account.)')]
        [string]
        $accountName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:cognitiveservices:getCommitmentPlan -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $actionsRequired
    [string] $description
    [ArgumentCompletions('Pending', 'Approved', 'Rejected', 'Disconnected')]
    [string] $status
}
function New-AzureNativeTypeCognitiveservicesPrivateLinkServiceConnectionState
{
    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', 'Disconnected')]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
class PrivateEndpointConnectionProperties
{
    [string[]] $groupIds
    [PrivateLinkServiceConnectionState] $privateLinkServiceConnectionState
}
function New-AzureNativeTypeCognitiveservicesPrivateEndpointConnectionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The private link resource group ids.)')]
        [string[]]
        $groupIds,
        [parameter(mandatory=$False,HelpMessage='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState
    )

    process
    {
        return $([PrivateEndpointConnectionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeCognitiveservicesPrivateEndpointConnection
{
    [Alias('azure_native_cognitiveservices_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The location of the private endpoint connection)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource properties.)')]
        [PrivateEndpointConnectionProperties]
        $properties,
        [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 private endpoint connection associated with the Cognitive Services Account)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of Cognitive Services account.)')]
        [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:cognitiveservices:PrivateEndpointConnection")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class DeploymentScaleSettings
{
    [int] $capacity
    [ArgumentCompletions('Standard', 'Manual')]
    [string] $scaleType
}
function New-AzureNativeTypeCognitiveservicesDeploymentScaleSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Deployment capacity.)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='Deployment scale type.)')]
        [string]
        [ValidateSet('Standard', 'Manual')]
        $scaleType
    )

    process
    {
        return $([DeploymentScaleSettings]$PSBoundParameters)
    }
}
class DeploymentModel
{
    [string] $format
    [string] $version
    [string] $name
}
function New-AzureNativeTypeCognitiveservicesDeploymentModel
{
    param (
        [parameter(mandatory=$False,HelpMessage='Deployment model format.)')]
        [string]
        $format,
        [parameter(mandatory=$False,HelpMessage='Deployment model version.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Deployment model name.)')]
        [string]
        $name
    )

    process
    {
        return $([DeploymentModel]$PSBoundParameters)
    }
}
class DeploymentProperties
{
    [DeploymentScaleSettings] $scaleSettings
    [DeploymentModel] $model
}
function New-AzureNativeTypeCognitiveservicesDeploymentProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Properties of Cognitive Services account deployment model.)')]
        [DeploymentScaleSettings]
        $scaleSettings,
        [parameter(mandatory=$False,HelpMessage='Properties of Cognitive Services account deployment model.)')]
        [DeploymentModel]
        $model
    )

    process
    {
        return $([DeploymentProperties]$PSBoundParameters)
    }
}
function New-AzureNativeCognitiveservicesDeployment
{
    [Alias('azure_native_cognitiveservices_deployment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Properties of Cognitive Services account deployment.)')]
        [DeploymentProperties]
        $properties,
        [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 deployment associated with the Cognitive Services Account)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='The name of Cognitive Services account.)')]
        [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:cognitiveservices:Deployment")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [string] $name
}
function New-AzureNativeTypeCognitiveservicesSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the sku name. Required for account creation, optional for update.)')]
        [string]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class VirtualNetworkRule
{
    [string] $state
    [bool] $ignoreMissingVnetServiceEndpoint
    [string] $id
}
function New-AzureNativeTypeCognitiveservicesVirtualNetworkRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets the state of virtual network rule.)')]
        [string]
        $state,
        [parameter(mandatory=$False,HelpMessage='Ignore missing vnet service endpoint or not.)')]
        [bool]
        $ignoreMissingVnetServiceEndpoint,
        [parameter(mandatory=$False,HelpMessage='Full resource id of a vnet subnet, such as ''/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1''.)')]
        [string]
        $id
    )

    process
    {
        return $([VirtualNetworkRule]$PSBoundParameters)
    }
}
class IpRule
{
    [string] $value
}
function New-AzureNativeTypeCognitiveservicesIpRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='An IPv4 address range in CIDR notation, such as ''124.56.78.91'' (simple IP address) or ''124.56.78.0/24'' (all addresses that start with 124.56.78).)')]
        [string]
        $value
    )

    process
    {
        return $([IpRule]$PSBoundParameters)
    }
}
class NetworkRuleSet
{
    [ArgumentCompletions('Allow', 'Deny')]
    [string] $defaultAction
    [VirtualNetworkRule[]] $virtualNetworkRules
    [IpRule[]] $ipRules
}
function New-AzureNativeTypeCognitiveservicesNetworkRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated.)')]
        [string]
        [ValidateSet('Allow', 'Deny')]
        $defaultAction,
        [parameter(mandatory=$False,HelpMessage='The list of virtual network rules.)')]
        $virtualNetworkRules,
        [parameter(mandatory=$False,HelpMessage='The list of IP address rules.)')]
        $ipRules
    )

    process
    {
        return $([NetworkRuleSet]$PSBoundParameters)
    }
}
class UserOwnedStorage
{
    [string] $resourceId
}
function New-AzureNativeTypeCognitiveservicesUserOwnedStorage
{
    param (
        [parameter(mandatory=$False,HelpMessage='Full resource id of a Microsoft.Storage resource.)')]
        [string]
        $resourceId
    )

    process
    {
        return $([UserOwnedStorage]$PSBoundParameters)
    }
}
class KeyVaultProperties
{
    [string] $keyName
    [string] $keyVaultUri
    [string] $keyVersion
}
function New-AzureNativeTypeCognitiveservicesKeyVaultProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Key from KeyVault)')]
        [string]
        $keyName,
        [parameter(mandatory=$False,HelpMessage='Uri of KeyVault)')]
        [string]
        $keyVaultUri,
        [parameter(mandatory=$False,HelpMessage='Version of the Key from KeyVault)')]
        [string]
        $keyVersion
    )

    process
    {
        return $([KeyVaultProperties]$PSBoundParameters)
    }
}
class Encryption
{
    [ArgumentCompletions('Microsoft.CognitiveServices', 'Microsoft.KeyVault')]
    [string] $keySource
    [KeyVaultProperties] $keyVaultProperties
}
function New-AzureNativeTypeCognitiveservicesEncryption
{
    param (
        [parameter(mandatory=$False,HelpMessage='Enumerates the possible value of keySource for Encryption)')]
        [string]
        [ValidateSet('Microsoft.CognitiveServices', 'Microsoft.KeyVault')]
        $keySource,
        [parameter(mandatory=$False,HelpMessage='Properties of KeyVault)')]
        [KeyVaultProperties]
        $keyVaultProperties
    )

    process
    {
        return $([Encryption]$PSBoundParameters)
    }
}
class CognitiveServicesAccountApiProperties
{
    [string] $qnaAzureSearchEndpointKey
    [string] $aadTenantId
    [string] $qnaAzureSearchEndpointId
    [bool] $statisticsEnabled
    [string] $websiteName
    [string] $qnaRuntimeEndpoint
    [string] $storageAccountConnectionString
    [string] $superUser
    [string] $aadClientId
    [string] $eventHubConnectionString
}
function New-AzureNativeTypeCognitiveservicesCognitiveServicesAccountApiProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='(QnAMaker Only) The Azure Search endpoint key of QnAMaker.)')]
        [string]
        $qnaAzureSearchEndpointKey,
        [parameter(mandatory=$False,HelpMessage='(Metrics Advisor Only) The Azure AD Tenant Id.)')]
        [string]
        $aadTenantId,
        [parameter(mandatory=$False,HelpMessage='(QnAMaker Only) The Azure Search endpoint id of QnAMaker.)')]
        [string]
        $qnaAzureSearchEndpointId,
        [parameter(mandatory=$False,HelpMessage='(Bing Search Only) The flag to enable statistics of Bing Search.)')]
        [bool]
        $statisticsEnabled,
        [parameter(mandatory=$False,HelpMessage='(Metrics Advisor Only) The website name of Metrics Advisor.)')]
        [string]
        $websiteName,
        [parameter(mandatory=$False,HelpMessage='(QnAMaker Only) The runtime endpoint of QnAMaker.)')]
        [string]
        $qnaRuntimeEndpoint,
        [parameter(mandatory=$False,HelpMessage='(Personalization Only) The storage account connection string.)')]
        [string]
        $storageAccountConnectionString,
        [parameter(mandatory=$False,HelpMessage='(Metrics Advisor Only) The super user of Metrics Advisor.)')]
        [string]
        $superUser,
        [parameter(mandatory=$False,HelpMessage='(Metrics Advisor Only) The Azure AD Client Id (Application Id).)')]
        [string]
        $aadClientId,
        [parameter(mandatory=$False,HelpMessage='(Personalization Only) The flag to enable statistics of Bing Search.)')]
        [string]
        $eventHubConnectionString
    )

    process
    {
        return $([CognitiveServicesAccountApiProperties]$PSBoundParameters)
    }
}
class PrivateEndpointConnection
{
    [string] $location
    [PrivateEndpointConnectionProperties] $properties
}
function New-AzureNativeTypeCognitiveservicesPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The location of the private endpoint connection)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Resource properties.)')]
        [PrivateEndpointConnectionProperties]
        $properties
    )

    process
    {
        return $([PrivateEndpointConnection]$PSBoundParameters)
    }
}
class CognitiveServicesAccountProperties
{
    [NetworkRuleSet] $networkAcls
    [UserOwnedStorage[]] $userOwnedStorage
    [string] $customSubDomainName
    [Encryption] $encryption
    [CognitiveServicesAccountApiProperties] $apiProperties
    [ArgumentCompletions('Enabled', 'Disabled')]
    [string] $publicNetworkAccess
    [PrivateEndpointConnection[]] $privateEndpointConnections
}
function New-AzureNativeTypeCognitiveservicesCognitiveServicesAccountProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='A collection of rules governing the accessibility from specific network locations.)')]
        [NetworkRuleSet]
        $networkAcls,
        [parameter(mandatory=$False,HelpMessage='The storage accounts for this resource.)')]
        $userOwnedStorage,
        [parameter(mandatory=$False,HelpMessage='Optional subdomain name used for token-based authentication.)')]
        [string]
        $customSubDomainName,
        [parameter(mandatory=$False,HelpMessage='The encryption properties for this resource.)')]
        [Encryption]
        $encryption,
        [parameter(mandatory=$False,HelpMessage='The api properties for special APIs.)')]
        [CognitiveServicesAccountApiProperties]
        $apiProperties,
        [parameter(mandatory=$False,HelpMessage='Whether or not public endpoint access is allowed for this account. Value is optional but if passed in, must be ''Enabled'' or ''Disabled'')')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $publicNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='The private endpoint connection associated with the Cognitive Services account.)')]
        $privateEndpointConnections
    )

    process
    {
        return $([CognitiveServicesAccountProperties]$PSBoundParameters)
    }
}
class Identity
{
    [ArgumentCompletions('None', 'SystemAssigned', 'UserAssigned')]
    [object] $type
    [object] $userAssignedIdentities
}
class UserAssignedIdentity
{
    [string] $clientId
    [string] $principalId
}
function New-AzureNativeTypeCognitiveservicesUserAssignedIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Client App Id associated with this identity.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='Azure Active Directory principal ID associated with this Identity.)')]
        [string]
        $principalId
    )

    process
    {
        return $([UserAssignedIdentity]$PSBoundParameters)
    }
}
function New-AzureNativeTypeCognitiveservicesIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of managed service identity.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The list of user assigned identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName})')]
        [UserAssignedIdentity]
        $userAssignedIdentities
    )

    process
    {
        return $([Identity]$PSBoundParameters)
    }
}
function New-AzureNativeCognitiveservicesAccount
{
    [Alias('azure_native_cognitiveservices_account')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Kind of the resource.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Gets or sets a list of key value pairs that describe the resource. These tags can be used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key no greater than 128 characters and value no greater than 256 characters.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of Cognitive Services account.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The SKU of Cognitive Services account.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Properties of Cognitive Services account.)')]
        [CognitiveServicesAccountProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The location of the resource)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The identity of Cognitive Services account.)')]
        [Identity]
        $identity,
        [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:cognitiveservices:Account")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CommitmentPeriod
{
    [int] $count
    [string] $tier
}
function New-AzureNativeTypeCognitiveservicesCommitmentPeriod
{
    param (
        [parameter(mandatory=$False,HelpMessage='Commitment period commitment count.)')]
        [int]
        $count,
        [parameter(mandatory=$False,HelpMessage='Commitment period commitment tier.)')]
        [string]
        $tier
    )

    process
    {
        return $([CommitmentPeriod]$PSBoundParameters)
    }
}
class CommitmentPlanProperties
{
    [ArgumentCompletions('Web', 'ConnectedContainer', 'DisconnectedContainer')]
    [string] $hostingModel
    [string] $planType
    [CommitmentPeriod] $next
    [bool] $autoRenew
    [CommitmentPeriod] $current
}
function New-AzureNativeTypeCognitiveservicesCommitmentPlanProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Account hosting model.)')]
        [string]
        [ValidateSet('Web', 'ConnectedContainer', 'DisconnectedContainer')]
        $hostingModel,
        [parameter(mandatory=$False,HelpMessage='Commitment plan type.)')]
        [string]
        $planType,
        [parameter(mandatory=$False,HelpMessage='Cognitive Services account commitment period.)')]
        [CommitmentPeriod]
        $next,
        [parameter(mandatory=$False,HelpMessage='AutoRenew commitment plan.)')]
        [bool]
        $autoRenew,
        [parameter(mandatory=$False,HelpMessage='Cognitive Services account commitment period.)')]
        [CommitmentPeriod]
        $current
    )

    process
    {
        return $([CommitmentPlanProperties]$PSBoundParameters)
    }
}
function New-AzureNativeCognitiveservicesCommitmentPlan
{
    [Alias('azure_native_cognitiveservices_commitmentplan')]
    param (
        [parameter(mandatory=$False,HelpMessage='Properties of Cognitive Services account commitment plan.)')]
        [CommitmentPlanProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the commitmentPlan associated with the Cognitive Services Account)')]
        [string]
        $commitmentPlanName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of Cognitive Services account.)')]
        [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:cognitiveservices:CommitmentPlan")

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

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

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