Functions/Public/Get-GitHubLabel.ps1

function Get-GitHubLabel {
    <#
    .SYNOPSIS
    Gets GitHub labels.

    .DESCRIPTION
    This command retrieves GitHub labels for the specified repository using
    the authenticated user.

    .PARAMETER Owner
    The GitHub username of the account or organization that owns the GitHub
    repository specified in the parameter -Repository parameter.

    .PARAMETER Repository
    The name of the GitHub repository, that is owned by the GitHub username
    specified by parameter -Owner.

    .PARAMETER Name
    Retrieve a single label with the specified name from the GitHub repository
    specified by the parameters -Owner and -Repository.

    .PARAMETER Page
    The page number of the results to return. Default: 1
    Note: The GitHub documentation of pagination warns to always rely on the
    links provided in the response headers, rather than attempting to construct
    the page URLs by hand. Unfortunately, as of PowerShell 5.1, Invoke-RestApi
    does not provide access to the response headers.
    https://developer.github.com/v3/guides/traversing-with-pagination/

    .EXAMPLE
    # Retrieve all labels from the repository Mary/WebApps:
    Get-GitHubLabel -Owner Mary -Repository WebApps

    .EXAMPLE
    # Retrieve only the label 'Label1' from the repository Mary/WebApps:
    Get-GitHubLabel -Owner Mary -Repository WebApps -Name Label1

    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ParameterSetName = 'Repository')]
        [Alias('User')]
        [string] $Owner,
        [Parameter(Mandatory = $true, ParameterSetName = 'Repository')]
        [string] $Repository,
        [Parameter(Mandatory = $false, ParameterSetName = 'Repository')]
        [string] $Name,
        [Parameter()]
        [ValidateRange(1, [int]::MaxValue)]
        [int] $Page,
        [Security.SecureString] $Token = (Get-GitHubToken)
    )

    $uri = 'repos/{0}/{1}/labels' -f $Owner, $Repository

    if ($Name) {
        $uri += ("/{0}" -f $Name)
    }

    $queryParameters = @()
    if ($Page) {
        $queryParameters += "page=$Page"
    }

    if ($queryParameters) {
        $uri += "?" + ($queryParameters -join '&')
    }

    $apiCall = @{
        Headers = @{
            Accept = 'application/vnd.github.symmetra-preview+json'
        }
        Method  = 'Get'
        Uri     = $uri
        Token   = $Token
    }

    Invoke-GitHubApi @apiCall
}