Skip to content

GitLab

Manage and react to changes in your GitLab repositories

Setup steps:

  1. Optionally set a Group ID (ID or full path, e.g. my-org/my-subgroup) to work with a group’s projects. Leave it empty to use your personal projects.
  2. Pick an Auth Type and connect:
    • App OAuth: leave Application ID and Secret empty and click Save to start the setup wizard.
    • Personal Access Token: create a token with scopes api, read_user, read_api, write_repository, read_repository (the link prefills them), paste it into Access Token, and click Save.

Note: Triggers create project webhooks, so the connected user needs at least the Maintainer role on the projects you want to monitor. Components act as that user as well: creating, updating, or merging merge requests, approving, deploying, publishing commit statuses, and editing issue comments follow the project’s roles and protected branch/environment rules.

Trigger key: gitlab.onBranchCreated

The On Branch Created trigger starts a workflow execution when a new branch is created in a GitLab project.

  • Preview environments: Provision a temporary environment when a feature branch is created
  • Branch conventions: Validate branch naming and alert on anomalies
  • Release tracking: Open tracking issues or apply protective rules when release branches are created
  • Project (required): GitLab project to monitor
  • Branches (required): Configure branch filters using predicates. You can match full refs (refs/heads/main) or branch names (main).

GitLab signals branch creation with a push event whose “before” SHA is all zeros. Each event includes:

  • ref: The branch reference that was created (e.g. refs/heads/feature/new-feature)
  • before: All-zero SHA, indicating the branch did not exist before
  • after: The SHA the new branch points to
  • user_name/user_username: The user who created the branch
  • project: Project information

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"before": "0000000000000000000000000000000000000000",
"checkout_sha": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"commits": [],
"event_name": "push",
"message": null,
"object_kind": "push",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "main",
"description": "",
"git_http_url": "https://gitlab.example.com/jsmith/example.git",
"git_ssh_url": "git@gitlab.example.com:jsmith/example.git",
"id": 15,
"name": "Example",
"namespace": "Jsmith",
"path_with_namespace": "jsmith/example",
"visibility_level": 0,
"web_url": "https://gitlab.example.com/jsmith/example"
},
"project_id": 15,
"push_options": {},
"ref": "refs/heads/feature/new-feature",
"ref_protected": false,
"repository": {
"description": "",
"git_http_url": "https://gitlab.example.com/jsmith/example.git",
"git_ssh_url": "git@gitlab.example.com:jsmith/example.git",
"homepage": "https://gitlab.example.com/jsmith/example",
"name": "Example",
"url": "git@gitlab.example.com:jsmith/example.git",
"visibility_level": 0
},
"total_commits_count": 0,
"user_avatar": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",
"user_email": "john@example.com",
"user_id": 4,
"user_name": "John Smith",
"user_username": "jsmith"
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.branchCreated"
}

Trigger key: gitlab.onIssue

The On Issue trigger starts a workflow execution when issue events occur in a GitLab project.

  • Notify Slack when an issue is created or assigned for triage
  • Create a Jira issue when a GitLab issue is created for traceability
  • Update external dashboards or close linked tickets when an issue is closed
  • Project (required): GitLab project to monitor
  • Actions (required): Select which issue actions to listen for. Default: opened.
  • Labels (optional): Only trigger for issues with specific labels
  • Default channel: Emits issue payload including issue IID, title, state, labels, assignees, author, and action type

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 1,
"name": "John Doe",
"username": "johndoe"
}
],
"event_type": "issue",
"labels": [
{
"color": "#dc3545",
"created_at": "2026-01-01T00:00:00Z",
"description": "Bug reports",
"group_id": null,
"id": 206,
"project_id": 15,
"template": false,
"title": "bug",
"type": "ProjectLabel",
"updated_at": "2026-01-01T00:00:00Z"
}
],
"object_attributes": {
"action": "open",
"created_at": "2026-02-05T14:00:00Z",
"description": "This is an example issue description for testing the webhook",
"id": 301,
"iid": 1,
"state": "opened",
"title": "Example Issue",
"updated_at": "2026-02-05T14:00:00Z",
"url": "https://gitlab.com/group/my-project/-/issues/1"
},
"object_kind": "issue",
"project": {
"avatar_url": null,
"default_branch": "main",
"description": "Example project",
"git_http_url": "https://gitlab.com/group/my-project.git",
"git_ssh_url": "git@gitlab.com:group/my-project.git",
"id": 15,
"name": "my-project",
"namespace": "group",
"path_with_namespace": "group/my-project",
"visibility_level": 20,
"web_url": "https://gitlab.com/group/my-project"
},
"repository": {
"description": "Example project",
"homepage": "https://gitlab.com/group/my-project",
"name": "my-project",
"url": "git@gitlab.com:group/my-project.git"
},
"user": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"email": "johndoe@example.com",
"id": 1,
"name": "John Doe",
"username": "johndoe"
}
},
"timestamp": "2026-02-05T14:00:00.000000000Z",
"type": "gitlab.issue"
}

Trigger key: gitlab.onIssueComment

The On Issue Comment trigger starts a workflow execution when a comment is added to an issue in a GitLab project.

  • Command processing: Process slash commands in issue comments (e.g., /sp-investigate to trigger an agent that investigates whether the issue is worth fixing and rates its urgency)
  • Bot interactions: Respond to issue comments with automated actions
  • Notification systems: Notify teams when important issue comments are added
  • Project (required): GitLab project to monitor
  • Content Filter (optional): Regex pattern to filter comments by content (e.g., /sp-investigate to only trigger on comments containing “/sp-investigate”)

Each comment event includes:

  • object_attributes: Comment information including note body, author, and URL
  • issue: Issue the comment was added to
  • user: User who added the comment
  • project: Project information

Common expression paths:

  • Issue IID: root().data.issue.iid
  • Issue title: root().data.issue.title
  • Comment body: root().data.object_attributes.note
  • Comment URL: root().data.object_attributes.url

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"event_type": "note",
"issue": {
"author_id": 1,
"created_at": "2026-02-10 09:00:00 UTC",
"description": "Steps to reproduce: submit the login form with a wrong password.",
"id": 45,
"iid": 8,
"labels": [
"bug"
],
"state": "opened",
"title": "Login page throws 500 on invalid credentials",
"updated_at": "2026-02-12 20:40:00 UTC",
"url": "https://gitlab.example.com/group/example/-/issues/8"
},
"object_attributes": {
"action": "create",
"attachment": null,
"author_id": 1,
"created_at": "2026-02-12 20:40:00 UTC",
"discussion_id": "6c2bb44bdc7f5c8f21b9ff8422f3d60cc0e5e719",
"id": 1355,
"note": "/sp-investigate",
"noteable_id": 45,
"noteable_type": "Issue",
"project_id": 1,
"system": false,
"updated_at": "2026-02-12 20:40:00 UTC",
"url": "https://gitlab.example.com/group/example/-/issues/8#note_1355"
},
"object_kind": "note",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "main",
"description": "Project used to demonstrate issue comment webhook payloads.",
"git_http_url": "https://gitlab.example.com/group/example.git",
"git_ssh_url": "ssh://git@gitlab.example.com:group/example.git",
"id": 1,
"name": "Example Project",
"namespace": "group",
"path_with_namespace": "group/example",
"visibility_level": 20,
"web_url": "https://gitlab.example.com/group/example"
},
"project_id": 1,
"repository": {
"description": "Project used to demonstrate issue comment webhook payloads.",
"homepage": "https://gitlab.example.com/group/example",
"name": "Example Project",
"url": "ssh://git@gitlab.example.com/group/example.git"
},
"user": {
"avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon",
"email": "agarcia@example.com",
"id": 1,
"name": "Alex Garcia",
"username": "agarcia"
}
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.issueComment"
}

Trigger key: gitlab.onJob

The On Job trigger starts a workflow execution when the status of a CI/CD job changes in a GitLab project.

Jobs are the individual units of work inside a pipeline. Where the On Pipeline trigger fires once for the pipeline as a whole, this trigger fires for each job, so you can react to one specific job - a deploy, a scan, a migration - without waiting for the rest of the pipeline.

  • Per-job automation: Run a workflow the moment the deploy job succeeds, without waiting for the whole pipeline
  • Targeted failure handling: Page or open an issue when a named job fails
  • Stage gates: React when a job in a specific stage finishes
  • Build observability: Record durations, runners, and failure reasons per job
  • Project (required): GitLab project to monitor
  • Statuses (required): Job statuses to listen for. Default: success, failed.
  • Names (optional): Filter on the job name, e.g. equals deploy or matches test-.*
  • Refs (optional): Filter on the branch or tag the job ran for

Each event includes:

  • build_name, build_stage, build_status: The job, its stage, and its new status
  • build_started_at, build_finished_at, build_duration, build_queued_duration: Job timings
  • build_failure_reason, build_allow_failure, retries_count: Failure and retry details
  • pipeline_id, ref, sha, tag: The pipeline and ref the job belongs to
  • runner: The runner that executed the job
  • commit, project, repository, user, environment: Surrounding context

Note that GitLab excludes trigger jobs from this event, and commit statuses published by external systems are not jobs, so they do not produce job events.

The connected token needs the api scope, and the connected user needs at least the Maintainer role on the project so SuperPlane can create the webhook.

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"before_sha": "9d1a3c4e7b2f8a6d5c0e1b3a7f9d2c4e6b8a0f13",
"build_allow_failure": false,
"build_created_at": "2026-02-13T17:56:00.412Z",
"build_duration": 120.166,
"build_failure_reason": "unknown_failure",
"build_finished_at": "2026-02-13T17:59:30.284Z",
"build_id": 998876,
"build_name": "unit-tests",
"build_queued_duration": 3.204,
"build_stage": "test",
"build_started_at": "2026-02-13T17:57:30.118Z",
"build_status": "success",
"commit": {
"author_email": "jrivera@example.com",
"author_name": "Jamie Rivera",
"author_url": "https://gitlab.com/jrivera",
"duration": 240,
"finished_at": "2026-02-13T18:00:00.000Z",
"id": 12345,
"message": "Cache dependencies between CI jobs\n",
"name": "Pipeline for branch: main",
"sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55",
"started_at": "2026-02-13T17:56:04.000Z",
"status": "success"
},
"environment": null,
"object_kind": "build",
"pipeline_id": 12345,
"project": {
"avatar_url": null,
"ci_config_path": ".gitlab-ci.yml",
"default_branch": "main",
"description": "Example project used by SuperPlane workflows.",
"git_http_url": "https://gitlab.com/group/example-project.git",
"git_ssh_url": "git@gitlab.com:group/example-project.git",
"id": 987,
"name": "example-project",
"namespace": "group",
"path_with_namespace": "group/example-project",
"visibility_level": 20,
"web_url": "https://gitlab.com/group/example-project"
},
"project_id": 987,
"project_name": "group/example-project",
"ref": "main",
"repository": {
"description": "Example project used by SuperPlane workflows.",
"git_http_url": "https://gitlab.com/group/example-project.git",
"git_ssh_url": "git@gitlab.com:group/example-project.git",
"homepage": "https://gitlab.com/group/example-project",
"name": "example-project",
"url": "git@gitlab.com:group/example-project.git",
"visibility_level": 20
},
"retries_count": 0,
"runner": {
"active": true,
"description": "shared-runners-manager-6.gitlab.com",
"id": 380987,
"is_shared": true,
"runner_type": "instance_type",
"tags": [
"linux",
"docker",
"shared-runner"
]
},
"sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55",
"tag": false,
"user": {
"avatar_url": "https://gitlab.com/uploads/-/system/user/avatar/22/avatar.png",
"email": "jrivera@example.com",
"id": 22,
"name": "Jamie Rivera",
"username": "jrivera"
}
},
"timestamp": "2026-02-13T17:59:30.284000000Z",
"type": "gitlab.job"
}

