Skip to content

Invoke-GitHubAPI

SYNOPSIS

Calls the GitHub API using the provided parameters.

SYNTAX

ApiEndpoint (Default)

Invoke-GitHubAPI [-Method <WebRequestMethod>] [-ApiBaseUri <String>] -ApiEndpoint <String> [-Body <Object>]
 [-Accept <String>] [-HttpVersion <Version>] [-FollowRelLink <Boolean>] [-UploadFilePath <String>]
 [-DownloadFilePath <String>] [-Token <SecureString>] [-ContentType <String>] [-ApiVersion <String>]
 [-Context <String>] [-ProgressAction <ActionPreference>] [<CommonParameters>]

Uri

Invoke-GitHubAPI [-Method <WebRequestMethod>] [-Body <Object>] [-Accept <String>] [-HttpVersion <Version>]
 [-FollowRelLink <Boolean>] [-UploadFilePath <String>] [-DownloadFilePath <String>] -URI <String>
 [-Token <SecureString>] [-ContentType <String>] [-ApiVersion <String>] [-Context <String>]
 [-ProgressAction <ActionPreference>] [<CommonParameters>]

DESCRIPTION

This function is a wrapper around Invoke-RestMethod tailored for calling GitHub's API. It automatically handles the endpoint URI construction, headers, and token authentication.

EXAMPLES

EXAMPLE 1

Invoke-GitHubAPI -ApiEndpoint '/repos/user/repo/pulls' -Method GET

Gets all open pull requests for the specified repository.

EXAMPLE 2

Invoke-GitHubAPI -ApiEndpoint '/repos/user/repo/pulls' -Method GET -Body @{ state = 'open' }

Gets all open pull requests for the specified repository, filtered by the 'state' parameter.

EXAMPLE 3

Invoke-GitHubAPI -ApiEndpoint '/repos/user/repo/pulls' -Method GET -Body @{ state = 'open' } -Accept 'application/vnd.github.v3+json'

Gets all open pull requests for the specified repository, filtered by the 'state' parameter, and using the specified 'Accept' header.

PARAMETERS

-Method

The HTTP method to be used for the API request. It can be one of the following: GET, POST, PUT, DELETE, or PATCH.

Type: WebRequestMethod
Parameter Sets: (All)
Aliases:
Accepted values: Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch

Required: False
Position: Named
Default value: GET
Accept pipeline input: False
Accept wildcard characters: False

-ApiBaseUri

The base URI for the GitHub API. This is usually https://api.github.com, but can be adjusted if necessary.

Type: String
Parameter Sets: ApiEndpoint
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-ApiEndpoint

The specific endpoint for the API call, e.g., '/repos/user/repo/pulls'.

Type: String
Parameter Sets: ApiEndpoint
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Body

The body of the API request. This can be a hashtable or a string. If a hashtable is provided, it will be converted to JSON.

Type: Object
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Accept

The 'Accept' header for the API request. If not provided, the default will be used by GitHub's API.

Type: String
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: Application/vnd.github+json; charset=utf-8
Accept pipeline input: False
Accept wildcard characters: False

-HttpVersion

Specifies the HTTP version used for the request.

Type: Version
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: 2.0
Accept pipeline input: False
Accept wildcard characters: False

Support Pagination Relation Links per RFC5988.

Type: Boolean
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False

-UploadFilePath

The file path to be used for the API request. This is used for uploading files.

Type: String
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-DownloadFilePath

The file path to be used for the API response. This is used for downloading files.

Type: String
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-URI

The full URI for the API request. This is used for custom API calls.

Type: String
Parameter Sets: Uri
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Token

The secure token used for authentication in the GitHub API. It should be stored as a SecureString to ensure it's kept safe in memory.

Type: SecureString
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-ContentType

The 'Content-Type' header for the API request. The default is 'application/vnd.github+json'.

Type: String
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: Application/vnd.github+json; charset=utf-8
Accept pipeline input: False
Accept wildcard characters: False

-ApiVersion

The GitHub API version to be used. By default, it pulls from a configuration script variable.

Type: String
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Context

The context to use for the API call. This is used to retrieve the necessary configuration settings.

Type: String
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: (Get-GitHubConfig -Name 'DefaultContext')
Accept pipeline input: False
Accept wildcard characters: False

-ProgressAction

{{ Fill ProgressAction Description }}

Type: ActionPreference
Parameter Sets: (All)
Aliases: proga

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.

INPUTS

OUTPUTS

NOTES