pspulumiyaml.azurenative.blueprint.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionBlueprintGetArtifact
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName
    )

    process
    {
        $arguments = @{}
        $arguments["artifactName"] = $artifactName
        $arguments["blueprintName"] = $blueprintName
        $arguments["resourceScope"] = $resourceScope

        $functionObject = Invoke-PulumiFunction -Name azure-native:blueprint:getArtifact -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionBlueprintGetAssignment
{
    param (
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint assignment.)')]
        [string]
        $assignmentName
    )

    process
    {
        $arguments = @{}
        $arguments["assignmentName"] = $assignmentName
        $arguments["resourceScope"] = $resourceScope

        $functionObject = Invoke-PulumiFunction -Name azure-native:blueprint:getAssignment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionBlueprintGetPolicyAssignmentArtifact
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName
    )

    process
    {
        $arguments = @{}
        $arguments["artifactName"] = $artifactName
        $arguments["blueprintName"] = $blueprintName
        $arguments["resourceScope"] = $resourceScope

        $functionObject = Invoke-PulumiFunction -Name azure-native:blueprint:getPolicyAssignmentArtifact -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionBlueprintGetRoleAssignmentArtifact
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName
    )

    process
    {
        $arguments = @{}
        $arguments["artifactName"] = $artifactName
        $arguments["blueprintName"] = $blueprintName
        $arguments["resourceScope"] = $resourceScope

        $functionObject = Invoke-PulumiFunction -Name azure-native:blueprint:getRoleAssignmentArtifact -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionBlueprintGetBlueprint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName
    )

    process
    {
        $arguments = @{}
        $arguments["blueprintName"] = $blueprintName
        $arguments["resourceScope"] = $resourceScope

        $functionObject = Invoke-PulumiFunction -Name azure-native:blueprint:getBlueprint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionBlueprintGetPublishedBlueprint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='Version of the published blueprint definition.)')]
        [string]
        $versionId,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope
    )

    process
    {
        $arguments = @{}
        $arguments["blueprintName"] = $blueprintName
        $arguments["resourceScope"] = $resourceScope
        $arguments["versionId"] = $versionId

        $functionObject = Invoke-PulumiFunction -Name azure-native:blueprint:getPublishedBlueprint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionBlueprintGetTemplateArtifact
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName
    )

    process
    {
        $arguments = @{}
        $arguments["artifactName"] = $artifactName
        $arguments["blueprintName"] = $blueprintName
        $arguments["resourceScope"] = $resourceScope

        $functionObject = Invoke-PulumiFunction -Name azure-native:blueprint:getTemplateArtifact -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class ParameterDefinition
{
    [ArgumentCompletions('string', 'array', 'bool', 'int', 'object', 'secureObject', 'secureString')]
    [string] $type
    [string] $description
    [string] $strongType
    [string] $displayName
    [object] $defaultValue
    [object[]] $allowedValues
}
function New-AzureNativeTypeBlueprintParameterDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Allowed data types for Resource Manager template parameters.)')]
        [string]
        [ValidateSet('string', 'array', 'bool', 'int', 'object', 'secureObject', 'secureString')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Description of this parameter/resourceGroup.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='StrongType for UI to render rich experience during blueprint assignment. Supported strong types are resourceType, principalId and location.)')]
        [string]
        $strongType,
        [parameter(mandatory=$False,HelpMessage='DisplayName of this parameter/resourceGroup.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Default Value for this parameter.)')]
        $defaultValue,
        [parameter(mandatory=$False,HelpMessage='Array of allowed values for this parameter.)')]
        $allowedValues
    )

    process
    {
        return $([ParameterDefinition]$PSBoundParameters)
    }
}
class ResourceGroupDefinition
{
    [string] $description
    [object] $tags
    [string[]] $dependsOn
    [string] $strongType
    [string] $displayName
    [string] $name
    [string] $location
}
function New-AzureNativeTypeBlueprintResourceGroupDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Description of this parameter/resourceGroup.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Tags to be assigned to this resource group.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Artifacts which need to be deployed before this resource group.)')]
        [string[]]
        $dependsOn,
        [parameter(mandatory=$False,HelpMessage='StrongType for UI to render rich experience during blueprint assignment. Supported strong types are resourceType, principalId and location.)')]
        [string]
        $strongType,
        [parameter(mandatory=$False,HelpMessage='DisplayName of this parameter/resourceGroup.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Name of this resourceGroup. Leave empty if the resource group name will be specified during the blueprint assignment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Location of this resourceGroup. Leave empty if the resource group location will be specified during the blueprint assignment.)')]
        [string]
        $location
    )

    process
    {
        return $([ResourceGroupDefinition]$PSBoundParameters)
    }
}
function New-AzureNativeBlueprintPublishedBlueprint
{
    [Alias('azure_native_blueprint_publishedblueprint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Parameters required by this blueprint definition.)')]
        [ParameterDefinition]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Version of the published blueprint definition.)')]
        [string]
        $versionId,
        [parameter(mandatory=$False,HelpMessage='Resource group placeholders defined by this blueprint definition.)')]
        [ResourceGroupDefinition]
        $resourceGroups,
        [parameter(mandatory=$False,HelpMessage='Name of the published blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='The scope where this blueprint definition can be assigned.)')]
        [string]
        [ValidateSet('subscription', 'managementGroup')]
        $targetScope,
        [parameter(mandatory=$False,HelpMessage='One-liner string explain this resource.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Version-specific change notes.)')]
        [string]
        $changeNotes,
        [parameter(mandatory=$False,HelpMessage='Multi-line explain this resource.)')]
        [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:blueprint:PublishedBlueprint")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeBlueprintArtifact
{
    [Alias('azure_native_blueprint_artifact')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Specifies the kind of blueprint artifact.)')]
        [string]
        [ValidateSet('template', 'roleAssignment', 'policyAssignment')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName,
        [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:blueprint:Artifact")

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class KeyVaultReference
{
    [string] $id
}
function New-AzureNativeTypeBlueprintKeyVaultReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Azure resource ID of the Key Vault.)')]
        [string]
        $id
    )

    process
    {
        return $([KeyVaultReference]$PSBoundParameters)
    }
}
class SecretValueReference
{
    [string] $secretName
    [KeyVaultReference] $keyVault
    [string] $secretVersion
}
function New-AzureNativeTypeBlueprintSecretValueReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the secret.)')]
        [string]
        $secretName,
        [parameter(mandatory=$False,HelpMessage='Specifies the reference to a given Azure Key Vault.)')]
        [KeyVaultReference]
        $keyVault,
        [parameter(mandatory=$False,HelpMessage='The version of the secret to use. If left blank, the latest version of the secret is used.)')]
        [string]
        $secretVersion
    )

    process
    {
        return $([SecretValueReference]$PSBoundParameters)
    }
}
class ParameterValue
{
    [SecretValueReference] $reference
    [object] $value
}
function New-AzureNativeTypeBlueprintParameterValue
{
    param (
        [parameter(mandatory=$False,HelpMessage='Parameter value as reference type.)')]
        [SecretValueReference]
        $reference,
        [parameter(mandatory=$False,HelpMessage='Parameter value. Any valid JSON value is allowed including objects, arrays, strings, numbers and booleans.)')]
        $value
    )

    process
    {
        return $([ParameterValue]$PSBoundParameters)
    }
}
class ManagedServiceIdentity
{
    [ArgumentCompletions('None', 'SystemAssigned', 'UserAssigned')]
    [string] $type
    [string] $principalId
    [string] $tenantId
    [object] $userAssignedIdentities
}
class UserAssignedIdentity
{
    [string] $clientId
    [string] $principalId
}
function New-AzureNativeTypeBlueprintUserAssignedIdentity
{
    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-AzureNativeTypeBlueprintManagedServiceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of the managed identity.)')]
        [string]
        [ValidateSet('None', 'SystemAssigned', 'UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Azure Active Directory principal ID associated with this Identity.)')]
        [string]
        $principalId,
        [parameter(mandatory=$False,HelpMessage='ID of the Azure Active Directory.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='The list of user-assigned managed identities associated with the resource. Key is the Azure resource Id of the managed identity.)')]
        [UserAssignedIdentity]
        $userAssignedIdentities
    )

    process
    {
        return $([ManagedServiceIdentity]$PSBoundParameters)
    }
}
class ResourceGroupValue
{
    [string] $location
    [string] $name
}
function New-AzureNativeTypeBlueprintResourceGroupValue
{
    param (
        [parameter(mandatory=$False,HelpMessage='Location of the resource group.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group.)')]
        [string]
        $name
    )

    process
    {
        return $([ResourceGroupValue]$PSBoundParameters)
    }
}
class AssignmentLockSettings
{
    [string[]] $excludedActions
    [ArgumentCompletions('None', 'AllResourcesReadOnly', 'AllResourcesDoNotDelete')]
    [string] $mode
    [string[]] $excludedPrincipals
}
function New-AzureNativeTypeBlueprintAssignmentLockSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of management operations that are excluded from blueprint locks. Up to 200 actions are permitted. If the lock mode is set to ''AllResourcesReadOnly'', then the following actions are automatically appended to ''excludedActions'': ''*/read'', ''Microsoft.Network/virtualNetworks/subnets/join/action'' and ''Microsoft.Authorization/locks/delete''. If the lock mode is set to ''AllResourcesDoNotDelete'', then the following actions are automatically appended to ''excludedActions'': ''Microsoft.Authorization/locks/delete''. Duplicate actions will get removed.)')]
        [string[]]
        $excludedActions,
        [parameter(mandatory=$False,HelpMessage='Lock mode.)')]
        [string]
        [ValidateSet('None', 'AllResourcesReadOnly', 'AllResourcesDoNotDelete')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='List of AAD principals excluded from blueprint locks. Up to 5 principals are permitted.)')]
        [string[]]
        $excludedPrincipals
    )

    process
    {
        return $([AssignmentLockSettings]$PSBoundParameters)
    }
}
function New-AzureNativeBlueprintAssignment
{
    [Alias('azure_native_blueprint_assignment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Blueprint assignment parameter values.)')]
        [ParameterValue]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='The target subscription scope of the blueprint assignment (format: ''/subscriptions/{subscriptionId}''). For management group level assignments, the property is required.)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint assignment.)')]
        [string]
        $assignmentName,
        [parameter(mandatory=$False,HelpMessage='Managed identity for this blueprint assignment.)')]
        [ManagedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Names and locations of resource group placeholders.)')]
        [ResourceGroupValue]
        $resourceGroups,
        [parameter(mandatory=$False,HelpMessage='Defines how resources deployed by a blueprint assignment are locked.)')]
        [AssignmentLockSettings]
        $locks,
        [parameter(mandatory=$False,HelpMessage='One-liner string explain this resource.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='The location of this blueprint assignment.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='ID of the published version of a blueprint definition.)')]
        [string]
        $blueprintId,
        [parameter(mandatory=$False,HelpMessage='Multi-line explain this resource.)')]
        [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:blueprint:Assignment")

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeBlueprintTemplateArtifact
{
    [Alias('azure_native_blueprint_templateartifact')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource Manager template blueprint artifact parameter values.)')]
        [ParameterValue]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Artifacts which need to be deployed before the specified artifact.)')]
        [string[]]
        $dependsOn,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='If applicable, the name of the resource group placeholder to which the Resource Manager template blueprint artifact will be deployed.)')]
        [string]
        $resourceGroup,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='One-liner string explain this resource.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='The Resource Manager template blueprint artifact body.)')]
        $template,
        [parameter(mandatory=$False,HelpMessage='Multi-line explain this resource.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Specifies the kind of blueprint artifact.
Expected value is ''template''.)'
)]
        [string]
        $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:blueprint:TemplateArtifact")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeBlueprintBlueprint
{
    [Alias('azure_native_blueprint_blueprint')]
    param (
        [parameter(mandatory=$False,HelpMessage='The scope where this blueprint definition can be assigned.)')]
        [string]
        [ValidateSet('subscription', 'managementGroup')]
        $targetScope,
        [parameter(mandatory=$False,HelpMessage='One-liner string explain this resource.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Published versions of this blueprint definition.)')]
        $versions,
        [parameter(mandatory=$False,HelpMessage='Multi-line explain this resource.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='Parameters required by this blueprint definition.)')]
        [ParameterDefinition]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Resource group placeholders defined by this blueprint definition.)')]
        [ResourceGroupDefinition]
        $resourceGroups,
        [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:blueprint:Blueprint")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeBlueprintRoleAssignmentArtifact
{
    [Alias('azure_native_blueprint_roleassignmentartifact')]
    param (
        [parameter(mandatory=$False,HelpMessage='Artifacts which need to be deployed before the specified artifact.)')]
        [string[]]
        $dependsOn,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='RoleAssignment will be scope to this resourceGroup. If empty, it scopes to the subscription.)')]
        [string]
        $resourceGroup,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='One-liner string explain this resource.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Array of user or group identities in Azure Active Directory. The roleDefinition will apply to each identity.)')]
        $principalIds,
        [parameter(mandatory=$False,HelpMessage='Azure resource ID of the RoleDefinition.)')]
        [string]
        $roleDefinitionId,
        [parameter(mandatory=$False,HelpMessage='Multi-line explain this resource.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Specifies the kind of blueprint artifact.
Expected value is ''roleAssignment''.)'
)]
        [string]
        $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:blueprint:RoleAssignmentArtifact")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeBlueprintPolicyAssignmentArtifact
{
    [Alias('azure_native_blueprint_policyassignmentartifact')]
    param (
        [parameter(mandatory=$False,HelpMessage='Parameter values for the policy definition.)')]
        [ParameterValue]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='Artifacts which need to be deployed before the specified artifact.)')]
        [string[]]
        $dependsOn,
        [parameter(mandatory=$False,HelpMessage='The scope of the resource. Valid scopes are: management group (format: ''/providers/Microsoft.Management/managementGroups/{managementGroup}''), subscription (format: ''/subscriptions/{subscriptionId}'').)')]
        [string]
        $resourceScope,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group placeholder to which the policy will be assigned.)')]
        [string]
        $resourceGroup,
        [parameter(mandatory=$False,HelpMessage='Azure resource ID of the policy definition.)')]
        [string]
        $policyDefinitionId,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint artifact.)')]
        [string]
        $artifactName,
        [parameter(mandatory=$False,HelpMessage='Name of the blueprint definition.)')]
        [string]
        $blueprintName,
        [parameter(mandatory=$False,HelpMessage='One-liner string explain this resource.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Multi-line explain this resource.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Specifies the kind of blueprint artifact.
Expected value is ''policyAssignment''.)'
)]
        [string]
        $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:blueprint:PolicyAssignmentArtifact")

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

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

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

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

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

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

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