Trigger key: gitlab.onMRDiffNote

The On MR Diff Note trigger starts a workflow execution when an inline comment is added to a merge request’s diff in a GitLab project.

Diff notes (also known as inline comments) are comments left on a specific line of a merge request’s changes, as opposed to a regular top-level merge request comment. Use gitlab.onMergeComment if you want to react to regular merge request discussion comments instead.

  • Review triage: Have an agent triage a merge request review by reading the diff note together with the file and line it was left on
  • Command processing: Process slash commands left as inline review comments (e.g., /fix, /explain)
  • Notification systems: Notify teams when important inline review comments are added
  • Project (required): GitLab project to monitor
  • Content Filter (optional): Regex pattern to filter comments by content (e.g., /fix to only trigger on comments containing “/fix”)

Each diff note event includes:

  • object_attributes: Comment information including note body, author, URL, and the diff position (file paths, line numbers, and commit SHAs the comment is anchored to)
  • merge_request: Merge request the comment was added to
  • user: User who added the comment
  • project: Project information

Common expression paths:

  • Merge request IID: root().data.merge_request.iid
  • Merge request title: root().data.merge_request.title
  • Comment body: root().data.object_attributes.note
  • Diff file path: root().data.object_attributes.position.new_path
  • Diff line number: root().data.object_attributes.position.new_line

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"event_type": "note",
"merge_request": {
"author_id": 1,
"created_at": "2026-02-12 18:30:00 UTC",
"description": "Adds support for additional GitLab webhook trigger types.",
"draft": false,
"id": 93,
"iid": 12,
"last_commit": {
"author": {
"email": "agarcia@example.com",
"name": "Alex Garcia"
},
"id": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47",
"message": "Add merge request trigger",
"timestamp": "2026-02-12T18:25:00Z",
"url": "https://gitlab.example.com/group/example/-/commit/372fa8f809fe161ee0f22e04d1a4074e0be6ac47"
},
"merge_status": "can_be_merged",
"source_branch": "feature/merge-request-trigger",
"source_project_id": 1,
"state": "opened",
"target_branch": "main",
"target_project_id": 1,
"title": "Add merge request trigger",
"updated_at": "2026-02-13 10:15:00 UTC",
"url": "https://gitlab.example.com/group/example/-/merge_requests/12",
"work_in_progress": false
},
"object_attributes": {
"action": "create",
"attachment": null,
"author_id": 1,
"commit_id": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47",
"created_at": "2026-02-13 10:15:00 UTC",
"discussion_id": "b4f2a7d4c3d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9",
"id": 1401,
"line_code": "a5cc2925ca8258af241be7e5b0381edf30266302_10_10",
"note": "This variable name is misleading, can we rename it?",
"noteable_id": 93,
"noteable_type": "MergeRequest",
"position": {
"base_sha": "1234567890abcdef1234567890abcdef12345678",
"head_sha": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47",
"new_line": 10,
"new_path": "src/handlers/login.go",
"old_line": 10,
"old_path": "src/handlers/login.go",
"position_type": "text",
"start_sha": "234567890abcdef1234567890abcdef123456789"
},
"project_id": 1,
"system": false,
"type": "DiffNote",
"updated_at": "2026-02-13 10:15:00 UTC",
"url": "https://gitlab.example.com/group/example/-/merge_requests/12#note_1401"
},
"object_kind": "note",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "main",
"description": "Project used to demonstrate merge request diff note webhook payloads.",
"git_http_url": "https://gitlab.example.com/group/example.git",
"git_ssh_url": "ssh://git@gitlab.example.com:group/example.git",
"id": 1,
"name": "Example Project",
"namespace": "group",
"path_with_namespace": "group/example",
"visibility_level": 20,
"web_url": "https://gitlab.example.com/group/example"
},
"project_id": 1,
"repository": {
"description": "Project used to demonstrate merge request diff note webhook payloads.",
"homepage": "https://gitlab.example.com/group/example",
"name": "Example Project",
"url": "ssh://git@gitlab.example.com/group/example.git"
},
"user": {
"avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon",
"email": "agarcia@example.com",
"id": 1,
"name": "Alex Garcia",
"username": "agarcia"
}
},
"timestamp": "2026-02-13T10:15:00.000000000Z",
"type": "gitlab.mrDiffNote"
}

Trigger key: gitlab.onMergeComment

The On Merge Comment trigger starts a workflow execution when a comment is added to a merge request in a GitLab project.

  • Command processing: Process slash commands in merge request comments (e.g., /deploy, /test)
  • Bot interactions: Respond to merge request comments with automated actions
  • Notification systems: Notify teams when important merge request comments are added
  • Project (required): GitLab project to monitor
  • Content Filter (optional): Regex pattern to filter comments by content (e.g., /deploy to only trigger on comments containing “/deploy”)

Each comment event includes:

  • object_attributes: Comment information including note body, author, and URL
  • merge_request: Merge request the comment was added to
  • user: User who added the comment
  • project: Project information

Common expression paths:

  • Merge request IID: root().data.merge_request.iid
  • Merge request title: root().data.merge_request.title
  • Comment body: root().data.object_attributes.note
  • Comment URL: root().data.object_attributes.url

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"event_type": "note",
"merge_request": {
"author_id": 1,
"created_at": "2026-02-12 18:30:00 UTC",
"description": "Adds support for additional GitLab webhook trigger types.",
"draft": false,
"id": 93,
"iid": 12,
"last_commit": {
"author": {
"email": "agarcia@example.com",
"name": "Alex Garcia"
},
"id": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47",
"message": "Add merge request trigger",
"timestamp": "2026-02-12T18:25:00Z",
"url": "https://gitlab.example.com/group/example/-/commit/372fa8f809fe161ee0f22e04d1a4074e0be6ac47"
},
"merge_status": "can_be_merged",
"source_branch": "feature/merge-request-trigger",
"source_project_id": 1,
"state": "opened",
"target_branch": "main",
"target_project_id": 1,
"title": "Add merge request trigger",
"updated_at": "2026-02-12 20:40:00 UTC",
"url": "https://gitlab.example.com/group/example/-/merge_requests/12",
"work_in_progress": false
},
"object_attributes": {
"action": "create",
"attachment": null,
"author_id": 1,
"commit_id": "",
"created_at": "2026-02-12 20:40:00 UTC",
"discussion_id": "6c2bb44bdc7f5c8f21b9ff8422f3d60cc0e5e719",
"id": 1244,
"line_code": null,
"note": "This looks good, but please update the docs before merging.",
"noteable_id": 93,
"noteable_type": "MergeRequest",
"project_id": 1,
"system": false,
"updated_at": "2026-02-12 20:40:00 UTC",
"url": "https://gitlab.example.com/group/example/-/merge_requests/12#note_1244"
},
"object_kind": "note",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "main",
"description": "Project used to demonstrate merge request comment webhook payloads.",
"git_http_url": "https://gitlab.example.com/group/example.git",
"git_ssh_url": "ssh://git@gitlab.example.com:group/example.git",
"id": 1,
"name": "Example Project",
"namespace": "group",
"path_with_namespace": "group/example",
"visibility_level": 20,
"web_url": "https://gitlab.example.com/group/example"
},
"project_id": 1,
"repository": {
"description": "Project used to demonstrate merge request comment webhook payloads.",
"homepage": "https://gitlab.example.com/group/example",
"name": "Example Project",
"url": "ssh://git@gitlab.example.com/group/example.git"
},
"user": {
"avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon",
"email": "agarcia@example.com",
"id": 1,
"name": "Alex Garcia",
"username": "agarcia"
}
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.mergeComment"
}

Trigger key: gitlab.onMergeRequest

The On Merge Request trigger starts a workflow execution when merge request events occur in a GitLab project.

  • MR automation: Automate actions when merge requests are opened, merged, or closed
  • Code review workflows: Trigger review processes or notifications
  • CI/CD integration: Run tests, builds, or preview environments on merge request events
  • Status updates: Update systems when merge request status changes
  • Project (required): GitLab project to monitor
  • Actions (required): Select which merge request actions to listen for (open, close, reopen, update, approved, merge, etc.). Default: open.

Each merge request event includes:

  • object_attributes: Complete merge request information including title, description, state, action, source/target branches, and URL
  • changes: When the merge request is updated, includes what changed (title, description, labels, etc.)
  • assignees: Users assigned to the merge request
  • reviewers: Users requested to review the merge request
  • labels: Labels applied to the merge request
  • project: Project information
  • repository: Repository information
  • user: User who triggered the event

Common expression paths:

  • Merge request IID: root().data.object_attributes.iid
  • Merge request title: root().data.object_attributes.title
  • Action: root().data.object_attributes.action
  • State: root().data.object_attributes.state
  • Source branch: root().data.object_attributes.source_branch
  • Target branch: root().data.object_attributes.target_branch
  • Merge request URL: root().data.object_attributes.url

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/ab12cd34?s=80\u0026d=identicon",
"email": "jrivera@example.com",
"id": 4,
"name": "Jamie Rivera",
"username": "jrivera"
}
],
"changes": {
"title": {
"current": "Add merge request trigger",
"previous": "Add trigger"
}
},
"event_type": "merge_request",
"labels": [
{
"id": 101,
"title": "backend"
}
],
"object_attributes": {
"action": "open",
"description": "Adds support for additional GitLab webhook trigger types.",
"draft": false,
"id": 93,
"iid": 12,
"merge_status": "can_be_merged",
"source_branch": "feature/merge-request-trigger",
"state": "opened",
"target_branch": "main",
"title": "Add merge request trigger",
"url": "https://gitlab.example.com/group/example/-/merge_requests/12",
"work_in_progress": false
},
"object_kind": "merge_request",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "main",
"description": "Project used to demonstrate merge request webhook payloads.",
"git_http_url": "https://gitlab.example.com/group/example.git",
"git_ssh_url": "ssh://git@gitlab.example.com:group/example.git",
"id": 1,
"name": "Example Project",
"namespace": "group",
"path_with_namespace": "group/example",
"visibility_level": 20,
"web_url": "https://gitlab.example.com/group/example"
},
"repository": {
"description": "Project used to demonstrate merge request webhook payloads.",
"git_http_url": "https://gitlab.example.com/group/example.git",
"git_ssh_url": "ssh://git@gitlab.example.com:group/example.git",
"homepage": "https://gitlab.example.com/group/example",
"name": "Example Project",
"url": "ssh://git@gitlab.example.com/group/example.git",
"visibility_level": 20
},
"reviewers": [
{
"avatar_url": "https://www.gravatar.com/avatar/ef56gh78?s=80\u0026d=identicon",
"email": "mlee@example.com",
"id": 6,
"name": "Morgan Lee",
"state": "unreviewed",
"username": "mlee"
}
],
"user": {
"avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon",
"email": "agarcia@example.com",
"id": 1,
"name": "Alex Garcia",
"username": "agarcia"
}
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.mergeRequest"
}

