<!-- BusyBot node reference — https://busybot.net/tools/github/ -->

> Node: GitHub (`github`) · Action (binary) · v1
> Category: Development · Credentials: GitHub API (`githubApi`)
> Updated: 2026-08-16

# GitHub

> Manage GitHub repos, files, issues, releases, reviews, and Actions workflows

## Overview

The GitHub tool provides access to the GitHub REST API v3. It supports file operations (create, edit, delete, get with binary download, and list files in repositories), issue management (create, edit, get, comment, and lock issues), release management (create, get, list, update, and delete releases), pull request reviews (create, get, list, and update reviews), repository info (details, issues, pull requests, license, community profile, popular paths, and referrers), user operations (list repos, get assigned issues, invite to an organization), organization repository listing, and GitHub Actions workflows (dispatch, enable, disable, get, list, and usage). File Get downloads file content as binary data; File Create and Edit can upload binary data.

**Category:** Development  
**Tool Name:** `github`  
**Version:** 1

**Appearance:** Icon: `si-github` | Color: `#24292E`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **GitHub API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/github-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| File | `file` |
| Issue | `issue` |
| Organization | `organization` |
| Release | `release` |
| Repository | `repository` |
| Review | `review` |
| User | `user` |
| Workflow | `workflow` |

### Operations

Each resource offers its own set of operations.

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| File | Create | `create` | Create a new file in a repository |
| File | Delete | `delete` | Delete a file from a repository |
| File | Edit | `edit` | Edit an existing file in a repository |
| File | Get | `get` | Get the content of a single file |
| File | List | `list` | List contents of a folder |
| Issue | Create | `create` | Create a new issue |
| Issue | Create Comment | `createComment` | Create a comment on an issue |
| Issue | Edit | `edit` | Edit an issue |
| Issue | Get | `get` | Get a single issue |
| Issue | Lock | `lock` | Lock an issue |
| Organization | Get Repositories | `getRepositories` | Returns all repositories of an organization |
| Release | Create | `create` | Create a new release |
| Release | Delete | `delete` | Delete a release |
| Release | Get | `get` | Get a release |
| Release | Get Many | `getAll` | Get many releases |
| Release | Update | `update` | Update a release |
| Repository | Get | `get` | Get a repository |
| Repository | Get Issues | `getIssues` | Get issues of a repository |
| Repository | Get License | `getLicense` | Get the license of a repository |
| Repository | Get Profile | `getProfile` | Get the community profile |
| Repository | Get Pull Requests | `getPullRequests` | Get pull requests of a repository |
| Repository | List Popular Paths | `listPopularPaths` | Get top 10 popular content paths |
| Repository | List Referrers | `listReferrers` | Get top 10 referring domains |
| Review | Create | `create` | Create a review |
| Review | Get | `get` | Get a review |
| Review | Get Many | `getAll` | Get many reviews |
| Review | Update | `update` | Update a review |
| User | Get Repositories | `getRepositories` | Returns a user's repositories |
| User | Get Issues | `getUserIssues` | Returns issues assigned to the authenticated user |
| User | Invite | `invite` | Invite a user to an organization |
| Workflow | Disable | `disable` | Disable a workflow |
| Workflow | Dispatch | `dispatch` | Dispatch a workflow event |
| Workflow | Enable | `enable` | Enable a workflow |
| Workflow | Get | `get` | Get a workflow |
| Workflow | Get Usage | `getUsage` | Get the usage of a workflow |
| Workflow | List | `list` | List workflows |

### Parameters

#### File: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| File Path (`filePath`) | `string` | Yes | — | The full file path of the file. Supports expressions. |
| Binary File | `boolean` | No | `false` | Whether the data to upload should be taken from a binary field. |
| File Content | `string` | Yes | — | The text content of the file. Supports expressions like {{ $json.body }}. _(shown when Binary File is `false`)_ |
| Input Binary Field (`binaryPropertyName`) | `string` | Yes | `data` | The name of the input binary field containing the file to be written. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when Binary File is `true`)_ |
| Commit Message | `string` | Yes | — | The commit message for the file operation. Supports expressions. |
| Additional Parameters (`additionalParameters`) | `fixedCollection` | No | `{}` | Additional fields for the commit. |
| — Author | — | No | — | The commit author. |
| — — Name | `string` | No | — | The name of the author of the commit. |
| — — Email | `string` | No | — | The email of the author of the commit. |
| — Branch | — | No | — | The branch to commit to. |
| — — Branch | `string` | No | — | The branch to commit to. Defaults to the repository's default branch. |
| — Committer | — | No | — | The commit committer. |
| — — Name | `string` | No | — | The name of the committer. |
| — — Email | `string` | No | — | The email of the committer. |

