Skip to main content
gitlab icon

GitLab Connector

SourceAPI DocsAPI ChangelogConnector Changelog

Description​

GitLab is a DevSecOps platform for source control, issue tracking, merge requests, and CI/CD, available as GitLab.com or as a self-managed instance.

Use the GitLab component to manage projects, issues, merge requests, branches, commits, repository files, and pipelines, and to react to GitLab events through webhooks or polling. The component also connects to self-managed instances on a private network through the on-prem agent, without exposing the instance to the internet.

API Documentation​

GitLab REST API

Connections​

Access Token​

key: accessToken

Use an access token to connect to GitLab.com or to a self-managed GitLab instance, including an instance on a private network reached through the on-prem agent (see On-Prem Connections below).

GitLab supports three kinds of access token, and all three work with this connection:

Prerequisites​

  • A GitLab account with access to the projects the integration uses
  • For project and group access tokens on GitLab.com, a Premium or Ultimate subscription (self-managed instances include them on every license)
  • The Maintainer or Owner role on each project where the integration manages webhooks

Setup Steps​

To create a personal access token:

  1. In GitLab, select the avatar in the upper-right corner, then Edit profile > Access > Personal access tokens
  2. Select Generate token > Legacy token, then enter a name

To create a project or group access token:

  1. Open the project or group, then Settings > Access tokens
  2. Select Add new token and enter a name, then select a role: Developer for issues, merge requests, and branches, or Maintainer to manage webhooks

For either kind of token:

  1. Set an expiration date. Tokens expire after at most 365 days by default, so rotate the token and update the connection before that date
  2. Select the api scope, or read_api for an integration that only reads data
  3. Create the token (for example, Create project access token) and copy the token value

Configure the Connection​

  • Enter the GitLab instance's URL in GitLab URL: https://gitlab.com for GitLab.com, or the base URL of a self-managed instance
  • Enter the token in Access Token
  • If the instance's certificate is signed by an internal certificate authority, paste that authority's PEM-encoded certificate into CA Certificate. This applies to direct and on-prem connections alike
Ignore SSL Errors Disables Certificate Validation

Ignore SSL Errors turns off TLS certificate validation entirely. Use it only when a CA Certificate cannot be supplied, and supply one instead whenever possible.

On-Prem Connections​

To reach a self-managed GitLab instance on a private network, route this connection through the on-prem agent. The agent runs inside the network and makes only outbound connections (ports 22 and 443), so no inbound firewall ports need to be opened and the instance does not need to be exposed to the internet.

  1. Install the on-prem agent on a machine with Docker inside the private network that can reach the GitLab instance. Set APP_HOST to the instance's hostname or IP address and APP_PORT to its HTTPS port (usually 443). localhost and 127.0.0.1 refer to the agent's own container, so for a service on the same machine use host.docker.internal
  2. In the integration's config wizard, open this connection and select Allow On-Prem Connections
  3. When configuring the instance, turn on Use On-Prem Connection and select the on-prem agent's connection
  4. Enter the instance's own URL in GitLab URL, such as https://gitlab.internal.example.com, not the agent's address. Requests travel through the agent, but the TLS certificate is validated against this URL's hostname
  5. If the instance's certificate is signed by an internal certificate authority, paste that authority's PEM-encoded certificate into CA Certificate

GitLab URL can use http only through the on-prem agent. A direct connection requires https.

On-prem enabled: this connection can be configured to connect to an on-prem resource on a private network. Learn more.

InputNotesExample
Access Token

A personal, project, or group access token with the api scope, or read_api for read-only use. Tokens expire after at most 365 days by default. See Personal access tokens.

glpat-xxxxxxxxxxxxxxxxxxxx
CA Certificate

The PEM-encoded certificate of the authority that signed the instance's TLS certificate. Required when a self-managed instance uses an internal certificate authority.

-----BEGIN CERTIFICATE----- MIIB... -----END CERTIFICATE-----
GitLab URL

The base URL of the GitLab instance: https://gitlab.com for GitLab.com, or the URL of a self-managed instance. For an instance on a private network, use its internal URL; its hostname is used to validate the TLS certificate. The URL must use https unless requests go through the on-prem agent.

https://gitlab.com
Host

The on-prem agent tunnel host. Set by the on-prem agent.

10.0.0.12
Ignore SSL Errors

When true, TLS certificate validation is disabled. Supply a CA Certificate instead whenever possible.

false
Port

The on-prem agent tunnel port. Set by the on-prem agent.

443

OAuth 2.0​

key: oauth2

To connect to GitLab using OAuth 2.0, register an OAuth application in GitLab. Each user then authorizes the integration with their own GitLab account. This works for GitLab.com and for self-managed instances; see Configure GitLab as an OAuth 2.0 authentication identity provider.