Trigger key: gitlab.onMilestone

The On Milestone trigger starts a workflow execution when milestone events occur in a GitLab project.

  • Project (required): GitLab project to monitor
  • Actions (required): Select which milestone actions to listen for. Default: create.
  • Default channel: Emits milestone payload data with action, project, and object attributes
{
"data": {
"action": "create",
"event_type": "milestone",
"object_attributes": {
"created_at": "2025-06-16 14:10:57 UTC",
"description": "First stable release",
"due_date": "2025-06-30",
"group_id": null,
"id": 61,
"iid": 10,
"project_id": 1,
"start_date": "2025-06-16",
"state": "active",
"title": "v1.0",
"updated_at": "2025-06-16 14:10:57 UTC"
},
"object_kind": "milestone",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "master",
"description": "Aut reprehenderit ut est.",
"git_http_url": "http://example.com/gitlabhq/gitlab-test.git",
"git_ssh_url": "git@example.com:gitlabhq/gitlab-test.git",
"homepage": "http://example.com/gitlabhq/gitlab-test",
"http_url": "http://example.com/gitlabhq/gitlab-test.git",
"id": 1,
"name": "Gitlab Test",
"namespace": "GitlabHQ",
"path_with_namespace": "gitlabhq/gitlab-test",
"ssh_url": "git@example.com:gitlabhq/gitlab-test.git",
"url": "http://example.com/gitlabhq/gitlab-test.git",
"visibility_level": 20,
"web_url": "http://example.com/gitlabhq/gitlab-test"
}
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.milestone"
}

Trigger key: gitlab.onPipeline

The On Pipeline trigger starts a workflow execution when pipeline events occur in a GitLab project.

  • Project (required): GitLab project to monitor
  • Statuses (required): Select which pipeline statuses to listen for. Default: success, failed, canceled.
  • Default channel: Emits pipeline webhook payload data including status, ref, SHA, and project information

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"merge_request": {
"iid": 12,
"title": "Improve CI pipeline"
},
"object_attributes": {
"created_at": "2026-02-10 12:00:00 UTC",
"duration": 190,
"finished_at": "2026-02-10 12:03:10 UTC",
"id": 12345,
"iid": 321,
"ref": "main",
"sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55",
"source": "push",
"status": "success",
"updated_at": "2026-02-10 12:03:10 UTC",
"url": "https://gitlab.com/group/example-project/-/pipelines/12345"
},
"object_kind": "pipeline",
"project": {
"id": 987,
"name": "example-project",
"path_with_namespace": "group/example-project",
"web_url": "https://gitlab.com/group/example-project"
},
"user": {
"id": 22,
"name": "Jamie Rivera",
"username": "jrivera"
}
},
"timestamp": "2026-02-13T18:00:00.000000000Z",
"type": "gitlab.pipeline"
}

Trigger key: gitlab.onPush

The On Push trigger starts a workflow execution when code is pushed to an existing branch in a GitLab project. New-branch creation is handled by the dedicated On Branch Created trigger, and branch deletions are ignored.

  • CI/CD automation: Trigger builds and deployments when code is pushed to main
  • Policy gates: Run linting, security, or policy checks on every push
  • Notifications: Post a summary to Slack when code lands on a branch
  • Project (required): GitLab project to monitor
  • Branches (required): Configure branch filters using predicates. You can match full refs (refs/heads/main) or branch names (main).

Each push event includes:

  • ref: The branch reference that was pushed to (e.g. refs/heads/main)
  • before/after: Commit SHAs before and after the push
  • commits: Array of commit information, each with added/modified/removed file lists
  • user_name/user_username: The user who pushed
  • project: Project information

This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"before": "95790bf891e76fee5e1747ab589903a6a1f80f22",
"checkout_sha": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"commits": [
{
"added": [
"CHANGELOG.md"
],
"author": {
"email": "john@example.com",
"name": "John Smith"
},
"id": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
"message": "Update Catalog page",
"modified": [
"app/controller/application.rb"
],
"removed": [],
"timestamp": "2026-02-12T20:39:00+00:00",
"title": "Update Catalog page",
"url": "https://gitlab.example.com/jsmith/example/-/commit/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327"
},
{
"added": [],
"author": {
"email": "john@example.com",
"name": "John Smith"
},
"id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"message": "Fix catalog rendering bug",
"modified": [
"app/views/catalog/index.html.haml"
],
"removed": [],
"timestamp": "2026-02-12T20:40:00+00:00",
"title": "Fix catalog rendering bug",
"url": "https://gitlab.example.com/jsmith/example/-/commit/da1560886d4f094c3e6c9ef40349f7d38b5d27d7"
}
],
"event_name": "push",
"message": null,
"object_kind": "push",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "main",
"description": "",
"git_http_url": "https://gitlab.example.com/jsmith/example.git",
"git_ssh_url": "git@gitlab.example.com:jsmith/example.git",
"id": 15,
"name": "Example",
"namespace": "Jsmith",
"path_with_namespace": "jsmith/example",
"visibility_level": 0,
"web_url": "https://gitlab.example.com/jsmith/example"
},
"project_id": 15,
"push_options": {},
"ref": "refs/heads/main",
"ref_protected": true,
"repository": {
"description": "",
"git_http_url": "https://gitlab.example.com/jsmith/example.git",
"git_ssh_url": "git@gitlab.example.com:jsmith/example.git",
"homepage": "https://gitlab.example.com/jsmith/example",
"name": "Example",
"url": "git@gitlab.example.com:jsmith/example.git",
"visibility_level": 0
},
"total_commits_count": 2,
"user_avatar": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",
"user_email": "john@example.com",
"user_id": 4,
"user_name": "John Smith",
"user_username": "jsmith"
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.push"
}

Trigger key: gitlab.onRelease

The On Release trigger starts a workflow execution when release events occur in a GitLab project.

  • Project (required): GitLab project to monitor
  • Actions (required): Select which release actions to listen for. Default: create.
  • Default channel: Emits release payload data with action and release metadata
{
"data": {
"action": "create",
"assets": {
"count": 2,
"links": [
{
"id": 1,
"link_type": "other",
"name": "Changelog",
"url": "https://example.net/changelog"
}
],
"sources": [
{
"format": "zip",
"url": "https://example.com/gitlab-org/release-webhook-example/-/archive/v1.1/release-webhook-example-v1.1.zip"
},
{
"format": "tar.gz",
"url": "https://example.com/gitlab-org/release-webhook-example/-/archive/v1.1/release-webhook-example-v1.1.tar.gz"
}
]
},
"commit": {
"author": {
"email": "user@example.com",
"name": "Example User"
},
"id": "ee0a3fb31ac16e11b9dbb596ad16d4af654d08f8",
"message": "Release v1.1",
"timestamp": "2020-10-31T14:58:32+11:00",
"title": "Release v1.1",
"url": "https://example.com/gitlab-org/release-webhook-example/-/commit/ee0a3fb31ac16e11b9dbb596ad16d4af654d08f8"
},
"created_at": "2020-11-02 12:55:12 UTC",
"description": "v1.1 has been released",
"id": 1,
"name": "v1.1",
"object_kind": "release",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "master",
"description": "",
"git_http_url": "https://example.com/gitlab-org/release-webhook-example.git",
"git_ssh_url": "ssh://git@example.com/gitlab-org/release-webhook-example.git",
"id": 1,
"name": "release-webhook-example",
"namespace": "Gitlab",
"path_with_namespace": "gitlab-org/release-webhook-example",
"visibility_level": 0,
"web_url": "https://example.com/gitlab-org/release-webhook-example"
},
"released_at": "2020-11-02 12:55:12 UTC",
"tag": "v1.1",
"url": "https://example.com/gitlab-org/release-webhook-example/-/releases/v1.1"
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.release"
}

Trigger key: gitlab.onTag

