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 -RepositoryName 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 -RepositoryName.

    .PARAMETER Page
    The page number of the results to return. Default: 1

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

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

    #>

    [CmdletBinding()]
    [OutputType('PSGitHub.Label')]
    param (
        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [Alias('User')]
        [string] $Owner,

        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [ValidateNotNullOrEmpty()]
        [ValidatePattern('^[\w-]+$')]
        [Alias('Repository')]
        [string] $RepositoryName,

        [ValidateRange(1, [int]::MaxValue)]
        [int] $Page,

        [string] $Name,

        [Security.SecureString] $Token = (Get-GitHubToken)
    )

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

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

    $queryParams = @{ }
    if ($Page) {
        $queryParams.page = $Page
    }

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

    Invoke-GitHubApi @apiCall | ForEach-Object { $_ } | ForEach-Object {
        $_.PSTypeNames.Insert(0, 'PSGitHub.Label')
        $_
    }
}