Public/New-CriteriaCollectionTemplate.ps1

<#
.SYNOPSIS
    Creates a new criteria collection in the Fortytwo Collections API.

.DESCRIPTION
    This function creates a new criteria collection in the Fortytwo Collections API.

#>

function New-CriteriaCollectionTemplate {
    [CmdletBinding(SupportsShouldProcess = $true)]
    [OutputType([System.Collections.Hashtable])]
    param (
        [Parameter(Mandatory = $true)]
        [ValidateSet("User", "Group", "Organization", "Identity", "Relationship", "OrgUnit")]
        [string]$ObjectType,
        [Parameter(Mandatory = $true)]
        [string]$Name,
        [Parameter(Mandatory = $false)]
        [string]$Description,
        [Parameter(Mandatory = $false)]
        [string[]]$tags
    )

    process {
        [ordered]@{
            objectType    = $ObjectType
            name          = $Name
            description   = $Description
            condition     = [ordered]@{}
            metadata      = [ordered]@{
                tags = $tags
                attributes = [ordered]@{
                    additionalProp1 = $null
                    additionalProp2 = $null
                    additionalProp3 = $null
                }
            }
        }
    }
}