Prerequisites​

  • A GitLab account that can create OAuth applications (user-owned, group-owned, or, on self-managed, instance-wide as an administrator)

Setup Steps​

  1. In GitLab, open the application settings:
    • User-owned application: select the avatar in the upper-right corner, then Edit profile > Access > Applications
    • Group-owned application: open the group, then Settings > Applications
    • Instance-wide application (self-managed, administrator): select Admin in the upper-right corner, then Applications
  2. Enter a name for the application
  3. Enter https://oauth2.prismatic.io/callback as the Redirect URI
  4. Select the api scope, or read_api for an integration that only reads data
  5. Select Save application and copy the Application ID and Secret

Configure the Connection​

  • Enter the Application ID as Client ID and the Secret as Client Secret
  • For Scopes, use the same value selected in the application:
    api
  • For a self-managed instance, replace gitlab.com with the instance's host in GitLab URL, Authorize URL, and Token URL
  • If the instance's certificate is signed by an internal certificate authority, paste that authority's PEM-encoded certificate into CA Certificate. This applies to direct and on-prem connections alike
Ignore SSL Errors Disables Certificate Validation

Ignore SSL Errors turns off TLS certificate validation entirely. Use it only when a CA Certificate cannot be supplied, and supply one instead whenever possible.

GitLab issues a new refresh token on every refresh and invalidates the old one. The connection stores the replacement automatically; see OAuth 2.0 identity provider API.

On-Prem Connections​

To reach a self-managed GitLab instance on a private network, route this connection through the on-prem agent. The agent runs inside the network and makes only outbound connections (ports 22 and 443), so no inbound firewall ports need to be opened and the instance does not need to be exposed to the internet.

  1. Install the on-prem agent on a machine with Docker inside the private network that can reach the GitLab instance. Set APP_HOST to the instance's hostname or IP address and APP_PORT to its HTTPS port (usually 443). localhost and 127.0.0.1 refer to the agent's own container, so for a service on the same machine use host.docker.internal
  2. In the integration's config wizard, open this connection and select Allow On-Prem Connections
  3. When configuring the instance, turn on Use On-Prem Connection and select the on-prem agent's connection
  4. Enter the instance's own URL in GitLab URL, such as https://gitlab.internal.example.com, not the agent's address. Requests travel through the agent, but the TLS certificate is validated against this URL's hostname
  5. If the instance's certificate is signed by an internal certificate authority, paste that authority's PEM-encoded certificate into CA Certificate

Users who authorize the connection must be able to reach the Authorize URL from their browser, and Token URL must be reachable from the platform, which exchanges the authorization code and refreshes tokens.

GitLab URL can use http only through the on-prem agent. A direct connection requires https.

On-prem enabled: this connection can be configured to connect to an on-prem resource on a private network. Learn more.

InputNotesExample
Authorize URL

The OAuth 2.0 authorization URL. For a self-managed instance, replace gitlab.com with the instance's host. See OAuth 2.0 identity provider API.

https://gitlab.com/oauth/authorize
CA Certificate

The PEM-encoded certificate of the authority that signed the instance's TLS certificate. Required when a self-managed instance uses an internal certificate authority.

-----BEGIN CERTIFICATE----- MIIB... -----END CERTIFICATE-----
Client ID

The Application ID of the OAuth application registered in GitLab. See Configure GitLab as an OAuth 2.0 authentication identity provider.

8f3b2a1c9d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4
Client Secret

The Secret of the OAuth application registered in GitLab.

gloas-xxxxxxxxxxxxxxxxxxxx
GitLab URL

The base URL of the GitLab instance: https://gitlab.com for GitLab.com, or the URL of a self-managed instance. For an instance on a private network, use its internal URL; its hostname is used to validate the TLS certificate. The URL must use https unless requests go through the on-prem agent.

https://gitlab.com
Host

The on-prem agent tunnel host. Set by the on-prem agent.

10.0.0.12
Ignore SSL Errors

When true, TLS certificate validation is disabled. Supply a CA Certificate instead whenever possible.

false
Port

The on-prem agent tunnel port. Set by the on-prem agent.

443
Scopes

Space-separated OAuth scopes. Use api for read and write access, or read_api for read-only access.

api
Token URL

The OAuth 2.0 token URL. For a self-managed instance, replace gitlab.com with the instance's host.

https://gitlab.com/oauth/token

Triggers​

New and Updated Records​

Retrieves existing and ongoing issues or merge requests for a specified GitLab project. Load history once, check for changes on a schedule, or both. | key: pollChangesTrigger

InputNotesExample
Connection