The On Tag trigger starts a workflow execution when tag push events occur in a GitLab project.

  • Project (required): GitLab project to monitor
  • Tags (required): Configure tag filters using predicates. You can match full refs (refs/tags/v1.0.0) or tag names (v1.0.0).
  • Default channel: Emits tag push payload data including ref, before/after SHA, and project information
{
"data": {
"after": "82b3d5ae55f7080f1e6022629cdb57bfae7cccc7",
"before": "0000000000000000000000000000000000000000",
"checkout_sha": "82b3d5ae55f7080f1e6022629cdb57bfae7cccc7",
"commits": [],
"event_name": "tag_push",
"message": "Tag message",
"object_kind": "tag_push",
"project": {
"avatar_url": null,
"ci_config_path": null,
"default_branch": "master",
"description": "",
"git_http_url": "http://example.com/jsmith/example.git",
"git_ssh_url": "git@example.com:jsmith/example.git",
"id": 1,
"name": "Example",
"namespace": "Jsmith",
"path_with_namespace": "jsmith/example",
"visibility_level": 0,
"web_url": "http://example.com/jsmith/example"
},
"push_options": {},
"ref": "refs/tags/v1.0.0",
"ref_protected": true,
"repository": {
"description": "",
"git_http_url": "http://example.com/jsmith/example.git",
"git_ssh_url": "git@example.com:jsmith/example.git",
"homepage": "http://example.com/jsmith/example",
"name": "Example",
"url": "ssh://git@example.com/jsmith/example.git",
"visibility_level": 0
},
"total_commits_count": 0,
"user_email": "john@example.com",
"user_id": 1,
"user_name": "John Smith",
"user_username": "jsmith"
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.tag"
}

Trigger key: gitlab.onVulnerability

The On Vulnerability trigger starts a workflow execution when vulnerability events occur in a GitLab project.

  • Project (required): GitLab project to monitor
  • Default channel: Emits vulnerability payload data including severity, state, location, and linked issues
{
"data": {
"object_attributes": {
"auto_resolved": false,
"confidence": "unknown",
"confidence_overridden": false,
"confirmed_at": "2025-01-08T00:46:14.413Z",
"confirmed_by_id": 1,
"created_at": "2025-01-08T00:46:14.413Z",
"cvss": [
{
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
"vendor": "NVD"
}
],
"dismissed_at": null,
"dismissed_by_id": null,
"identifiers": [
{
"external_id": "29dce398-220a-4315-8c84-16cd8b6d9b05",
"external_type": "gemnasium",
"name": "Gemnasium-29dce398-220a-4315-8c84-16cd8b6d9b05",
"url": "https://gitlab.com/gitlab-org/security-products/gemnasium-db/-/blob/master/gem/rexml/CVE-2024-41123.yml"
},
{
"external_id": "CVE-2024-41123",
"external_type": "cve",
"name": "CVE-2024-41123",
"url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-41123"
}
],
"issues": [
{
"created_at": "2025-01-08T00:46:14.429Z",
"title": "REXML ReDoS vulnerability",
"updated_at": "2025-01-08T00:46:14.429Z",
"url": "https://example.com/flightjs/Flight/-/issues/1"
}
],
"location": {
"dependency": {
"package": {
"name": "rexml"
},
"version": "3.3.1"
},
"file": "Gemfile.lock"
},
"project_id": 1,
"report_type": "dependency_scanning",
"resolved_at": null,
"resolved_by_id": null,
"resolved_on_default_branch": false,
"severity": "high",
"severity_overridden": false,
"state": "confirmed",
"title": "REXML DoS vulnerability",
"updated_at": "2025-01-08T00:46:14.413Z",
"url": "https://example.com/flightjs/Flight/-/security/vulnerabilities/1"
},
"object_kind": "vulnerability"
},
"timestamp": "2026-02-12T20:40:00.000000000Z",
"type": "gitlab.vulnerability"
}

Component key: gitlab.acceptMergeRequest

The Accept Merge Request component merges an open GitLab merge request.

  • Automated merge gates: Merge a merge request after agent checks, review pipelines, or policy checks pass
  • Release automation: Merge approved promotion branches into a release branch
  • Queue workflows: Merge merge requests from a controlled SuperPlane workflow
  • Project (required): The GitLab project containing the merge request
  • Merge Request IID (required): The internal ID (IID) of the merge request to merge (supports expressions)
  • Merge Commit Message: Optional custom merge commit message
  • Squash: If enabled, squash all commits into a single commit on merge
  • Squash Commit Message: Optional custom squash commit message
  • Remove Source Branch: If enabled, removes the source branch after merging
  • Expected SHA: Optional head SHA guard. GitLab rejects the merge if the source branch head has changed.

The connected user must be allowed to merge into the target branch. Merging into protected branches (e.g. the default branch) requires the Maintainer role by default, unless the branch’s Allowed to merge setting includes Developers.

Returns the merged merge request object, including state, merge commit SHA, source and target branches, and the merge request URL.

{
"data": {
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
}
],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
},
"closed_at": null,
"closed_by": null,
"created_at": "2026-02-13T08:46:00.000Z",
"description": "Adds the new login page with SSO support",
"detailed_merge_status": "not_open",
"draft": false,
"id": 1,
"iid": 42,
"labels": [
"feature"
],
"merge_commit_sha": "9999999999999999999999999999999999999999",
"merge_error": null,
"merge_user": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "https://gitlab.example.com/root"
},
"merged_at": "2026-02-13T11:16:17.520Z",
"milestone": null,
"project_id": 3,
"reviewers": [],
"sha": "8888888888888888888888888888888888888888",
"should_remove_source_branch": true,
"source_branch": "feature/login-page",
"squash": false,
"squash_commit_sha": null,
"state": "merged",
"target_branch": "main",
"title": "feat: add login page",
"updated_at": "2026-02-13T11:16:17.520Z",
"web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42"
},
"timestamp": "2026-02-13T11:16:17.520Z",
"type": "gitlab.mergeRequest"
}

Component key: gitlab.addIssueLabel

The Add Issue Label component adds one or more labels to an existing GitLab issue without affecting existing labels.

  • Triage automation: Automatically label issues based on content or source
  • Status tracking: Add status labels as issues move through workflows
  • Priority tagging: Apply priority labels based on external signals
  • Project (required): The GitLab project containing the issue
  • Issue IID (required): The internal ID (IID) of the issue to add labels to (supports expressions)
  • Labels (required): List of label names to add to the issue. If a label does not already exist, GitLab creates it.

Returns the full list of labels currently on the issue after the addition.

{
"data": [
"bug",
"urgent",
"needs-triage"
],
"timestamp": "2026-02-13T11:16:17.520Z",
"type": "gitlab.labels"
}

Component key: gitlab.addMergeRequestReviewers

The Add Merge Request Reviewers component requests reviews from additional users on an existing GitLab merge request. Existing reviewers are kept.

  • Automated review assignment: Add reviewers after a merge request is opened as part of a workflow
  • Escalation: Add a senior reviewer when checks fail or a change touches sensitive areas
  • Round-robin: Assign reviewers from a rotation once a merge request is ready
  • Project (required): The GitLab project containing the merge request
  • Merge Request IID (required): The internal ID (IID) of the merge request (supports expressions)
  • Reviewers (required): Users to request a review from. These are added to any existing reviewers.

The connected user needs at least the Developer role on the project to change reviewers.

Returns the updated merge request object, including its full reviewer list and URL.

{
"data": {
"assignees": [],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
},
"closed_at": null,
"closed_by": null,
"created_at": "2026-02-13T08:46:00.000Z",
"description": "Adds the new login page with SSO support",
"detailed_merge_status": "mergeable",
"draft": false,
"id": 1,
"iid": 42,
"labels": [
"feature"
],
"merge_commit_sha": null,
"merge_error": null,
"merge_user": null,
"merged_at": null,
"milestone": null,
"project_id": 3,
"reviewers": [
{
"avatar_url": "https://www.gravatar.com/avatar/def456",
"id": 30,
"name": "Alex Morgan",
"state": "active",
"username": "amorgan",
"web_url": "https://gitlab.example.com/amorgan"
},
{
"avatar_url": "https://www.gravatar.com/avatar/ghi789",
"id": 31,
"name": "Sam Chen",
"state": "active",
"username": "schen",
"web_url": "https://gitlab.example.com/schen"
}
],
"sha": "8888888888888888888888888888888888888888",
"should_remove_source_branch": true,
"source_branch": "feature/login-page",
"squash": false,
"squash_commit_sha": null,
"state": "opened",
"target_branch": "main",
"title": "feat: add login page",
"updated_at": "2026-02-13T09:30:00.000Z",
"web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42"
},
"timestamp": "2026-02-13T09:30:00.000Z",
"type": "gitlab.mergeRequest"
}

Component key: gitlab.addReaction

The Add Reaction component adds an award emoji reaction to a GitLab merge request or to a comment (note) on a merge request.

  • Acknowledge commands: Add eyes to merge request comments to indicate automation saw them
  • Workflow feedback: React with thumbsup or rocket on success paths
  • Fast triage signals: Use reactions to show status without posting extra comments
  • Project: Select the GitLab project
  • Merge Request IID: The internal ID (IID) of the merge request (supports expressions)
  • Target: Choose whether to react to the merge request itself or to a comment on it
  • Note ID: The comment (note) ID to react to. Required when the target is a comment.
  • Reaction: The award emoji name

Returns the created GitLab award emoji object, including id, name, user, and timestamp.

{
"data": {
"awardable_id": 1,
"created_at": "2023-01-01T10:00:00.000Z",
"id": 25,
"name": "eyes",
"updated_at": "2023-01-01T10:00:00.000Z",
"user": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
}
},
"timestamp": "2023-01-01T10:00:00.000Z",
"type": "gitlab.addReaction"
}

Component key: gitlab.approveMergeRequest

The Approve Merge Request component approves a GitLab merge request as the connected user.

  • Automated approval gates: Approve a merge request after agent checks, review pipelines, or policy checks pass
  • Bot reviews: Approve merge requests from a controlled SuperPlane workflow
  • Compliance workflows: Record an approval once external validations succeed
  • Project (required): The GitLab project containing the merge request
  • Merge Request IID (required): The internal ID (IID) of the merge request to approve (supports expressions)
  • Expected SHA: Optional head SHA guard. GitLab rejects the approval if the source branch head has changed.

The connected user must be an eligible approver on the project: a direct member with at least the Developer role. Merge request authors cannot approve their own merge requests unless the project allows it.

Returns the merge request approval state, including the number of approvals required and left, and who approved.

{
"data": {
"approvals_left": 1,
"approvals_required": 2,
"approved_by": [
{
"approved_at": "2026-02-13T10:15:30.000Z",
"user": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "https://gitlab.example.com/root"
}
}
],
"created_at": "2026-02-13T08:46:00.000Z",
"description": "Adds the new login page with SSO support",
"id": 1,
"iid": 42,
"merge_status": "can_be_merged",
"project_id": 3,
"state": "opened",
"title": "feat: add login page",
"updated_at": "2026-02-13T10:15:30.000Z"
},
"timestamp": "2026-02-13T10:15:30.000Z",
"type": "gitlab.mergeRequestApproval"
}

Component key: gitlab.createDeployment

The Create Deployment component records a deployment for a GitLab project environment.

  • Deployment tracking: Record deployments performed outside of GitLab CI/CD so they show up in the environment’s deployment history
  • Release automation: Mark a commit as deployed to an environment (staging, production) from a SuperPlane workflow
  • Status coordination: Pair with Create Deployment Status to transition the deployment as your rollout progresses
  • Project (required): The GitLab project to deploy in
  • Environment (required): The target environment (e.g., production, staging). Pick an existing one from the dropdown, or switch to Expression and type a new name - GitLab creates it automatically on first deploy.
  • Ref (required): The branch or tag being deployed (defaults to main). When you pick Tag in this field, the deployment is automatically recorded as a tag deployment.
  • Commit SHA (required): The commit SHA being deployed. Supports expressions.
  • Ref is a tag: Only needed when Ref comes from an expression that doesn’t carry the tag prefix (e.g. a raw tag name). Not needed when using the Ref field’s own Tag option.
  • Status: The initial deployment status (defaults to running)

Returns the created deployment object, including:

  • id: The deployment ID (use it with Create Deployment Status)
  • iid: The project-relative deployment ID
  • status: The deployment status
  • environment: The environment the deployment targets

The connected user needs at least the Developer role on the project, and for protected environments must be in the environment’s Allowed to deploy list.