#### File: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| File Path (`filePath`) | `string` | Yes | — | The full file path of the file. Supports expressions. |
| Commit Message | `string` | Yes | — | The commit message for the file operation. Supports expressions. |
| Additional Parameters (`additionalParameters`) | `fixedCollection` | No | `{}` | Additional fields for the commit. |
| — Author | — | No | — | The commit author. |
| — — Name | `string` | No | — | The name of the author of the commit. |
| — — Email | `string` | No | — | The email of the author of the commit. |
| — Branch | — | No | — | The branch to commit to. |
| — — Branch | `string` | No | — | The branch to commit to. Defaults to the repository's default branch. |
| — Committer | — | No | — | The commit committer. |
| — — Name | `string` | No | — | The name of the committer. |
| — — Email | `string` | No | — | The email of the committer. |

#### File: Edit

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| File Path (`filePath`) | `string` | Yes | — | The full file path of the file. Supports expressions. |
| Binary File | `boolean` | No | `false` | Whether the data to upload should be taken from a binary field. |
| File Content | `string` | Yes | — | The text content of the file. Supports expressions like {{ $json.body }}. _(shown when Binary File is `false`)_ |
| Input Binary Field (`binaryPropertyName`) | `string` | Yes | `data` | The name of the input binary field containing the file to be written. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when Binary File is `true`)_ |
| Commit Message | `string` | Yes | — | The commit message for the file operation. Supports expressions. |
| Additional Parameters (`additionalParameters`) | `fixedCollection` | No | `{}` | Additional fields for the commit. |
| — Author | — | No | — | The commit author. |
| — — Name | `string` | No | — | The name of the author of the commit. |
| — — Email | `string` | No | — | The email of the author of the commit. |
| — Branch | — | No | — | The branch to commit to. |
| — — Branch | `string` | No | — | The branch to commit to. Defaults to the repository's default branch. |
| — Committer | — | No | — | The commit committer. |
| — — Name | `string` | No | — | The name of the committer. |
| — — Email | `string` | No | — | The email of the committer. |

#### File: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| File Path (`filePath`) | `string` | Yes | — | The full file path of the file. Supports expressions. |
| As Binary Property | `boolean` | No | `true` | Whether to return the file content as binary data instead of the raw API response. |
| Put Output File in Field (`binaryPropertyName`) | `string` | Yes | `data` | The name of the output binary field. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when As Binary Property is `true`)_ |
| Additional Parameters (`additionalParameters`) | `collection` | No | `{}` | Additional fields. |
| — Reference | `string` | No | — | The name of the commit/branch/tag. Defaults to the repository's default branch. |

#### File: List

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Path (`filePath`) | `string` | No | — | The path of the folder to list. Leave empty for the repository root. Supports expressions. |

#### Issue: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Title | `string` | Yes | — | The title of the issue. Supports expressions like {{ $json.title }}. |
| Body (`body`) | `string` | No | — | The body of the issue. Supports expressions. |
| Labels | `string` | No | — | Comma-separated list of label names to add to the issue. |
| Assignees | `string` | No | — | Comma-separated list of usernames to assign. |

#### Issue: Create Comment

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Issue Number | `number` | Yes | `0` | The number of the issue. Supports expressions. |
| Comment Body | `string` | Yes | — | The body of the comment. Supports expressions. |

#### Issue: Edit

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Issue Number | `number` | Yes | `0` | The number of the issue. Supports expressions. |
| Edit Fields | `collection` | No | `{}` | Fields to update on the issue. Only the fields you add are sent. |
| — Title | `string` | No | — | The title of the issue. |
| — Body | `string` | No | — | The body of the issue. |
| — State | `options` | No | `open` | The state to move the issue to. |
| | | | | Options: `open`, `closed` |
| — State Reason | `options` | No | `completed` | Why the issue changed state. |
| | | | | Options: `completed`, `not_planned`, `reopened` |
| — Labels | `string` | No | — | Comma-separated label names. |
| — Assignees | `string` | No | — | Comma-separated usernames. |

