Edit a Gitlab issue.
Input Schema
| Property | Type | Description | Required |
|---|---|---|---|
| title | string | The title of an issue. | |
| token | string | The token to use for authorization to GitLab | |
| epicId | number | ID of the epic to add the issue to. Valid values are greater than or equal to 0. | |
| labels | string | Comma-separated label names for an issue. Set to an empty string to unassign all labels. If a label does not already exist, this creates a new project label and assigns it to the issue. | |
| weight | number | The issue weight | |
| dueDate | string | The due date. Date time string in the format YYYY-MM-DD, for example 2016-03-11. | |
| repoUrl | string | - | |
| issueIid | number | The internal ID of a project's issue | |
| addLabels | string | Comma-separated label names to add to an issue. If a label does not already exist, this creates a new project label and assigns it to the issue. | |
| assignees | array | IDs of the users to assign the issue to. | |
| issueType | any | - | |
| projectId | number | The global ID or URL-encoded path of the project owned by the authenticated user. | |
| updatedAt | string | When the issue was updated. Date time string, ISO 8601 formatted | |
| stateEvent | any | - | |
| description | string | The description of an issue. Limited to 1,048,576 characters. | |
| milestoneId | number | The global ID of a milestone to assign the issue to. Set to 0 or provide an empty value to unassign a milestone | |
| confidential | boolean | Updates an issue to be confidential. | |
| removeLabels | string | Comma-separated label names to remove from an issue. | |
| discussionLocked | boolean | Flag indicating if the issue discussion is locked. If the discussion is locked only project members can add or edit comments. |
Output Schema
| Property | Type | Description | Required |
|---|---|---|---|
| state | string | The state event of an issue | |
| title | string | The title of an issue. | |
| issueId | number | The issues Id | |
| issueIid | number | The issues internal ID of a project's issue | |
| issueUrl | string | Issue WebUrl | |
| projectId | number | The project id the issue belongs to WebUrl | |
| updatedAt | string | The last updated time of the issue. |
Usage Examples
Add and remove labels, set milestone and due date
Update an existing issue by adding and removing labels, assigning a milestone, and setting a due date. Run this after generating files with fetch:template.
steps:
- id: fetch
action: fetch:template
input:
url: ./skeleton
- id: updateIssueLabels
action: gitlab:issue:edit
input:
repoUrl: "gitlab.com?owner=acme&repo=payments-service"
projectId: ${{ parameters.projectId }}
issueIid: ${{ parameters.issueIid }}
addLabels: "area/backend,priority::high"
removeLabels: "triage"
milestoneId: 103
dueDate: ${{ parameters.dueDate }} # e.g. "2025-12-15"
title: "Payment gateway timeouts"
description: "Track intermittent 504s from the provider during peak hours"
token: ${{ parameters.gitlabToken }}Close a resolved issue and set weight
Close an issue once automation has completed and set its weight to reflect the effort. This often follows a repository creation step such as publish:gitlab.
steps:
- id: fetch
action: fetch:template
input:
url: ./skeleton
- id: closeIssue
action: gitlab:issue:edit
input:
repoUrl: "gitlab.example.com?owner=platform&repo=service-catalog"
projectId: 8421
issueIid: ${{ parameters.issueIid }}
stateEvent: "close"
weight: 2
addLabels: "resolved,automation"
token: ${{ parameters.gitlabToken }}Assign to multiple users and mark as confidential with epic and due date
Assign the issue to multiple engineers, mark it confidential, link it to an epic, and set a due date. Use this when the issue contains sensitive information.
steps:
- id: fetch
action: fetch:template
input:
url: ./skeleton
- id: assignAndSecure
action: gitlab:issue:edit
input:
repoUrl: "gitlab.com?owner=acme&repo=customer-portal"
projectId: 5566
issueIid: 231
assignees:
- 42
- 77
confidential: true
epicId: 128
dueDate: "2025-11-15"
description: "Contains credentials and remediation steps. Limit visibility to project members."
token: ${{ parameters.gitlabToken }}Replace all labels and unassign milestone
Overwrite the issue labels with none and remove its milestone. Use this to reset triage after reclassification.
steps:
- id: fetch
action: fetch:template
input:
url: ./skeleton
- id: resetLabelsAndMilestone
action: gitlab:issue:edit
input:
repoUrl: "gitlab.com?owner=acme&repo=docs-site"
projectId: ${{ parameters.projectId }}
issueIid: ${{ parameters.issueIid }}
labels: ""
milestoneId: 0
discussionLocked: false
title: "Reset labels and milestone after triage"Convert to incident, lock discussion, and update description
Convert an issue to an incident, lock the discussion to project members, and add incident labels. Use this for production-impacting events.
steps:
- id: fetch
action: fetch:template
input:
url: ./skeleton
- id: incidentUpdate
action: gitlab:issue:edit
input:
repoUrl: "gitlab.example.com?owner=sre&repo=oncall-runbook"
projectId: 9901
issueIid: 77
issueType: "incident"
discussionLocked: true
stateEvent: "reopen"
addLabels: "incident,P1,oncall"
description: |
Escalated to incident after error rate spike.
Mitigation in progress. Next update at 15:30 UTC.
token: ${{ parameters.gitlabToken }}