{
"data": {
"created_at": "2026-02-13T18:00:00.000Z",
"deployable": null,
"environment": {
"external_url": "https://prod.example.com",
"id": 9,
"name": "production"
},
"id": 42,
"iid": 2,
"ref": "main",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"status": "running",
"updated_at": "2026-02-13T18:00:00.000Z",
"user": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
}
},
"timestamp": "2026-02-13T18:00:00.000Z",
"type": "gitlab.deployment"
}

Component key: gitlab.createDeploymentStatus

The Create Deployment Status component updates the status of an existing GitLab deployment.

  • Rollout progress: Transition a deployment from running to success or failed as your workflow completes
  • Deployment tracking: Keep an environment’s deployment history in sync with an external rollout
  • Follow-up to Create Deployment: Reference the deployment created upstream and mark its final outcome
  • Project (required): The GitLab project containing the deployment
  • Deployment ID (required): The ID of the deployment to update. Supports expressions, e.g. {{ $['Create Deployment'].data.id }}
  • Status (required): The new deployment status (running, success, failed, canceled)

Returns the updated deployment object, including:

  • id: The deployment ID
  • status: The new deployment status
  • environment: The environment the deployment targets

The connected user needs at least the Developer role on the project, and for protected environments must be in the environment’s Allowed to deploy list.

{
"data": {
"created_at": "2026-02-13T18:00:00.000Z",
"deployable": null,
"environment": {
"external_url": "https://prod.example.com",
"id": 9,
"name": "production"
},
"id": 42,
"iid": 2,
"ref": "main",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"status": "success",
"updated_at": "2026-02-13T18:04:12.000Z",
"user": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
}
},
"timestamp": "2026-02-13T18:04:12.000Z",
"type": "gitlab.deployment"
}

Component key: gitlab.createIssue

The Create Issue component creates a new issue in a specified GitLab project.

  • Automated Bug Reporting: Create issues when a monitoring system detects an error
  • Task Management: Automatically create tasks for new employee onboarding
  • Feedback Loop: Turn customer feedback into actionable issues
  • Project (required): The GitLab project where the issue will be created
  • Title (required): The title of the new issue
  • Description (optional): The description/body of the issue
  • Assignees (optional): Users to assign the issue to
  • Labels (optional): Labels to apply to the issue (e.g., bug, enhancement)
  • Milestone (optional): Milestone to associate with the issue
  • Due Date (optional): Date when the issue is due

The component outputs the created issue object, including:

  • id: The internal ID of the issue
  • iid: The project-relative ID of the issue
  • web_url: The URL to view the issue in GitLab
  • state: The current state of the issue (opened/closed)
{
"data": {
"_links": {
"award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/1/award_emoji",
"notes": "http://gitlab.example.com/api/v4/projects/1/issues/1/notes",
"project": "http://gitlab.example.com/api/v4/projects/1",
"self": "http://gitlab.example.com/api/v4/projects/1/issues/1"
},
"assignee": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
}
],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"blocking_issues_count": 0,
"closed_at": null,
"closed_by": null,
"confidential": false,
"created_at": "2023-01-01T10:00:00.000Z",
"description": "This is an example issue created via SuperPlane",
"discussion_locked": null,
"downvotes": 0,
"due_date": null,
"has_tasks": false,
"id": 1,
"iid": 1,
"issue_type": "issue",
"labels": [
"bug",
"urgent"
],
"merge_requests_count": 0,
"milestone": null,
"project_id": 3,
"references": {
"full": "gitlab-org/gitlab-test#1",
"relative": "#1",
"short": "#1"
},
"state": "opened",
"task_completion_status": {
"completed_count": 0,
"count": 0
},
"time_stats": {
"human_time_estimate": null,
"human_total_time_spent": null,
"time_estimate": 0,
"total_time_spent": 0
},
"title": "Example Issue",
"type": "ISSUE",
"updated_at": "2023-01-01T10:00:00.000Z",
"upvotes": 0,
"user_notes_count": 0,
"web_url": "http://gitlab.example.com/gitlab-org/gitlab-test/issues/1",
"weight": null
},
"timestamp": "2023-01-01T10:00:00.000Z",
"type": "gitlab.issue"
}

Component key: gitlab.createIssueComment

The Create Issue Comment component adds a comment (note) to an existing GitLab issue.

  • Automated updates: Post deployment status or remediation updates to GitLab issues
  • Runbook linking: Add runbook links, error details, or status for responders
  • Cross-platform sync: Sync Slack or PagerDuty notes into GitLab as comments
  • Automated comments: Add automated comments based on workflow events
  • Project (required): The GitLab project containing the issue
  • Issue IID (required): The internal ID (IID) of the issue to comment on (supports expressions)
  • Body (required): The comment text (supports Markdown and expressions)

Returns the created note object, including:

  • id: The ID of the note
  • body: The comment text
  • author: The user who created the comment
  • created_at: When the comment was created
{
"data": {
"author": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"body": "This is an example comment created via SuperPlane",
"created_at": "2023-01-01T10:00:00.000Z",
"id": 302,
"noteable_id": 1,
"noteable_iid": 1,
"noteable_type": "Issue",
"system": false,
"updated_at": "2023-01-01T10:00:00.000Z"
},
"timestamp": "2023-01-01T10:00:00.000Z",
"type": "gitlab.createIssueComment"
}

Component key: gitlab.createMergeComment

The Create Merge Request Comment component adds a comment (note) to an existing GitLab merge request.

  • Deployment updates: Post deployment status or remediation updates to a merge request
  • Automated feedback: Add automated review notes based on pipeline or workflow results
  • Cross-platform sync: Sync Slack or PagerDuty notes into GitLab as merge request comments
  • Project (required): The GitLab project containing the merge request
  • Merge Request IID (required): The internal ID (IID) of the merge request to comment on (supports expressions)
  • Body (required): The comment text. Supports Markdown formatting.

Returns the created note object, including:

  • Note ID
  • Note body
  • Author information
  • Created timestamp
{
"data": {
"author": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"body": "This is an example comment created via SuperPlane",
"created_at": "2023-01-01T10:00:00.000Z",
"id": 302,
"noteable_id": 3,
"noteable_iid": 1,
"noteable_type": "MergeRequest",
"system": false,
"updated_at": "2023-01-01T10:00:00.000Z"
},
"timestamp": "2023-01-01T10:00:00.000Z",
"type": "gitlab.createMergeComment"
}

Component key: gitlab.createMergeRequest

The Create Merge Request component opens a new merge request in a specified GitLab project.

  • Automated fixes: An agent commits a fix on a branch and opens a merge request for review
  • Dependency updates: Open a merge request when a dependency or changelog bump is generated
  • Release automation: Open a merge request to promote a branch into a release branch
  • Project (required): The GitLab project where the merge request will be created
  • Source Branch (required): The branch containing the changes (supports expressions)
  • Target Branch (required): The branch you want the changes merged into (e.g. main)
  • Title (required): The title of the new merge request
  • Description (optional): The description/body of the merge request
  • Assignees (optional): Users to assign the merge request to
  • Reviewers (optional): Users to request a review from
  • Labels (optional): Labels to apply to the merge request
  • Milestone (optional): Milestone to associate with the merge request
  • Remove Source Branch (optional): Remove the source branch when the merge request is merged
  • Squash (optional): Squash commits into a single commit when merging

The connected user needs at least the Developer role on the project to create a merge request.

The component outputs the created merge request object, including:

  • iid: The project-relative ID of the merge request
  • web_url: The URL to view the merge request in GitLab
  • source_branch and target_branch: The branches involved
  • state: The current state of the merge request (opened)
{
"data": {
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
}
],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
},
"closed_at": null,
"closed_by": null,
"created_at": "2026-02-13T08:46:00.000Z",
"description": "Adds the new login page with SSO support",
"detailed_merge_status": "mergeable",
"draft": false,
"id": 1,
"iid": 42,
"labels": [
"feature"
],
"merge_commit_sha": null,
"merge_error": null,
"merge_user": null,
"merged_at": null,
"milestone": null,
"project_id": 3,
"reviewers": [
{
"avatar_url": "https://www.gravatar.com/avatar/def456",
"id": 30,
"name": "Alex Morgan",
"state": "active",
"username": "amorgan",
"web_url": "https://gitlab.example.com/amorgan"
}
],
"sha": "8888888888888888888888888888888888888888",
"should_remove_source_branch": true,
"source_branch": "feature/login-page",
"squash": false,
"squash_commit_sha": null,
"state": "opened",
"target_branch": "main",
"title": "feat: add login page",
"updated_at": "2026-02-13T08:46:00.000Z",
"web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42"
},
"timestamp": "2026-02-13T08:46:00.000Z",
"type": "gitlab.mergeRequest"
}

Component key: gitlab.createRelease

The Create Release component creates a new release in a GitLab project, optionally creating the underlying tag at the same time.

  • Automated releases: Cut a release automatically after a pipeline succeeds
  • Tag and release together: Create the git tag and its release notes in one step
  • Scheduled releases: Set a future release date to publish an upcoming release
  • Project (required): The GitLab project to release in
  • Tag Name (required): The tag to create the release for (supports expressions)
  • Ref (optional): Branch, tag, or commit SHA to create the tag from. Required if the tag doesn’t already exist
  • Release Name (optional): The release title
  • Description (optional): Release notes, in Markdown
  • Milestones (optional): Project milestones to associate with the release
  • Released At (optional): Set a date in the future to schedule an upcoming release, or in the past to backdate it. Defaults to now

Returns the created release object.

{
"data": {
"_links": {
"closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit",
"merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged",
"opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"self": "https://gitlab.com/root/example-project/-/releases/v1.0.0"
},
"assets": {
"count": 2,
"links": [],
"sources": [
{
"format": "zip",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip"
},
{
"format": "tar.gz",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz"
}
]
},
"author": {
"avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "https://gitlab.com/root"
},
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"authored_date": "2026-01-03T01:55:18.000Z",
"committed_date": "2026-01-03T01:55:18.000Z",
"committer_email": "admin@example.com",
"committer_name": "Administrator",
"created_at": "2026-01-03T01:55:18.000Z",
"id": "588440f66559714280628a4f9799f0c4eb880a7",
"message": "Merge branch 'feature' into 'main'\n",
"parent_ids": [
"281d3a76f31c812dbf48abce82ccf6860adedd81"
],
"short_id": "588440f6",
"title": "Merge branch 'feature' into 'main'"
},
"commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7",
"created_at": "2026-01-03T01:56:19.539Z",
"description": "## What's Changed\n\n- Added new feature\n- Fixed a bug",
"evidence_sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf",
"evidences": [
{
"collected_at": "2026-01-03T01:56:19.552Z",
"filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json",
"sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf"
}
],
"milestones": [
{
"created_at": "2025-12-01T09:30:00.000Z",
"description": "",
"due_date": "2026-01-01",
"id": 51,
"iid": 1,
"issue_stats": {
"closed": 5,
"total": 5
},
"project_id": 24,
"start_date": "2025-12-01",
"state": "closed",
"title": "v1.0",
"updated_at": "2026-01-02T10:00:00.000Z",
"web_url": "https://gitlab.com/root/example-project/-/milestones/1"
}
],
"name": "Release 1.0.0",
"released_at": "2026-01-03T01:56:19.539Z",
"tag_name": "v1.0.0",
"tag_path": "/root/example-project/-/tags/v1.0.0",
"upcoming_release": false
},
"timestamp": "2026-01-03T01:56:19.552000000Z",
"type": "gitlab.release"
}