#### Issue: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Issue Number | `number` | Yes | `0` | The number of the issue. Supports expressions. |

#### Issue: Lock

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Issue Number | `number` | Yes | `0` | The number of the issue. Supports expressions. |
| Lock Reason | `options` | No | `resolved` | The reason for locking the issue. |
| | | | | Options: `off-topic`, `too heated`, `resolved`, `spam` |

#### Organization: Get Repositories

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The organization whose repositories to list. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Release: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Tag | `string` | Yes | — | The tag of the release. Supports expressions like {{ $json.version }}. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional release fields. |
| — Name | `string` | No | — | The display name of the release. |
| — Body | `string` | No | — | The release notes. |
| — Draft | `boolean` | No | `false` | Whether to create the release as a draft. |
| — Prerelease | `boolean` | No | `false` | Whether to mark the release as a prerelease. |
| — Target Commitish | `string` | No | — | The branch or commit the tag is created from. |

#### Release: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Release ID | `string` | Yes | — | The ID of the release. Supports expressions. |

#### Release: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Release ID | `string` | Yes | — | The ID of the release. Supports expressions. |

#### Release: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Release: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Release ID | `string` | Yes | — | The ID of the release. Supports expressions. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | The release fields to change. Only the fields you add are sent. |
| — Name | `string` | No | — | The display name of the release. |
| — Body | `string` | No | — | The release notes. |
| — Tag Name | `string` | No | — | The tag the release points at. |
| — Draft | `boolean` | No | `false` | Whether the release is a draft. |
| — Prerelease | `boolean` | No | `false` | Whether the release is a prerelease. |
| — Target Commitish | `string` | No | — | The branch or commit the tag is created from. |

#### Repository: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |

#### Repository: Get Issues

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters (`getRepositoryIssuesFilters`) | `collection` | No | `{}` | Narrow the returned issues. |
| — Assignee | `string` | No | — | Only issues assigned to this user. |
| — Creator | `string` | No | — | Only issues opened by this user. |
| — Mentioned | `string` | No | — | Only issues mentioning this user. |
| — Labels | `string` | No | — | Comma-separated label names. |
| — Updated Since | `string` | No | — | ISO 8601 datetime — return only issues updated at or after this time. |
| — State | `options` | No | `open` | Which issue states to include. |
| | | | | Options: `all`, `closed`, `open` |
| — Sort | `options` | No | `created` | What to sort the issues by. |
| | | | | Options: `created`, `updated`, `comments` |
| — Direction | `options` | No | `desc` | Sort direction. |
| | | | | Options: `asc`, `desc` |

#### Repository: Get License

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |

#### Repository: Get Profile

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |

#### Repository: Get Pull Requests

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters (`getRepositoryPullRequestsFilters`) | `collection` | No | `{}` | Narrow the returned pull requests. |
| — State | `options` | No | `open` | Which pull request states to include. |
| | | | | Options: `all`, `closed`, `open` |
| — Sort | `options` | No | `created` | What to sort the pull requests by. |
| | | | | Options: `created`, `updated`, `popularity`, `long-running` |
| — Direction | `options` | No | `desc` | Sort direction. |
| | | | | Options: `asc`, `desc` |

#### Repository: List Popular Paths

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |

#### Repository: List Referrers

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |

#### Review: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| PR Number | `number` | Yes | `0` | The number of the pull request. Supports expressions. |
| Event | `options` | No | `approve` | The review action to perform. |
| | | | | Options: `approve`, `requestChanges`, `comment`, `pending` |
| Body (`reviewBody`) | `string` | No | — | The body of the review (required for Request Changes or Comment events). _(shown when Event is `requestChanges`, `comment`)_ |
| Additional Fields (`reviewAdditionalFields`) | `collection` | No | `{}` | Optional review fields. |
| — Commit ID | `string` | No | — | The SHA of the commit that needs a review. |

#### Review: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| PR Number | `number` | Yes | `0` | The number of the pull request. Supports expressions. |
| Review ID | `string` | Yes | — | The ID of the review. Supports expressions. |

#### Review: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| PR Number | `number` | Yes | `0` | The number of the pull request. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Review: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| PR Number | `number` | Yes | `0` | The number of the pull request. Supports expressions. |
| Review ID | `string` | Yes | — | The ID of the review. Supports expressions. |
| Body (`reviewUpdateBody`) | `string` | No | — | The body of the review. Supports expressions. |

