Public/Get-CollectionResult.ps1

<#
.SYNOPSIS
    Gets collection results from the Fortytwo Collections API.

.DESCRIPTION
    This function retrieves collection results from the Fortytwo Collections API.
#>

function Get-CollectionResult {
    [CmdletBinding(DefaultParameterSetName = "Default")]
    param (
        [Alias("CollectionId")]
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [ValidatePattern("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", ErrorMessage = "Id must be a valid GUID.")] # Is a guid connector object id
        [string] $Id
    )

    process {
        if (-not $Script:APIRoot -or -not $Script:AccessTokenProfile) {
            throw "Not connected to Fortytwo Collections. Please run Connect-Collections first."
        }

        $Uri = ($Script:APIRoot -f "collections", "/$Id/results")

        Write-Verbose "Getting Collection Results from URI: $Uri"
        $Result = Invoke-RestMethod -Uri $Uri -Headers (Get-CollectionHeader) -SkipHttpErrorCheck -StatusCodeVariable StatusCode -Verbose:$false -ConnectionTimeoutSeconds 60 -OperationTimeoutSeconds 60

        if ($Result.IsSuccess) {
            return $Result.Data
        }
        else {
            if (!$Result.Errors) {
                if ($StatusCode -eq 403) {
                    throw "Access denied. Please ensure that your access token has the necessary permissions to access Fortytwo Collections."
                }
                else {
                    throw "Failed to get Fortytwo Collections objects. StatusCode: $StatusCode"
                }
            }
            throw $($Result.Errors -join '; ')
        }
    }
}