Component key: gitlab.deleteRelease

The Delete Release component removes a release from a GitLab project.

  • Cleanup: Remove draft or test releases created in error
  • Rollback: Delete a release that shouldn’t have been published
  • Automated maintenance: Remove releases as part of a cleanup workflow
  • Project (required): The GitLab project containing the release
  • Release Strategy (required): Identify the release by a specific tag, or use the project’s latest release
  • Tag Name (required if strategy is “Specific tag”): The tag of the release to delete
  • Also delete Git tag (optional): GitLab does not delete the underlying tag when a release is deleted, so enable this to remove it too

Returns the deleted release object, plus a “tag_deleted” field that is true only if the Git tag was also requested and successfully removed.

{
"data": {
"_links": {
"closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit",
"merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged",
"opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"self": "https://gitlab.com/root/example-project/-/releases/v1.0.0"
},
"assets": {
"count": 2,
"links": [],
"sources": [
{
"format": "zip",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip"
},
{
"format": "tar.gz",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz"
}
]
},
"author": {
"avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "https://gitlab.com/root"
},
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"authored_date": "2026-01-03T01:55:18.000Z",
"committed_date": "2026-01-03T01:55:18.000Z",
"committer_email": "admin@example.com",
"committer_name": "Administrator",
"created_at": "2026-01-03T01:55:18.000Z",
"id": "588440f66559714280628a4f9799f0c4eb880a7",
"message": "Merge branch 'feature' into 'main'\n",
"parent_ids": [
"281d3a76f31c812dbf48abce82ccf6860adedd81"
],
"short_id": "588440f6",
"title": "Merge branch 'feature' into 'main'"
},
"commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7",
"created_at": "2026-01-03T01:56:19.539Z",
"description": "## What's Changed\n\n- Added new feature\n- Fixed a bug",
"evidence_sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf",
"evidences": [
{
"collected_at": "2026-01-03T01:56:19.552Z",
"filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json",
"sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf"
}
],
"milestones": [
{
"created_at": "2025-12-01T09:30:00.000Z",
"description": "",
"due_date": "2026-01-01",
"id": 51,
"iid": 1,
"issue_stats": {
"closed": 5,
"total": 5
},
"project_id": 24,
"start_date": "2025-12-01",
"state": "closed",
"title": "v1.0",
"updated_at": "2026-01-02T10:00:00.000Z",
"web_url": "https://gitlab.com/root/example-project/-/milestones/1"
}
],
"name": "Release 1.0.0",
"released_at": "2026-01-03T01:56:19.539Z",
"tag_deleted": true,
"tag_name": "v1.0.0",
"tag_path": "/root/example-project/-/tags/v1.0.0",
"upcoming_release": false
},
"timestamp": "2026-01-03T01:56:19.552000000Z",
"type": "gitlab.release"
}

Component key: gitlab.getCommitStatus

The Get Commit Status component reads a commit’s overall CI status.

In GitLab a commit’s statuses are jobs grouped under pipelines, and GitLab rolls them up for you: every commit carries a single overall status and a last_pipeline. This component returns that native result - one meaningful state plus a link to the pipeline - rather than a list of every job.

  • Status gates: Check whether a commit is green before continuing
  • Follow-up to Publish Commit Status: Read back a commit’s overall state
  • Notifications: Report a commit’s CI outcome with a link to the pipeline
  • Project (required): The GitLab project containing the commit
  • Ref (required): Commit SHA, branch name, or tag name to inspect (supports expressions)

The connected token needs the read_api (or api) scope and at least the Reporter role on the project.

Emits the commit object, including its overall status and last_pipeline (id, ref, sha, status, web_url).

{
"data": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"authored_date": "2026-02-13T17:55:00.000Z",
"committed_date": "2026-02-13T17:55:00.000Z",
"committer_email": "admin@example.com",
"committer_name": "Administrator",
"created_at": "2026-02-13T17:55:00.000Z",
"id": "18f3e63d05582537db6d183d9d557be09e1f90c8",
"last_pipeline": {
"created_at": "2026-02-13T18:00:00.000Z",
"id": 1024,
"iid": 21,
"project_id": 84237809,
"ref": "main",
"sha": "18f3e63d05582537db6d183d9d557be09e1f90c8",
"source": "push",
"status": "failed",
"updated_at": "2026-02-13T18:04:12.000Z",
"web_url": "https://gitlab.com/my-group/my-project/-/pipelines/1024"
},
"message": "feat: add health endpoint\n",
"parent_ids": [
"a91957a858320c0e17f3a0eca7cfacbff50ea29a"
],
"short_id": "18f3e63d",
"stats": {
"additions": 24,
"deletions": 2,
"total": 26
},
"status": "failed",
"title": "feat: add health endpoint",
"web_url": "https://gitlab.com/my-group/my-project/-/commit/18f3e63d05582537db6d183d9d557be09e1f90c8"
},
"timestamp": "2026-02-13T18:04:12.000Z",
"type": "gitlab.commit"
}

Component key: gitlab.getIssue

The Get Issue component fetches a single issue from a GitLab project by its internal ID (IID).

  • Read state, then act: Look up an issue’s current title, description, state, labels, or assignees before deciding what to do next
  • Data enrichment: Pull issue details into a workflow to combine with other information
  • Status checking: Check whether an issue is open or closed before performing an action
  • Project (required): The GitLab project containing the issue
  • Issue IID (required): The internal ID (IID) of the issue to fetch (supports expressions)

Returns the issue object, including:

  • id / iid: The internal and project-relative IDs of the issue
  • title / description: The issue’s content
  • state: The current state of the issue (opened/closed)
  • labels, assignees, milestone: Metadata on the issue
  • web_url: The URL to view the issue in GitLab
{
"data": {
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
}
],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"closed_at": null,
"closed_by": null,
"created_at": "2023-01-01T10:00:00.000Z",
"description": "This is an example issue created via SuperPlane",
"due_date": null,
"id": 1,
"iid": 1,
"labels": [
"bug",
"urgent"
],
"milestone": null,
"project_id": 3,
"state": "opened",
"title": "Example Issue",
"updated_at": "2023-01-01T10:00:00.000Z",
"web_url": "http://gitlab.example.com/gitlab-org/gitlab-test/issues/1"
},
"timestamp": "2023-01-01T10:00:00.000Z",
"type": "gitlab.getIssue"
}

Component key: gitlab.getLatestPipeline

The Get Latest Pipeline component retrieves the newest pipeline for a GitLab project.

  • Project (required): The GitLab project to query
  • Ref (optional): Branch or tag to scope the latest pipeline search
{
"data": {
"before_sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55",
"committed_at": "2026-02-13T19:20:45.000Z",
"coverage": "87.1",
"created_at": "2026-02-13T19:21:00.000Z",
"detailed_status": {
"group": "success",
"has_details": true,
"icon": "status_success",
"label": "passed",
"text": "passed",
"tooltip": "passed"
},
"duration": 268,
"finished_at": "2026-02-13T19:25:43.000Z",
"id": 457882200,
"iid": 9822,
"project_id": 123456,
"queued_duration": 12.6,
"ref": "main",
"sha": "afce89e8d28741d4f65ec71ad0a4174a801122cd",
"source": "merge_request_event",
"started_at": "2026-02-13T19:21:15.000Z",
"status": "success",
"tag": false,
"updated_at": "2026-02-13T19:25:43.000Z",
"user": {
"avatar_url": "https://www.gravatar.com/avatar/ef56gh78",
"id": 18,
"name": "Alex Garcia",
"username": "agarcia"
},
"web_url": "https://gitlab.com/group/example-project/-/pipelines/457882200",
"yaml_errors": null
},
"timestamp": "2026-02-13T19:25:43.000Z",
"type": "gitlab.pipeline"
}

Component key: gitlab.getPipeline

The Get Pipeline component retrieves details for a specific GitLab pipeline.

  • Project (required): The GitLab project containing the pipeline
  • Pipeline (required): Select a pipeline from the selected project

Returns pipeline data including status, ref, SHA, and pipeline URL.

{
"data": {
"before_sha": "0000000000000000000000000000000000000000",
"committed_at": "2026-02-13T17:59:22.000Z",
"coverage": null,
"created_at": "2026-02-13T18:00:00.000Z",
"detailed_status": {
"group": "running",
"has_details": true,
"icon": "status_running",
"label": "running",
"text": "running",
"tooltip": "running"
},
"duration": 0,
"finished_at": null,
"id": 457882113,
"iid": 9821,
"project_id": 123456,
"queued_duration": 8.2,
"ref": "main",
"sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55",
"source": "push",
"started_at": "2026-02-13T18:00:12.000Z",
"status": "running",
"tag": false,
"updated_at": "2026-02-13T18:00:10.000Z",
"user": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"username": "jrivera"
},
"web_url": "https://gitlab.com/group/example-project/-/pipelines/457882113",
"yaml_errors": null
},
"timestamp": "2026-02-13T18:00:10.000Z",
"type": "gitlab.pipeline"
}

Component key: gitlab.getPipelineMinutesUsage

The Get Pipeline Minutes Usage component retrieves CI/CD compute minutes usage for the current calendar month, for the namespace configured on the connected GitLab integration (its group, or the personal namespace if no group is set).

This action calls GitLab’s GraphQL API, which requires the connected user to have access to the namespace’s usage quota data (at least the Owner role for groups).

  • Returns usage for the current calendar month
  • Includes a per-project breakdown of minutes and shared runner duration
  • When Projects are selected, only usage for those projects is included in the totals
  • If the integration’s Group is a subgroup, usage is reported for its root group, since GitLab only tracks compute minutes at the root namespace
  • Projects (optional, multiselect): Limit the per-project breakdown and totals to specific projects. Leave empty to include all projects with usage.