The GitLab connection to use.

Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record modified on or after this date once, ignoring the visibility filters.

2026-01-01
Resource Type

The kind of record to poll for changes.

issues
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Show New Records

When true, records created since the last poll are returned in the trigger payload.

true
Show Updated Records

When true, records updated since the last poll are returned in the trigger payload.

true

This trigger polls the GitLab REST API for new and updated issues or merge requests in a project on a scheduled basis. It does not need GitLab to send outbound requests, so it also works for a self-managed instance on a private network that cannot deliver webhooks.

How It Works​

  1. The trigger runs on the configured schedule
  2. It fetches the selected Resource Type from the project with updated_after set to its stored position, ordered by updated_at ascending. Each further page starts from the newest updated_at already fetched rather than from a page offset, so a record edited during the walk is not skipped. Paging stops once the trigger holds the records it can deliver plus every record sharing the last one's updated_at. An unbatched recurrence delivers at most 1,000 records; a batched recurrence delivers at most 500 records and about 4.5 MB of record data
  3. Each record is classified as created when its created_at is later than the stored position, and otherwise as updated. A record landing exactly on the stored position is included only if it was not already delivered on an earlier recurrence
  4. Outside an initial sync, Show New Records and Show Updated Records each gate one of the two result arrays. Turning either off empties that array, and both keys remain present in the payload
  5. When records are delivered, the position advances to the newest updated_at delivered, a timestamp from GitLab itself, so a GitLab clock that runs behind the scheduler's clock does not cause records to be skipped. A recurrence with no records keeps the position, and a first run without a Look-back Date starts from the scheduler's clock

Initial Sync

An initial sync seeds a complete starting state rather than a change feed, so inputs that narrow which changes are reported would leave gaps in it: Show New Records and Show Updated Records are ignored while it runs, and are the only inputs it ignores. It begins on the first recurrence, when the trigger has no stored position and a Look-back Date (YYYY-MM-DD) is set, and seeds every record updated on or after that date exactly once. Left empty, there is no sync and the trigger starts from its first recurrence.

The window has no fixed upper bound, so a record modified mid-drain is swept into the sync rather than deferred to the schedule. Each recurrence advances the position to the newest record it actually received, never to the wall clock, and the first incremental recurrence resumes from exactly there; nothing in the payload marks the handoff. With batching off each recurrence is capped at 1,000 records; with batching on it is capped at 500 records and about 4.5 MB of record data. A larger window spans several recurrences before the toggles apply again, and the same caps apply to a busy project outside an initial sync, with later recurrences delivering the rest.

Project and Resource Type still apply throughout. The trigger has no page-size or field-selection input, so nothing else is suppressed.

Batching

Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to GitLab.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.

With batching off a downstream step reads body.data.created and body.data.updated. With batching on those fields do not exist: each execution receives one { "changeType": ..., "record": ... } item, or an array of them when the batch size is greater than 1. Any step reading the older shape must be updated before batching is enabled, or it breaks the moment the switch is flipped. Because batching is enabled per flow, that change is scoped to the flow rather than to the component or to other flows using the same trigger.

The trigger advances its position before dispatching, so a failed execution loses its records either way: with batching off the whole recurrence's payload, with batching on only that batch. Records lost this way are not polled again.

Returned Data​

With batching off, the trigger returns an object with two arrays: created for new records and updated for modified records. Each record is an issue or merge request as returned by the Issues API or Merge requests API. Fields shown are representative. The full response object includes additional properties.

Example Response
{
"data": {
"created": [
{
"id": 1740233,
"iid": 42,
"project_id": 278964,
"title": "Retry failed ACH settlements",
"state": "opened",
"created_at": "2026-09-20T15:22:31.118Z",
"updated_at": "2026-09-27T10:05:44.901Z",
"labels": ["bug", "backend"],
"web_url": "https://gitlab.example.com/acme/payments-service/-/issues/42"
}
],
"updated": [
{
"id": 1739877,
"iid": 38,
"project_id": 278964,
"title": "Reconcile duplicate ledger entries",
"state": "opened",
"created_at": "2026-09-02T08:14:07.512Z",
"updated_at": "2026-09-27T16:41:19.330Z",
"labels": ["bug", "backend"],
"web_url": "https://gitlab.example.com/acme/payments-service/-/issues/38"
}
]
}
}

With batching on, each execution instead receives one change item, or an array of them when the batch size is greater than 1:

Example Batched Item
{
"changeType": "created",
"record": {
"id": 1740233,
"iid": 42,
"project_id": 278964,
"title": "Retry failed ACH settlements",
"state": "opened",
"created_at": "2026-09-20T15:22:31.118Z",
"updated_at": "2026-09-27T10:05:44.901Z"
}
}
Example Payload for New and Updated Records⤓
Loading…