#### User: Get Repositories

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The user whose repositories to list. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### User: Get Issues

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters (`getUserIssuesFilters`) | `collection` | No | `{}` | Narrow the returned issues. |
| — Mentioned | `string` | No | — | Only issues mentioning this user. |
| — Labels | `string` | No | — | Comma-separated label names. |
| — Updated Since | `string` | No | — | ISO 8601 datetime — return only issues updated at or after this time. |
| — State | `options` | No | `open` | Which issue states to include. |
| | | | | Options: `all`, `closed`, `open` |
| — Sort | `options` | No | `created` | What to sort the issues by. |
| | | | | Options: `created`, `updated`, `comments` |
| — Direction | `options` | No | `desc` | Sort direction. |
| | | | | Options: `asc`, `desc` |

#### User: Invite

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Organization | `string` | Yes | — | The GitHub organization to invite the user to. Supports expressions. |
| Email | `string` | Yes | — | The email address of the user to invite. Supports expressions like {{ $json.email }}. |

#### Workflow: Disable

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Workflow ID | `string` | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). Supports expressions. |

#### Workflow: Dispatch

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Workflow ID | `string` | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). Supports expressions. |
| Ref | `string` | Yes | `main` | The git reference for the workflow dispatch (branch or tag name). Supports expressions. |
| Inputs | `json` | No | `{}` | JSON object with input parameters for the workflow. Must be valid JSON. |

#### Workflow: Enable

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Workflow ID | `string` | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). Supports expressions. |

#### Workflow: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Workflow ID | `string` | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). Supports expressions. |

#### Workflow: Get Usage

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |
| Workflow ID | `string` | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). Supports expressions. |

#### Workflow: List

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Repository Owner | `string` | Yes | — | The owner (user or organization) of the repository. Supports expressions. |
| Repository Name | `string` | Yes | — | The name of the repository. Supports expressions. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

**This node replaces the input item's JSON with the GitHub API response.** Fields the item arrived with do not pass through, so capture anything a later node needs before this node or re-join it afterwards. Binary data on the input item **is** forwarded.

The one exception is **File Get with As Binary Property on**: there the item JSON passes through untouched and the file is added as a binary property under the field you named, alongside any binary the item already carried. The binary's file name comes from the file's path in the repository and its MIME type is detected from that name.

**Operations that fan out** — one output item per record instead of one per input item:

`file:list`, `repository:getIssues`, `repository:getPullRequests`, `repository:listPopularPaths`, `repository:listReferrers`, `release:getAll`, `review:getAll`, `user:getRepositories`, `user:getUserIssues`, `organization:getRepositories`, `workflow:list`.

An empty result from any of them produces no output items at all.

**Everything else emits exactly one item** carrying the API object — the created issue, the updated release, the repository, the workflow, and so on. Operations where GitHub returns no body instead emit `{ "success": true }`; Workflow Dispatch emits `{ "success": true, "dispatched": true }`.

Reference the response downstream by expression, e.g. `{{ $json.number }}` after creating an issue, `{{ $json.html_url }}` after creating a release, or `{{ $json.name }}` after listing files.

## Usage Examples

- Download a file from a GitHub repository as binary data
- Create a new file in a repository from binary data
- Create an issue in a GitHub repository
- List all releases for a repository
- Dispatch a GitHub Actions workflow
- Get pull request reviews

## Example Configuration

Create a text file and commit it:

```json
{
  "type": "github",
  "parameters": {
    "resource": "file",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "filePath": "docs/readme.md",
    "binaryData": false,
    "fileContent": "# Hello World\nThis is a test file.",
    "commitMessage": "Add readme file"
  }
}
```

Edit a file on a branch with explicit commit author details:

```json
{
  "type": "github",
  "parameters": {
    "resource": "file",
    "operation": "edit",
    "owner": "octocat",
    "repository": "Hello-World",
    "filePath": "docs/readme.md",
    "binaryData": false,
    "fileContent": "# Hello World\nUpdated content.",
    "commitMessage": "Update readme file",
    "additionalParameters": {
      "author": { "name": "John Doe", "email": "john@example.com" },
      "branch": { "branch": "feature-branch" }
    }
  }
}
```

Download a file as binary data:

