projects/Get-HubProjectVersion.ps1

function Get-HubProjectVersion {
    [OutputType([HubProjectVersion])]

    Param(
        # Project name to get
        [Parameter(ValueFromPipeline, HelpMessage = 'The Project whose version to retrieve', Mandatory = $true, ParameterSetName = 'ProjectInPipeline')]
        [HubProject] $Project,

        [Parameter(ValueFromPipelineByPropertyName, Mandatory = $true, ParameterSetName = 'ReferencesProjectVersions', DontShow )]
        [string] $projectVersionHref
    )
    
    begin {
        VerifyHubLogin
        Write-Debug "$($Projects.Length)"
    }
    process {
        if ($Project) { #Querying all versions for a project
            $url = "${global:hubUrl}/api/projects/$($Project.Id)/versions?limit=${hubDefaultLimit}" 
            $projectsJson = (Invoke-RestMethod $url @global:hubInvocationParams)
            return $projectsJson.items | ForEach-Object {
                [HubProjectVersion]::Parse($_)
            }
        } else { #Querying single version from an argument
            try {
                $rawResult = (Invoke-RestMethod -FollowRelLink $projectVersionHref @global:hubInvocationParams)
                return [HubProjectVersion]::Parse($rawResult)
            }
            catch [Microsoft.PowerShell.Commands.HttpResponseException]{
                if ($_.Exception.Response.StatusCode -eq "NotFound") {
                    Write-Error -Category ObjectNotFound "Project Version not found: $($projectVersionHref.TrimStart($global:hubUrl))"
                    return $null
                } else {
                    Write-Error "Unable to access ${projectVersionHref}: `n$($_.Exception)"
                    return $null
                }
            }
        }
    }
}