Webhook​

Receive events from a manually configured GitLab webhook, branching by event type. | key: webhook

InputNotesExample
Secret Token

The Secret token configured on the GitLab webhook. When set, requests whose X-Gitlab-Token header does not match are rejected.

4f9c2a7e1b3d5f6a8c0e2b4d6f8a0c2e

The Webhook trigger receives events from a webhook configured manually in GitLab. For webhooks the instance creates and removes automatically, use Webhook Events instead.

How It Works​

  1. In GitLab, open the project and select Settings > Webhooks > Add new webhook
  2. Enter the flow's webhook URL as the URL
  3. Enter a random string as the Secret token, and enter the same value in the trigger's Secret Token input
  4. Select the events to send and save the webhook

GitLab sends the secret token as plain text in the X-Gitlab-Token header (Webhooks). Newer GitLab versions also offer an HMAC Signing token; this trigger verifies the Secret token only, so configure the webhook with a secret token. When Secret Token is set, the trigger compares the header to it in constant time and rejects any request that does not match. When it is empty, every request is accepted.

The trigger branches by event type; see Event Types below.

Event Types​

The trigger branches by the X-Gitlab-Event header. Events not listed here arrive on the Other branch. See Webhook events for each event's payload.

Available Events (12)
X-Gitlab-EventBranchDescription
Push HookPushCommits pushed to a branch
Tag Push HookTag PushA tag created or deleted
Issue HookIssueAn issue created, updated, closed, or reopened
Confidential Issue HookConfidential IssueThe same as Issue, for a confidential issue
Note HookNoteA comment added to an issue, merge request, commit, or snippet
Confidential Note HookConfidential NoteThe same as Note, for a comment on a confidential issue
Merge Request HookMerge RequestA merge request opened, updated, merged, closed, or approved
Pipeline HookPipelineA pipeline's status changed
Job HookJobA CI/CD job's status changed
Release HookReleaseA release created, updated, or deleted
Deployment HookDeploymentA deployment started, succeeded, failed, or was canceled
Milestone HookMilestoneA milestone created, closed, reopened, or deleted

Returned Data​

The trigger returns the request GitLab sent, with the event body at body.data and the X-Gitlab-Token header removed after verification. Fields shown are representative. The full response object includes additional properties.

Example Payload
{
"object_kind": "push",
"event_name": "push",
"ref": "refs/heads/feature/CU-86b1x2-ach-retry",
"checkout_sha": "8d2f5c7a9b1e3f4d6c8a0b2e4f6a8c0d2e4f6a8c",
"user_username": "jdoe",
"project_id": 278964,
"project": {
"id": 278964,
"path_with_namespace": "acme/payments-service",
"default_branch": "main"
},
"commits": [
{
"id": "8d2f5c7a9b1e3f4d6c8a0b2e4f6a8c0d2e4f6a8c",
"title": "CU-86b1x2 Add ACH settlement retry",
"timestamp": "2026-09-26T11:58:00Z",
"author": { "name": "Jane Doe", "email": "jdoe@example.com" }
}
],
"total_commits_count": 1
}
Example Payload for Webhook⤓
Loading…

Webhook Events​

Receive project event notifications from GitLab. Automatically creates and manages a webhook in each selected project for the selected events when the instance is deployed, and removes the webhooks when the instance is deleted. | key: webhookEvents

InputNotesExample
Branch Filter