```json
{
  "type": "github",
  "parameters": {
    "resource": "file",
    "operation": "get",
    "owner": "octocat",
    "repository": "Hello-World",
    "filePath": "image.png",
    "asBinaryProperty": true,
    "binaryPropertyName": "fileData"
  }
}
```

Create an issue with labels and assignees:

```json
{
  "type": "github",
  "parameters": {
    "resource": "issue",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "title": "{{ $json.title }}",
    "body": "There seems to be a bug in the application.",
    "labels": "bug,urgent",
    "assignees": "octocat,contributor"
  }
}
```

Edit an existing issue:

```json
{
  "type": "github",
  "parameters": {
    "resource": "issue",
    "operation": "edit",
    "owner": "octocat",
    "repository": "Hello-World",
    "issueNumber": 123,
    "editFields": {
      "title": "Updated bug report",
      "body": "Updated description of the bug.",
      "state": "open",
      "labels": "bug,high-priority"
    }
  }
}
```

List open bug issues, newest first:

```json
{
  "type": "github",
  "parameters": {
    "resource": "repository",
    "operation": "getIssues",
    "owner": "octocat",
    "repository": "Hello-World",
    "returnAll": false,
    "limit": 50,
    "getRepositoryIssuesFilters": {
      "state": "open",
      "labels": "bug",
      "sort": "created",
      "direction": "desc"
    }
  }
}
```

Cut a release:

```json
{
  "type": "github",
  "parameters": {
    "resource": "release",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "releaseTag": "v1.0.0",
    "additionalFields": {
      "name": "Version 1.0.0",
      "body": "First stable release",
      "draft": false,
      "prerelease": false
    }
  }
}
```

Request changes on a pull request:

```json
{
  "type": "github",
  "parameters": {
    "resource": "review",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "pullRequestNumber": 456,
    "event": "requestChanges",
    "reviewBody": "Please fix the coding style issues.",
    "reviewAdditionalFields": {
      "commitId": "abc123def456"
    }
  }
}
```

Invite someone to an organization:

```json
{
  "type": "github",
  "parameters": {
    "resource": "user",
    "operation": "invite",
    "organization": "my-org",
    "email": "{{ $json.email }}"
  }
}
```

List the issues assigned to the authenticated user:

```json
{
  "type": "github",
  "parameters": {
    "resource": "user",
    "operation": "getUserIssues",
    "returnAll": false,
    "limit": 20,
    "getUserIssuesFilters": {
      "state": "open",
      "sort": "updated",
      "direction": "desc"
    }
  }
}
```

Dispatch a GitHub Actions workflow with inputs:

```json
{
  "type": "github",
  "parameters": {
    "resource": "workflow",
    "operation": "dispatch",
    "owner": "octocat",
    "repository": "Hello-World",
    "workflowId": "deploy.yml",
    "ref": "main",
    "inputs": "{\"environment\": \"production\", \"version\": \"{{ $json.version }}\"}"
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Manage GitHub repositories, files, issues, releases, reviews, users, organizations, and Actions workflows via the REST API.

### Behavior notes

- **The item JSON is replaced, not merged.** Only File Get in binary mode keeps the incoming fields. Plan for that when chaining GitHub nodes together — a second node can still read the first node's output, but not the data that came before it.
- **Repository Owner doubles as the account name.** For Organization Get Repositories it is the organization; for User Get Repositories it is the user. It is hidden for User Invite and User Get Issues, which do not target a repository.
- **User Get Issues works on the authenticated account** — the one the credential belongs to — and takes no owner or repository.
- **Binary uploads are base64 encoded for you**, and File Get in binary mode decodes GitHub's base64 back into real bytes. Pointing File Get at a folder path fails with an explicit error.
- **Deleting a file resolves its SHA first**, so you only supply the path, the commit message and (optionally) the branch.
- **Commit author, branch and committer are nested objects** under Additional Parameters — for example `additionalParameters.branch.branch` is the branch name. Leave the branch out to commit to the repository's default branch.
- **Edit-style collections send only what you fill in.** Issue Edit Fields and Release Additional Fields are partial updates; omitted fields are left untouched.
- **Review bodies are required for two events.** `requestChanges` and `comment` need a body; `approve` and `pending` do not.
- **Return All pages through every result.** With it off, the request is capped at Limit, which GitHub itself limits to 100 per page.
- **Workflow Dispatch only starts a run.** GitHub returns no body, so the item reports `dispatched: true` rather than a run ID; a missing workflow fails with an explicit "could not be found" error.