Public/New-DuneCollection.ps1

function New-DuneCollection {
    [CmdletBinding(
        SupportsShouldProcess,
        ConfirmImpact = 'None'
    )]
    param (
        [Parameter(Mandatory)]
        [string]$Name,

        [Parameter()]
        [string]$DisplayName,

        [Parameter()]
        [string]$Description,

        [Parameter()]
        [hashtable[]]$Variables,

        [Parameter()]
        [hashtable[]]$Tags
    )

    begin {}

    process {
        Write-Debug "$($MyInvocation.MyCommand)|process"
        $Body = @{
            DisplayName = $DisplayName
            Name        = $Name
            Description = $Description
            Tags        = $Tags
        }
        if ($PSBoundParameters.ContainsKey('Variables')) {
            $Variables | ForEach-Object {
                $_.Value = ConvertTo-Json -InputObject $Variables
            }
            $Body.Variables = $Variables
        }
        if ($PSCmdlet.ShouldProcess($($Body | ConvertTo-Json -Depth 16 -Compress))) {
            $Return = Invoke-DuneApiRequest -Uri "Collections" -Method POST -Body $Body
            $ReturnObject = if ($Return.Content) { $Return.Content | ConvertFrom-Json | ConvertTo-DuneClassObject -Class DuneCollection }
            return $ReturnObject
        }
    }

    end {}
}