Returns:

  • month: The usage month name, e.g. “July”
  • monthIso8601: The usage month as an ISO date, e.g. “2026-07-01”
  • minutes: Total compute minutes used
  • sharedRunnersDuration: Total shared runner duration, in seconds
  • projects: Per-project breakdown (minutes, shared runner duration, and project details)
  • Billing monitoring: Track CI/CD minutes usage against the namespace’s quota
  • Cost control: Alert when usage approaches a budget threshold
  • Usage reporting: Generate periodic usage reports
{
"data": {
"minutes": 245,
"month": "July",
"monthIso8601": "2026-07-01",
"projects": [
{
"minutes": 180,
"project": {
"fullPath": "felixgateru/hello-world",
"id": "gid://gitlab/Project/80508544",
"name": "hello-world"
},
"sharedRunnersDuration": 10800
},
{
"minutes": 65,
"project": {
"fullPath": "felixgateru/another-project",
"id": "gid://gitlab/Project/80508999",
"name": "another-project"
},
"sharedRunnersDuration": 3900
}
],
"sharedRunnersDuration": 14700
},
"timestamp": "2026-07-01T00:00:00.000000000Z",
"type": "gitlab.pipelineMinutesUsage"
}

Component key: gitlab.getRelease

The Get Release component retrieves release information from a GitLab project.

  • Release monitoring: Fetch release details for use in downstream steps
  • Deployment pipelines: Read release assets and metadata for deployment
  • Version tracking: Check the project’s latest published release
  • Project (required): The GitLab project containing the release
  • Release Strategy (required): Identify the release by a specific tag, or use the project’s latest release
  • Tag Name (required if strategy is “Specific tag”): The tag of the release to retrieve

Returns the release object.

{
"data": {
"_links": {
"closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit",
"merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged",
"opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"self": "https://gitlab.com/root/example-project/-/releases/v1.0.0"
},
"assets": {
"count": 2,
"links": [],
"sources": [
{
"format": "zip",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip"
},
{
"format": "tar.gz",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz"
}
]
},
"author": {
"avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "https://gitlab.com/root"
},
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"authored_date": "2026-01-03T01:55:18.000Z",
"committed_date": "2026-01-03T01:55:18.000Z",
"committer_email": "admin@example.com",
"committer_name": "Administrator",
"created_at": "2026-01-03T01:55:18.000Z",
"id": "588440f66559714280628a4f9799f0c4eb880a7",
"message": "Merge branch 'feature' into 'main'\n",
"parent_ids": [
"281d3a76f31c812dbf48abce82ccf6860adedd81"
],
"short_id": "588440f6",
"title": "Merge branch 'feature' into 'main'"
},
"commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7",
"created_at": "2026-01-03T01:56:19.539Z",
"description": "## What's Changed\n\n- Added new feature\n- Fixed a bug",
"evidence_sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf",
"evidences": [
{
"collected_at": "2026-01-03T01:56:19.552Z",
"filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json",
"sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf"
}
],
"milestones": [
{
"created_at": "2025-12-01T09:30:00.000Z",
"description": "",
"due_date": "2026-01-01",
"id": 51,
"iid": 1,
"issue_stats": {
"closed": 5,
"total": 5
},
"project_id": 24,
"start_date": "2025-12-01",
"state": "closed",
"title": "v1.0",
"updated_at": "2026-01-02T10:00:00.000Z",
"web_url": "https://gitlab.com/root/example-project/-/milestones/1"
}
],
"name": "Release 1.0.0",
"released_at": "2026-01-03T01:56:19.539Z",
"tag_name": "v1.0.0",
"tag_path": "/root/example-project/-/tags/v1.0.0",
"upcoming_release": false
},
"timestamp": "2026-01-03T01:56:19.552000000Z",
"type": "gitlab.release"
}

Component key: gitlab.getTestReportSummary

The Get Test Report Summary component fetches the test report summary for a GitLab pipeline.

  • Project (required): The GitLab project containing the pipeline
  • Pipeline (required): Select a pipeline from the selected project
{
"data": {
"test_suites": [
{
"build_ids": [
8934210
],
"error_count": 0,
"failed_count": 1,
"name": "backend-rspec",
"skipped_count": 0,
"success_count": 247,
"suite_error": null,
"total_count": 248,
"total_time": 81.27
},
{
"build_ids": [
8934211
],
"error_count": 0,
"failed_count": 1,
"name": "frontend-jest",
"skipped_count": 1,
"success_count": 162,
"suite_error": null,
"total_count": 164,
"total_time": 71.19
}
],
"total": {
"count": 412,
"error": 0,
"failed": 2,
"skipped": 1,
"success": 409,
"suite_error": null,
"time": 152.46
}
},
"timestamp": "2026-02-13T19:26:01.000Z",
"type": "gitlab.testReportSummary"
}

Component key: gitlab.markMergeRequestReadyForReview

The Mark Merge Request Ready for Review component takes a draft merge request out of the draft state, the same as clicking “Mark as ready” on GitLab.

  • Promote drafts automatically: Mark a draft merge request ready once CI checks pass
  • Release trains: Open drafts early and promote them for review when the branch is ready
  • Bot workflows: Let an automation open work as a draft and hand it to reviewers when complete
  • Project: Select the GitLab project containing the merge request
  • Merge Request IID: The internal ID (IID) of the merge request to mark ready for review. Expressions are supported.

This component is idempotent: if the merge request is already out of the draft state, it succeeds without calling GitLab again and emits the merge request as it is.

GitLab does not expose a dedicated REST field for clearing draft status, so the component applies the same /ready quick action the GitLab UI uses. This is submitted as a note on the merge request, so the connected user needs permission to comment on it.

Returns the merge request object after it has been marked ready for review.

{
"data": {
"assignees": [],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
},
"closed_at": null,
"closed_by": null,
"created_at": "2026-02-13T08:46:00.000Z",
"description": "Adds the new login page with SSO support",
"detailed_merge_status": "mergeable",
"draft": false,
"id": 1,
"iid": 42,
"labels": [],
"merge_commit_sha": null,
"merge_error": null,
"merge_user": null,
"merged_at": null,
"milestone": null,
"project_id": 3,
"reviewers": [],
"sha": "8888888888888888888888888888888888888888",
"should_remove_source_branch": false,
"source_branch": "feature/login-page",
"squash": false,
"squash_commit_sha": null,
"state": "opened",
"target_branch": "main",
"title": "feat: add login page",
"updated_at": "2026-02-13T09:02:11.000Z",
"web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42"
},
"timestamp": "2026-02-13T09:02:11.000Z",
"type": "gitlab.mergeRequest"
}

Component key: gitlab.publishCommitStatus

The Publish Commit Status component sets a build/CI status on a specific commit, the way GitLab CI and external CI systems report per-commit check results.

  • External CI reporting: Report the outcome of a build, test, or scan run outside GitLab back onto the commit
  • Gate signalling: Mark a commit pending while a workflow runs, then success or failed when it finishes
  • Custom checks: Surface a workflow’s own pass/fail state on the commit and merge request
  • Project (required): The GitLab project containing the commit
  • Commit SHA (required): The commit to attach the status to (supports expressions)
  • State (required): One of pending, running, success, failed, canceled, skipped
  • Name (optional): Label distinguishing this status from others on the same commit (GitLab defaults to default)
  • Target URL (optional): URL the status links to, e.g. the build or job page
  • Description (optional): Short description shown alongside the status
  • Ref (optional): Branch or tag the status is reported for
  • Coverage (optional): Total code coverage percentage
  • Pipeline ID (optional): Attach the status to a specific pipeline when several ran on the commit

The connected token needs the api scope and at least the Developer role on the project.

Returns the created commit status object.

{
"data": {
"allow_failure": false,
"author": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "https://gitlab.com/root"
},
"coverage": 92.5,
"created_at": "2026-02-13T18:00:00.000Z",
"description": "Build passed",
"finished_at": "2026-02-13T18:04:12.000Z",
"id": 93,
"name": "ci/superplane",
"pipeline_id": 1024,
"ref": "main",
"sha": "18f3e63d05582537db6d183d9d557be09e1f90c8",
"started_at": "2026-02-13T18:00:05.000Z",
"status": "success",
"target_url": "https://gitlab.com/my-group/my-project/-/pipelines/1024"
},
"timestamp": "2026-02-13T18:04:12.000Z",
"type": "gitlab.commitStatus"
}

Component key: gitlab.removeMergeRequestReviewers

The Remove Merge Request Reviewers component removes reviewers from an existing GitLab merge request. Reviewers that are not listed are kept.

  • Automated cleanup: Remove a reviewer once their review is no longer needed
  • Reassignment: Remove a reviewer before adding a different one as part of a workflow
  • Rotation: Drop an out-of-office reviewer from an open merge request
  • Project (required): The GitLab project containing the merge request
  • Merge Request IID (required): The internal ID (IID) of the merge request (supports expressions)
  • Reviewers (required): Users to remove from the merge request’s reviewers. Reviewers not listed are kept.

The connected user needs at least the Developer role on the project to change reviewers.

Returns the updated merge request object, including its remaining reviewer list and URL.

{
"data": {
"assignees": [],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
},
"closed_at": null,
"closed_by": null,
"created_at": "2026-02-13T08:46:00.000Z",
"description": "Adds the new login page with SSO support",
"detailed_merge_status": "mergeable",
"draft": false,
"id": 1,
"iid": 42,
"labels": [
"feature"
],
"merge_commit_sha": null,
"merge_error": null,
"merge_user": null,
"merged_at": null,
"milestone": null,
"project_id": 3,
"reviewers": [
{
"avatar_url": "https://www.gravatar.com/avatar/def456",
"id": 30,
"name": "Alex Morgan",
"state": "active",
"username": "amorgan",
"web_url": "https://gitlab.example.com/amorgan"
}
],
"sha": "8888888888888888888888888888888888888888",
"should_remove_source_branch": true,
"source_branch": "feature/login-page",
"squash": false,
"squash_commit_sha": null,
"state": "opened",
"target_branch": "main",
"title": "feat: add login page",
"updated_at": "2026-02-13T09:45:00.000Z",
"web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42"
},
"timestamp": "2026-02-13T09:45:00.000Z",
"type": "gitlab.mergeRequest"
}

Component key: gitlab.runPipeline

The Run Pipeline component triggers a GitLab pipeline and waits for it to complete.

  • CI/CD orchestration: Trigger GitLab pipelines from SuperPlane workflows
  • Deployment automation: Run deployment pipelines with inputs
  • Pipeline chaining: Coordinate follow-up actions after pipeline completion
{
"data": {
"pipeline": {
"before_sha": "0000000000000000000000000000000000000000",
"committed_at": "2026-02-13T17:59:22.000Z",
"coverage": "86.5",
"created_at": "2026-02-13T18:00:00.000Z",
"detailed_status": {
"group": "success",
"has_details": true,
"icon": "status_success",
"label": "passed",
"text": "passed",
"tooltip": "passed"
},
"duration": 240,
"finished_at": "2026-02-13T18:04:12.000Z",
"id": 457882113,
"iid": 9821,
"project_id": 123456,
"queued_duration": 8.2,
"ref": "main",
"sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55",
"source": "web",
"started_at": "2026-02-13T18:00:12.000Z",
"status": "success",
"tag": false,
"updated_at": "2026-02-13T18:04:12.000Z",
"url": "https://gitlab.com/group/example-project/-/pipelines/457882113",
"user": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"username": "jrivera"
},
"web_url": "https://gitlab.com/group/example-project/-/pipelines/457882113",
"yaml_errors": null
}
},
"timestamp": "2026-02-13T18:04:12.000Z",
"type": "gitlab.pipeline.finished"
}