Limit push events to branches matching this name or wildcard pattern, such as main or release/*. Leave empty for all branches.

main
Connection

The GitLab connection to use.

Events

The GitLab events that start this flow.

Projects

The projects to receive events from, each as a numeric ID or full path, or a project URL from a GitLab instance at the domain root. A webhook is created in each project; managing webhooks requires the Maintainer or Owner role.

acme/payments-service

The Webhook Events trigger receives events from GitLab projects, and creates and removes the project webhooks itself.

How It Works​

On Instance Deploy, the trigger generates a secret for the instance and, in each selected project, creates a webhook for the flow's URL with the selected Events and Branch Filter. A webhook that already points at the flow's URL is updated in place rather than duplicated. On a redeploy, webhooks are updated to the new settings, and webhooks in projects that are no longer selected are removed. If creating a webhook fails in one project, the webhooks created during that deploy are removed, so a partial failure leaves no newly created webhook behind.

On Instance Deletion, the trigger removes every webhook that points at the flow's URL in the selected projects.

Managing webhooks requires the Maintainer or Owner role in each project. The trigger uses project webhooks, which are available on every GitLab tier.

Each request is checked against the instance's secret, which GitLab sends in the X-Gitlab-Token header, and a request that does not match is rejected. The trigger branches by event type; see Event Types below.

Network Requirement

GitLab delivers events by calling the flow's public webhook URL, so the GitLab instance must be able to make outbound HTTPS requests to it. For a self-managed instance on a private network, that is outbound traffic from the network; the on-prem agent carries requests into the network, not events out of it. If the instance restricts outgoing webhook requests, an administrator may need to allow the destination (Webhooks security). Where outbound requests are not permitted, use New and Updated Records instead.

GitLab temporarily disables a webhook after 4 consecutive failed deliveries and permanently after 40 (Webhooks).

Event Types​

The trigger branches by the X-Gitlab-Event header. Events not listed here arrive on the Other branch. See Webhook events for each event's payload.

Available Events (12)
X-Gitlab-EventBranchDescription
Push HookPushCommits pushed to a branch
Tag Push HookTag PushA tag created or deleted
Issue HookIssueAn issue created, updated, closed, or reopened
Confidential Issue HookConfidential IssueThe same as Issue, for a confidential issue
Note HookNoteA comment added to an issue, merge request, commit, or snippet
Confidential Note HookConfidential NoteThe same as Note, for a comment on a confidential issue
Merge Request HookMerge RequestA merge request opened, updated, merged, closed, or approved
Pipeline HookPipelineA pipeline's status changed
Job HookJobA CI/CD job's status changed
Release HookReleaseA release created, updated, or deleted
Deployment HookDeploymentA deployment started, succeeded, failed, or was canceled
Milestone HookMilestoneA milestone created, closed, reopened, or deleted

Returned Data​

The trigger returns the request GitLab sent, with the event body at body.data and the X-Gitlab-Token header removed after verification; see Webhook events for the body of each event type. Fields shown are representative. The full response object includes additional properties.

Example Payload
{
"object_kind": "push",
"event_name": "push",
"ref": "refs/heads/feature/CU-86b1x2-ach-retry",
"checkout_sha": "8d2f5c7a9b1e3f4d6c8a0b2e4f6a8c0d2e4f6a8c",
"user_username": "jdoe",
"project_id": 278964,
"project": {
"id": 278964,
"path_with_namespace": "acme/payments-service",
"default_branch": "main"
},
"commits": [
{
"id": "8d2f5c7a9b1e3f4d6c8a0b2e4f6a8c0d2e4f6a8c",
"title": "CU-86b1x2 Add ACH settlement retry",
"timestamp": "2026-09-26T11:58:00Z",
"author": { "name": "Jane Doe", "email": "jdoe@example.com" }
}
],
"total_commits_count": 1
}
Example Payload for Webhook Events⤓
Loading…

Data Sources​

Select Branch​

Select a branch in a project's repository. | key: selectBranch | type: picklist

InputNotesExample
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Select Branch⤓
Loading…

Select Group​

Select a group visible to the connection's user. | key: selectGroup | type: picklist

InputNotesExample
Connection

The GitLab connection to use.

Example Payload for Select Group⤓
Loading…

Select Label​

Select a label available in a project. | key: selectLabel | type: picklist

InputNotesExample
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Select Label⤓
Loading…

Select Milestone​

Select an active milestone in a project. | key: selectMilestone | type: picklist

InputNotesExample
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Select Milestone⤓
Loading…

Select Project​

Select a project the connection's user is a member of. | key: selectProject | type: picklist

InputNotesExample
Connection

The GitLab connection to use.

Example Payload for Select Project⤓
Loading…

Select User​

Select a member of a project, including members inherited from its groups. | key: selectUser | type: picklist

InputNotesExample
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Select User⤓
Loading…

Actions​

Accept Merge Request​

Merge a merge request. Fails if the merge request is not mergeable or the SHA guard does not match. | key: acceptMergeRequest

InputNotesExample
Connection

The GitLab connection to use.

Merge Options

Merge commit message, squash, source branch removal, and expected head SHA.

Merge Request IID

The project-level number of the merge request, shown in GitLab as !17. This is the IID, not the global merge request ID.

17
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Accept Merge Request⤓
Loading…

Create Branch​

Create a branch from an existing branch, tag, or commit. | key: createBranch

InputNotesExample
Connection

The GitLab connection to use.

Branch Name

The name of the branch to create.

feature/CU-86b1x2-ach-retry
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Ref

The branch name, tag, or commit SHA to create the branch from.

main
Example Payload for Create Branch⤓
Loading…

Create File​

Create a file in a repository by committing it to a branch. | key: createFile

InputNotesExample
Branch

The branch to commit the change to.

main
Commit Message

The message for the commit that writes the file.

Update retry settings
Connection

The GitLab connection to use.

Content

The file content. Use Base64 encoding for binary files.

{ "retryLimit": 3, "backoffMs": 500 }
Encoding

How Content is encoded: text, or base64 for binary files.

text
File Path

The path of the file in the repository, such as config/settings.json.

config/settings.json
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Create File⤓
Loading…

Create Issue​

Create an issue in a project. | key: createIssue

InputNotesExample
Additional Fields

Additional optional fields: includes Description, Due Date, and Confidential.

Assignee IDs

The numeric IDs of the users to assign.

1001
Connection

The GitLab connection to use.

Labels

Label names to apply.

bug
Milestone ID

The numeric global ID of the milestone.

55120
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Title

The title of the issue or merge request, shown in lists and notifications.

Retry failed ACH settlements
Example Payload for Create Issue⤓
Loading…

Create Issue Note​

Add a comment to an issue. | key: createIssueNote

InputNotesExample
Body

The comment text, in Markdown.

Deployed to staging; settlements now retry up to 3 times.
Connection

The GitLab connection to use.

Internal

When true, the note is internal and visible only to project members with at least the Reporter role.

false
Issue IID

The project-level number of the issue, shown in GitLab as #42. This is the IID, not the global issue ID.

42
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Create Issue Note⤓
Loading…

Create Merge Request​

Create a merge request between two branches. | key: createMergeRequest

InputNotesExample
Additional Fields

Additional optional fields: includes Description, Remove Source Branch, and Squash.

Assignee IDs

The numeric IDs of the users to assign.

1001
Connection

The GitLab connection to use.

Labels

Label names to apply.

bug
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Source Branch

The branch containing the changes.

feature/ach-retry
Target Branch

The branch the changes merge into.

main
Title

The title of the issue or merge request, shown in lists and notifications.

Retry failed ACH settlements
Example Payload for Create Merge Request⤓
Loading…

Create Merge Request Note​

Add a comment to a merge request. | key: createMergeRequestNote

InputNotesExample
Body

The comment text, in Markdown.

Deployed to staging; settlements now retry up to 3 times.
Connection

The GitLab connection to use.

Internal

When true, the note is internal and visible only to project members with at least the Reporter role.

false
Merge Request IID

The project-level number of the merge request, shown in GitLab as !17. This is the IID, not the global merge request ID.

17
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Create Merge Request Note⤓
Loading…

Delete Branch​

Delete a branch. Protected branches cannot be deleted. | key: deleteBranch

InputNotesExample
Branch

The name of an existing branch, such as feature/ach-retry. Slashes and dots in the name are encoded automatically.

feature/ach-retry
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Delete Branch⤓
Loading…

Delete Instanced Webhooks​

Delete webhooks in the selected projects that point at any of this instance's flow URLs. | key: deleteInstancedWebhooks

InputNotesExample
Connection

The GitLab connection to use.

Projects

The projects to remove this instance's webhooks from.

acme/payments-service
Example Payload for Delete Instanced Webhooks⤓
Loading…

Delete Issue​

Delete an issue. Users with the Planner or Owner role can delete any issue; other project members can delete the issues they authored. | key: deleteIssue

InputNotesExample
Connection

The GitLab connection to use.

Issue IID

The project-level number of the issue, shown in GitLab as #42. This is the IID, not the global issue ID.

42
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Delete Issue⤓
Loading…

Get Branch​

Retrieve a branch and its latest commit. | key: getBranch

InputNotesExample
Branch

The name of an existing branch, such as feature/ach-retry. Slashes and dots in the name are encoded automatically.

feature/ach-retry
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Get Branch⤓
Loading…

Get Commit​

Retrieve a commit with its change statistics. | key: getCommit

InputNotesExample
Commit SHA

The commit SHA, or a branch or tag name to resolve to its latest commit.

8d2f5c7a9b1e3f4d6c8a0b2e4f6a8c0d2e4f6a8c
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Get Commit⤓
Loading…

Get Current User​

Retrieve the user the connection authenticates as. Useful for verifying a connection. | key: getCurrentUser

InputNotesExample
Connection

The GitLab connection to use.

Example Payload for Get Current User⤓
Loading…

Get File​

Retrieve a file from a repository. The content is returned Base64-encoded. | key: getFile

InputNotesExample
Connection

The GitLab connection to use.

File Path

The path of the file in the repository, such as config/settings.json.

config/settings.json
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Ref

The branch name, tag, or commit SHA to read the file from.

main
Example Payload for Get File⤓
Loading…

Get Group​

Retrieve a group by ID or path. | key: getGroup

InputNotesExample
Connection

The GitLab connection to use.

Group

The numeric ID or full path (group/subgroup) of the group, or a group URL from a GitLab instance at the domain root.

acme
Example Payload for Get Group⤓
Loading…

Get Issue​

Retrieve an issue in a project by its IID. | key: getIssue

InputNotesExample
Connection

The GitLab connection to use.

Issue IID

The project-level number of the issue, shown in GitLab as #42. This is the IID, not the global issue ID.

42
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Get Issue⤓
Loading…

Get Merge Request​

Retrieve a merge request in a project by its IID. | key: getMergeRequest

InputNotesExample
Connection

The GitLab connection to use.

Merge Request IID

The project-level number of the merge request, shown in GitLab as !17. This is the IID, not the global merge request ID.

17
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Get Merge Request⤓
Loading…

Get Pipeline​

Retrieve a CI/CD pipeline with its timing and triggering user. | key: getPipeline

InputNotesExample
Connection

The GitLab connection to use.

Pipeline ID

The numeric ID of the pipeline.

61205
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Get Pipeline⤓
Loading…

Get Project​

Retrieve a project by ID or path. | key: getProject

InputNotesExample
Connection

The GitLab connection to use.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Get Project⤓
Loading…

List Branches​

List the branches in a project's repository. | key: listBranches

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Search

Return only results that match this text.

payments
Example Payload for List Branches⤓
Loading…

List Commits​

List commits in a project's repository, with optional filters. | key: listCommits

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Pagination

Page and page-size controls.

Path

Return only commits that touch this file path.

src/settlements/retry.ts
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Ref Name

Return only results for this branch or tag. Defaults to the default branch where applicable.

main
Since

Return only commits after this date-time, in ISO 8601 format.

2026-09-01T00:00:00Z
Until

Return only commits before this date-time, in ISO 8601 format.

2026-09-30T00:00:00Z
Example Payload for List Commits⤓
Loading…

List Groups​

List groups visible to the authenticated user. | key: listGroups

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page. GitLab caps offset pagination on this endpoint at 50,000 records by default, so Fetch All cannot retrieve results beyond that.

false
Pagination

Page and page-size controls.

Search

Return only results that match this text.

payments
Example Payload for List Groups⤓
Loading…

List Issue Notes​

List the comments and system notes on an issue. | key: listIssueNotes

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Issue IID

The project-level number of the issue, shown in GitLab as #42. This is the IID, not the global issue ID.

42
Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for List Issue Notes⤓
Loading…

List Issues​

List issues in a project, with optional filters. | key: listIssues

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page. GitLab caps offset pagination on this endpoint at 50,000 records by default, so Fetch All cannot retrieve results beyond that.

false
State

Return only issues in this state. Leave empty for all states.

Labels

Return only issues that have all of these labels.

bug
Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Search

Return only results that match this text.

payments
Updated After

Return only results updated on or after this date-time, in ISO 8601 format.

2026-09-01T00:00:00Z
Example Payload for List Issues⤓
Loading…

List Labels​

List the labels available in a project, including inherited group labels. | key: listLabels

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Search

Return only results that match this text.

payments
Example Payload for List Labels⤓
Loading…

List Merge Request Notes​

List the comments and system notes on a merge request. | key: listMergeRequestNotes

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Merge Request IID

The project-level number of the merge request, shown in GitLab as !17. This is the IID, not the global merge request ID.

17
Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for List Merge Request Notes⤓
Loading…

List Merge Requests​

List merge requests in a project, with optional filters. | key: listMergeRequests

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Labels

Return only merge requests that have all of these labels.

bug
State

Return only merge requests in this state. Leave empty for all states.

Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Search

Return only results that match this text.

payments
Source Branch

Return only merge requests from this source branch.

feature/ach-retry
Target Branch

Return only merge requests into this target branch.

main
Updated After

Return only results updated on or after this date-time, in ISO 8601 format.

2026-09-01T00:00:00Z
Example Payload for List Merge Requests⤓
Loading…

List Milestones​

List the milestones in a project. | key: listMilestones

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
State

Return only milestones in this state. Leave empty for all.

Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for List Milestones⤓
Loading…

List Pipelines​

List CI/CD pipelines in a project, with optional filters. | key: listPipelines

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Pagination

Page and page-size controls.

Status

Return only pipelines with this status.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Ref Name

Return only results for this branch or tag. Defaults to the default branch where applicable.

main
Updated After

Return only results updated on or after this date-time, in ISO 8601 format.

2026-09-01T00:00:00Z
Example Payload for List Pipelines⤓
Loading…

List Project Members​

List a project's members, including members inherited from its groups. | key: listProjectMembers

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Query

Return only members whose name, email, or username matches this text.

jdoe
Example Payload for List Project Members⤓
Loading…

List Project Webhooks​

List the webhooks configured on a project. | key: listProjectWebhooks

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. The API returns up to 100 results per page.

false
Pagination

Page and page-size controls.

Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for List Project Webhooks⤓
Loading…

List Projects​

List projects visible to the authenticated user. | key: listProjects

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using keyset pagination, ordered by ID. The API returns up to 100 results per page.

false
Membership

When true, return only projects the authenticated user is a member of. On GitLab.com, false searches every public project.

true
Pagination

Page and page-size controls.

Search

Return only results that match this text.

payments
Example Payload for List Projects⤓
Loading…

List Users​

List or search users on the GitLab instance. | key: listUsers

InputNotesExample
Connection

The GitLab connection to use.

Fetch All

When true, automatically fetches all pages of results using keyset pagination, ordered by ID. The API returns up to 100 results per page.

false
Pagination

Page and page-size controls.

Search

Return only results that match this text.

payments
Username

Return only the user with this exact username.

jdoe
Example Payload for List Users⤓
Loading…

Raw Request​

Send raw HTTP request to GitLab. | key: rawRequest

InputNotesExample
Connection

The GitLab connection to use.

Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/projects/278964/issues). The base URL, including /api/v4, is already included from the connection. For example, to call https://gitlab.com/api/v4/projects/278964/issues, enter only /projects/278964/issues. Full URLs (with a scheme or starting with //) are rejected.

/projects/278964/issues

Update File​

Update an existing file in a repository by committing to a branch. | key: updateFile

InputNotesExample
Branch

The branch to commit the change to.

main
Commit Message

The message for the commit that writes the file.

Update retry settings
Connection

The GitLab connection to use.

Content

The file content. Use Base64 encoding for binary files.

{ "retryLimit": 3, "backoffMs": 500 }
Encoding

How Content is encoded: text, or base64 for binary files.

text
File Path

The path of the file in the repository, such as config/settings.json.

config/settings.json
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Update File⤓
Loading…

Update Issue​

Update an issue's fields, or close or reopen it. Empty inputs leave the current values unchanged. | key: updateIssue

InputNotesExample
Additional Fields

Additional optional fields: includes Title, Description, Due Date, State Event, and Confidential.

Assignee IDs

The numeric IDs of the users to assign. Leave empty to keep the current assignees unchanged.

1001
Connection

The GitLab connection to use.

Issue IID

The project-level number of the issue, shown in GitLab as #42. This is the IID, not the global issue ID.

42
Labels

Label names to apply. Leave empty to keep the current labels unchanged.

bug
Milestone ID

The numeric global ID of the milestone.

55120
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Example Payload for Update Issue⤓
Loading…

Update Merge Request​

Update a merge request's fields, or close or reopen it. Empty inputs leave the current values unchanged. | key: updateMergeRequest

InputNotesExample
Additional Fields

Additional optional fields: includes Title, Description, and State Event.

Assignee IDs

The numeric IDs of the users to assign. Leave empty to keep the current assignees unchanged.

1001
Connection

The GitLab connection to use.

Labels

Label names to apply. Leave empty to keep the current labels unchanged.

bug
Merge Request IID

The project-level number of the merge request, shown in GitLab as !17. This is the IID, not the global merge request ID.

17
Project

The numeric ID or full path (group/subgroup/project) of the project, or a project URL from a GitLab instance at the domain root.

acme/payments-service
Target Branch

The new target branch. Leave empty to keep the current target.

main
Example Payload for Update Merge Request⤓
Loading…

Changelog​

2026-10-20​

Initial release of GitLab component for GitLab.com and self-managed instances, with Access Token and OAuth 2.0 connections that can each reach an instance on a private network through the on-prem agent:

  • Added 37 actions for projects, groups, users, branches, commits, repository files, issues, merge requests, notes, pipelines, labels, milestones, project members, and webhooks, including a Raw Request action, with data sources for selecting projects, groups, branches, labels, milestones, and users
  • Added the Webhook, Webhook Events, and New and Updated Records triggers; New and Updated Records detects created and updated issues or merge requests in a project and offers opt-in batching, dispatching each changed record individually or in configured batches; enabling it changes the shape a downstream step receives
  • Added an optional Look-back Date input to the New and Updated Records trigger for performing an initial sync of records. The initial sync begins on the first recurrence and backfills every record modified on or after the specified date, seeding each once and ignoring the trigger's filters; once it completes, later recurrences are unaffected. Leave it empty to start from the first recurrence with no backfill
  • Added output schemas to 36 actions for improved field mapping during configuration
  • Added inline action calling support to 36 actions for improved example output during configuration