Update Issue
github.update_issue
ActionBusiness appsconnection required
Calls the GitHub API PATCH /repos/{owner}/{repo}/issues/{issue_number}.
Change an issue's title, body, state, labels, assignees or milestone.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Bearer token
- Providers
- GitHub
- Secret shape
- the GitHub personal access token
- Resolved by
- config.connection_id, else node.connection_id, else the tenant's sole GitHub connection
Configuration
11 fields, 3 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
owner Repository owner — the user or organisation login. Supports {{ }}. | string | Yes | — | — | octocat |
repo Repository name, without the owner prefix. Supports {{ }}. | string | Yes | — | — | hello-world |
issue_number Issue number as shown in the UI (not the internal id). | string | Yes | — | — | 1 |
title New issue title. | string | No | — | — | — |
body New issue body (Markdown). | string | No | — | — | — |
state Replaces the stored state; blank leaves it as it is. | string | No | — | one of "open", "closed" | — |
state_reason Why the state changed. Only meaningful alongside state. | string | Conditional | — | one of "completed", "not_planned", "duplicate", "reopened"; only with state | — |
duplicate_issue_id Internal id of the issue this one duplicates. GitHub requires it when state_reason is duplicate, and ignores it otherwise. | string | Conditional | — | only with state_reason | — |
labels Replace the issue's labels with these names. | array | No | — | array of string | — |
assignees Replace the issue's assignees with these usernames. | array | No | — | array of string | — |
milestone Milestone number to attach, or null to clear it. | number | No | — | ≥ 1 | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"issue_number": "1",
"owner": "octocat",
"repo": "hello-world"
}Output
One shape.
result
The declared fields, plus the rest of the resource as GitHub returned it.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
ok True when GitHub accepted the call. | boolean | true |
number Issue number as shown in the UI. | number | — |
title Issue title. | string | — |
state open or closed. | string | — |
state_reason Why it is in that state, when GitHub recorded one. | string | — |
body Issue body (Markdown). | string | — |
html_url Link to the issue. | string | — |
comments How many comments it has. | number | — |
{
"body": "",
"comments": 0,
"html_url": "",
"number": 0,
"ok": true,
"state": "",
"state_reason": "",
"title": ""
}Notes
- labels and assignees replace the whole set; use add_issue_labels or add_issue_assignees to add without clearing.
- At least one changeable field must be set, or the step fails before it calls.
- state_reason is ignored unless state changes with it.
Solutions with GitHub
See Update Issue run in a workflow.
In a technical demo we add the GitHub connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.