Component key: gitlab.updateIssue

The Update Issue component modifies an existing GitLab issue: its title, description, state, labels, assignees, or milestone.

  • Status updates: Close or reopen an issue based on workflow results
  • Label management: Apply labels to an issue automatically
  • Assignee updates: Assign an issue to team members automatically
  • Content updates: Update the issue title or description with new information
  • Project (required): The GitLab project containing the issue
  • Issue IID (required): The internal ID (IID) of the issue to update (supports expressions)
  • Title (toggle): New title for the issue
  • Description (toggle): New description for the issue
  • State (toggle): Close or reopen the issue
  • Labels to Add (toggle): Labels to add to the issue, keeping any existing labels
  • Assignees (toggle): Users to assign the issue to, replacing any existing assignees
  • Milestone (toggle): Milestone to associate with the issue

Each field besides Project and Issue IID is toggled on individually, so only the fields you enable are sent in the update. At least one must be enabled. Title is the exception: GitLab does not allow blank titles, so it must have a value when enabled.

List and reference fields: append vs. replace

Section titled “List and reference fields: append vs. replace”

These fields behave differently, because GitLab’s API exposes them differently:

FieldBehaviourEnabled with nothing selected
Labels to AddAppends — sent as add_labels, so labels already on the issue are keptNo change
AssigneesReplaces — sent as assignee_ids, which overwrites the whole listClears all assignees
MilestoneReplaces — a single milestone_idUnassigns the milestone

Because labels only ever append, this component cannot remove a label. Use GitLab’s own label controls when you need to take one off.

Returns the updated issue object.

{
"data": {
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
}
],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"closed_at": "2023-01-01T10:05:00.000Z",
"closed_by": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"created_at": "2023-01-01T10:00:00.000Z",
"description": "This is an example issue updated via SuperPlane",
"due_date": null,
"id": 1,
"iid": 1,
"labels": [
"bug",
"urgent"
],
"milestone": null,
"project_id": 3,
"state": "closed",
"title": "Example Issue",
"updated_at": "2023-01-01T10:05:00.000Z",
"web_url": "http://gitlab.example.com/gitlab-org/gitlab-test/issues/1"
},
"timestamp": "2023-01-01T10:05:00.000Z",
"type": "gitlab.updateIssue"
}

Component key: gitlab.updateIssueComment

The Update Issue Comment component edits an existing comment (note) on a GitLab issue.

  • Status updates: Update a summary comment on an issue instead of posting new comments on every run
  • Living reports: Keep a single comment with the latest deployment status, test results, or remediation steps
  • Avoid spam: Update one comment instead of flooding an issue with repeated bot comments
  • Project (required): The GitLab project containing the issue
  • Issue IID (required): The internal ID (IID) of the issue the comment belongs to (supports expressions)
  • Comment ID (required): The numeric ID of the comment (note) to update (supports expressions)
  • Body (toggle): The new comment text (supports Markdown and expressions). It is the only editable field on a GitLab note, so it must be enabled for the update to change anything, and cannot be empty when enabled.

The connected user must be the comment’s author, or have at least the Maintainer role on the project, to edit it.

Returns the updated note object, including its ID, body, author, and timestamps.

  • The comment ID is returned in the output of gitlab.createIssueComment as id
  • You can store the comment ID in canvas memory on the first run, then reuse it for subsequent updates
{
"data": {
"author": {
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "http://gitlab.example.com/root"
},
"body": "Updated: deployment finished successfully at 10:15 UTC",
"confidential": false,
"created_at": "2023-01-01T10:00:00.000Z",
"id": 302,
"internal": false,
"noteable_id": 1,
"noteable_iid": 1,
"noteable_type": "Issue",
"project_id": 1,
"resolvable": false,
"system": false,
"updated_at": "2023-01-01T10:15:00.000Z"
},
"timestamp": "2023-01-01T10:15:00.000Z",
"type": "gitlab.updateIssueComment"
}

Component key: gitlab.updateMergeRequest

The Update Merge Request component modifies an existing GitLab merge request: its title, description, target branch, state, labels, or assignees.

  • Retitle/redescribe automation: Update a merge request’s title or description as a workflow progresses
  • Open/close automation: Close a merge request when it is superseded, or reopen one automatically
  • Retargeting: Change the target branch a merge request merges into
  • Label and assignee management: Add labels to a merge request or set its assignees from a workflow
  • Project (required): The GitLab project containing the merge request
  • Merge Request IID (required): The internal ID (IID) of the merge request to update (supports expressions)
  • Title (toggle): New title for the merge request
  • Description (toggle): New description for the merge request
  • Target Branch (toggle): Retarget the merge request onto a different branch
  • State (toggle): Close or reopen the merge request
  • Labels to Add (toggle): Labels to add, keeping any existing labels
  • Assignees (toggle): Users to assign, replacing any existing assignees

Each field besides Project and Merge Request IID is toggled on individually, so only the fields you enable are sent in the update. At least one must be enabled. Title and Target Branch are the exception: GitLab rejects a blank title, and an empty target branch cannot resolve to a real branch, so both must have a value when enabled.

The two list fields behave differently, because GitLab’s API exposes them differently:

FieldBehaviourEnabled with nothing selected
Labels to AddAppends — sent as add_labels, so labels already on the merge request are keptNo change
AssigneesReplaces — sent as assignee_ids, which overwrites the whole listClears all assignees

Because labels only ever append, this component cannot remove a label. Use GitLab’s own label controls, or a dedicated label action, when you need to take one off.

The connected user needs at least the Developer role on the project (or be the merge request author) to update a merge request.

Returns the updated merge request object.

{
"data": {
"assignees": [
{
"avatar_url": "https://www.gravatar.com/avatar/def456",
"id": 30,
"name": "Alex Morgan",
"state": "active",
"username": "amorgan",
"web_url": "https://gitlab.example.com/amorgan"
}
],
"author": {
"avatar_url": "https://www.gravatar.com/avatar/abc123",
"id": 22,
"name": "Jamie Rivera",
"state": "active",
"username": "jrivera",
"web_url": "https://gitlab.example.com/jrivera"
},
"closed_at": null,
"closed_by": null,
"created_at": "2026-02-13T08:46:00.000Z",
"description": "Adds the new login page with SSO support and MFA",
"detailed_merge_status": "mergeable",
"draft": false,
"id": 155,
"iid": 42,
"labels": [
"feature",
"needs-review"
],
"merge_commit_sha": null,
"merge_error": null,
"merge_user": null,
"merged_at": null,
"milestone": null,
"project_id": 3,
"reviewers": [
{
"avatar_url": "https://www.gravatar.com/avatar/def456",
"id": 30,
"name": "Alex Morgan",
"state": "active",
"username": "amorgan",
"web_url": "https://gitlab.example.com/amorgan"
}
],
"sha": "8888888888888888888888888888888888888888",
"should_remove_source_branch": true,
"source_branch": "feature/login-page",
"squash": false,
"squash_commit_sha": null,
"state": "opened",
"target_branch": "develop",
"title": "feat: add login page (updated)",
"updated_at": "2026-02-14T09:12:33.000Z",
"web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42"
},
"timestamp": "2026-02-14T09:12:33.000Z",
"type": "gitlab.mergeRequest"
}

Component key: gitlab.updateRelease

The Update Release component modifies an existing GitLab release: its name, description, milestones, or release date.

  • Release notes updates: Fill in release notes after the release has been cut
  • Milestone linking: Associate a release with milestones once they’re finalized
  • Rescheduling: Move an upcoming release’s date
  • Project (required): The GitLab project containing the release
  • Release Strategy (required): Identify the release by a specific tag, or use the project’s latest release
  • Tag Name (required if strategy is “Specific tag”): The tag of the release to update
  • Release Name (toggle): New release title
  • Description (toggle): New release notes, in Markdown
  • Milestones (toggle): Milestones to associate with the release, replacing any existing ones
  • Released At (toggle): New release date

Each field besides Project, Release Strategy and Tag Name is toggled on individually, so only the fields you enable are sent in the update. At least one must be enabled. Enabling Milestones with nothing selected clears them. Released At is the exception: GitLab requires a valid date, so it must have a value when enabled.

Returns the updated release object.

{
"data": {
"_links": {
"closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed",
"edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit",
"merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged",
"opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened",
"self": "https://gitlab.com/root/example-project/-/releases/v1.0.0"
},
"assets": {
"count": 2,
"links": [],
"sources": [
{
"format": "zip",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip"
},
{
"format": "tar.gz",
"url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz"
}
]
},
"author": {
"avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon",
"id": 1,
"name": "Administrator",
"state": "active",
"username": "root",
"web_url": "https://gitlab.com/root"
},
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"authored_date": "2026-01-03T01:55:18.000Z",
"committed_date": "2026-01-03T01:55:18.000Z",
"committer_email": "admin@example.com",
"committer_name": "Administrator",
"created_at": "2026-01-03T01:55:18.000Z",
"id": "588440f66559714280628a4f9799f0c4eb880a7",
"message": "Merge branch 'feature' into 'main'\n",
"parent_ids": [
"281d3a76f31c812dbf48abce82ccf6860adedd81"
],
"short_id": "588440f6",
"title": "Merge branch 'feature' into 'main'"
},
"commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7",
"created_at": "2026-01-03T01:56:19.539Z",
"description": "## What's Changed\n\n- Added new feature\n- Fixed a bug\n- Updated release notes",
"evidences": [
{
"collected_at": "2026-01-03T01:56:19.552Z",
"filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json",
"sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf"
}
],
"milestones": [
{
"created_at": "2025-12-01T09:30:00.000Z",
"description": "",
"due_date": "2026-01-01",
"id": 51,
"iid": 1,
"issue_stats": {
"closed": 5,
"total": 5
},
"project_id": 24,
"start_date": "2025-12-01",
"state": "closed",
"title": "v1.0",
"updated_at": "2026-01-02T10:00:00.000Z",
"web_url": "https://gitlab.com/root/example-project/-/milestones/1"
}
],
"name": "Release 1.0.0",
"released_at": "2026-01-03T01:56:19.539Z",
"tag_name": "v1.0.0",
"tag_path": "/root/example-project/-/tags/v1.0.0",
"upcoming_release": false
},
"timestamp": "2026-01-03T02:10:00.000000000Z",
"type": "gitlab.release"
}