# GitLab (/integrations/gitlab)

Use cases and templates: [GitLab integration for AI agents](https://www.sim.ai/integrations/gitlab)





<BlockInfoCard type="gitlab" color="#FFFFFF" />

{/* MANUAL-CONTENT-START:intro */}

Use [GitLab](https://gitlab.com/) to inspect projects and repositories, manage issues and merge requests, add comments, and run or monitor CI/CD pipelines. Additional actions manage project and group membership, invitations, access requests, SAML group links, and instance users. Availability depends on the connected account's permissions and the GitLab instance.

{/* MANUAL-CONTENT-END */}

## Use the block [#usage-instructions]

Manage projects, issues, merge requests, pipelines, and add comments, plus project/group membership, invitations, access requests, SAML group links, and instance user administration. Additional operations depend on the connected account and instance permissions.

## Actions [#actions]

### GitLab List Projects [#gitlab-list-projects]

List GitLab projects accessible to the authenticated user

#### Input [#input]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `owned` | boolean | No | Limit to projects owned by the current user |
| `membership` | boolean | No | Limit to projects the current user is a member of |
| `search` | string | No | Search projects by name |
| `visibility` | string | No | Filter by visibility (public, internal, private) |
| `orderBy` | string | No | Order by field (id, name, path, created\_at, updated\_at, last\_activity\_at) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output]

| Parameter | Type | Description |
| - | - | - |
| `projects` | array | List of GitLab projects |
| `total` | number | Total number of projects |

### GitLab Get Project [#gitlab-get-project]

Get details of a specific GitLab project

#### Input [#input-1]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) (e.g., "namespace/project") |

#### Output [#output-1]

| Parameter | Type | Description |
| - | - | - |
| `project` | object | The GitLab project details |

### GitLab List Groups [#gitlab-list-groups]

List GitLab groups accessible to the authenticated user

#### Input [#input-2]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `owned` | boolean | No | Limit to groups owned by the current user |
| `search` | string | No | Search groups by name or path |
| `topLevelOnly` | boolean | No | Limit to top-level groups, excluding subgroups |
| `visibility` | string | No | Filter by visibility: public, internal, or private |
| `minAccessLevel` | number | No | Only groups where the current user has at least this access level, as an integer (e.g. 30 for Developer). Valid values: 5, 10, 15, 20, 25, 30, 40, 50. |
| `allAvailable` | boolean | No | Include all groups the user can access, not only groups they are a member of (ignored when owned or a minimum access level is set) |
| `orderBy` | string | No | Order by field (name, path, id, similarity). similarity requires a search term. |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-2]

| Parameter | Type | Description |
| - | - | - |
| `groups` | array | List of GitLab groups |
| `total` | number | Total number of groups |

### GitLab Get Group [#gitlab-get-group]

Get details of a specific GitLab group

#### Input [#input-3]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. mygroup or parent/subgroup) |

#### Output [#output-3]

| Parameter | Type | Description |
| - | - | - |
| `group` | object | The GitLab group details |

### GitLab List User Memberships [#gitlab-list-user-memberships]

List a user's project and group memberships. Requires an administrator access token (GET /users/:id/memberships is admin-only). For a non-admin path, iterate List Members on each project or group instead.

#### Input [#input-4]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | string | Yes | The ID of the user whose memberships to list |
| `membershipType` | string | No | Filter by source: 'Project' or 'Namespace' (group). Omit for all memberships. |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-4]

| Parameter | Type | Description |
| - | - | - |
| `memberships` | array | The user's project and group memberships |
| `total` | number | Total number of memberships |

### GitLab List Issues [#gitlab-list-issues]

List issues in a GitLab project

#### Input [#input-5]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `state` | string | No | Filter by state (opened, closed, all) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeId` | number | No | Filter by assignee user ID |
| `milestoneTitle` | string | No | Filter by milestone title |
| `search` | string | No | Search issues by title and description |
| `orderBy` | string | No | Order by field (created\_at, updated\_at, priority, due\_date, relative\_position, label\_priority, milestone\_due, popularity, weight) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-5]

| Parameter | Type | Description |
| - | - | - |
| `issues` | array | List of GitLab issues |
| `total` | number | Total number of issues |

### GitLab Get Issue [#gitlab-get-issue]

Get details of a specific GitLab issue

#### Input [#input-6]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue number within the project (the # shown in GitLab UI) |

#### Output [#output-6]

| Parameter | Type | Description |
| - | - | - |
| `issue` | object | The GitLab issue details |

### GitLab Create Issue [#gitlab-create-issue]

Create a new issue in a GitLab project

#### Input [#input-7]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `title` | string | Yes | Issue title |
| `description` | string | No | Issue description (Markdown supported) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `dueDate` | string | No | Due date in YYYY-MM-DD format |
| `confidential` | boolean | No | Whether the issue is confidential |

#### Output [#output-7]

| Parameter | Type | Description |
| - | - | - |
| `issue` | object | The created GitLab issue |

### GitLab Update Issue [#gitlab-update-issue]

Update an existing issue in a GitLab project

#### Input [#input-8]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue internal ID (IID) |
| `title` | string | No | New issue title |
| `description` | string | No | New issue description (Markdown supported) |
| `stateEvent` | string | No | State event (close or reopen) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `dueDate` | string | No | Due date in YYYY-MM-DD format |
| `confidential` | boolean | No | Whether the issue is confidential |

#### Output [#output-8]

| Parameter | Type | Description |
| - | - | - |
| `issue` | object | The updated GitLab issue |

### GitLab Delete Issue [#gitlab-delete-issue]

Delete an issue from a GitLab project

#### Input [#input-9]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue internal ID (IID) |

#### Output [#output-9]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the issue was deleted successfully |

### GitLab Create Issue Comment [#gitlab-create-issue-comment]

Add a comment to a GitLab issue

#### Input [#input-10]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue internal ID (IID) |
| `body` | string | Yes | Comment body (Markdown supported) |
| `internal` | boolean | No | Create the comment as an internal note visible only to project members |

#### Output [#output-10]

| Parameter | Type | Description |
| - | - | - |
| `note` | object | The created comment |

### GitLab List Merge Requests [#gitlab-list-merge-requests]

List merge requests in a GitLab project

#### Input [#input-11]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `state` | string | No | Filter by state (opened, closed, locked, merged, all) |
| `labels` | string | No | Comma-separated list of label names |
| `sourceBranch` | string | No | Filter by source branch |
| `targetBranch` | string | No | Filter by target branch |
| `orderBy` | string | No | Order by field (created\_at, updated\_at, merged\_at, priority, label\_priority, milestone\_due, popularity, title) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-11]

| Parameter | Type | Description |
| - | - | - |
| `mergeRequests` | array | List of GitLab merge requests |
| `total` | number | Total number of merge requests |

### GitLab Get Merge Request [#gitlab-get-merge-request]

Get details of a specific GitLab merge request

#### Input [#input-12]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |

#### Output [#output-12]

| Parameter | Type | Description |
| - | - | - |
| `mergeRequest` | object | The GitLab merge request details |

### GitLab Create Merge Request [#gitlab-create-merge-request]

Create a new merge request in a GitLab project

#### Input [#input-13]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `sourceBranch` | string | Yes | Source branch name |
| `targetBranch` | string | Yes | Target branch name |
| `title` | string | Yes | Merge request title |
| `description` | string | No | Merge request description (Markdown supported) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `removeSourceBranch` | boolean | No | Delete source branch after merge |
| `squash` | boolean | No | Squash commits on merge |
| `draft` | boolean | No | Mark as draft (applied via the "Draft:" title prefix) |

#### Output [#output-13]

| Parameter | Type | Description |
| - | - | - |
| `mergeRequest` | object | The created GitLab merge request |

### GitLab Update Merge Request [#gitlab-update-merge-request]

Update an existing merge request in a GitLab project

#### Input [#input-14]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `title` | string | No | New merge request title |
| `description` | string | No | New merge request description |
| `stateEvent` | string | No | State event (close or reopen) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `targetBranch` | string | No | New target branch |
| `removeSourceBranch` | boolean | No | Delete source branch after merge |
| `squash` | boolean | No | Squash commits on merge |
| `draft` | boolean | No | Mark as draft or remove draft status (applied via the "Draft:" title prefix; requires title to be set) |

#### Output [#output-14]

| Parameter | Type | Description |
| - | - | - |
| `mergeRequest` | object | The updated GitLab merge request |

### GitLab Merge Merge Request [#gitlab-merge-merge-request]

Merge a merge request in a GitLab project

#### Input [#input-15]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `mergeCommitMessage` | string | No | Custom merge commit message |
| `squashCommitMessage` | string | No | Custom squash commit message |
| `squash` | boolean | No | Squash commits before merging |
| `shouldRemoveSourceBranch` | boolean | No | Delete source branch after merge |
| `mergeWhenPipelineSucceeds` | boolean | No | Merge when pipeline succeeds |

#### Output [#output-15]

| Parameter | Type | Description |
| - | - | - |
| `mergeRequest` | object | The merged GitLab merge request |

### GitLab Create Merge Request Comment [#gitlab-create-merge-request-comment]

Add a comment to a GitLab merge request

#### Input [#input-16]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `body` | string | Yes | Comment body (Markdown supported) |
| `internal` | boolean | No | Create the comment as an internal note visible only to project members |

#### Output [#output-16]

| Parameter | Type | Description |
| - | - | - |
| `note` | object | The created comment |

### GitLab List Pipelines [#gitlab-list-pipelines]

List pipelines in a GitLab project

#### Input [#input-17]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `ref` | string | No | Filter by ref (branch or tag) |
| `status` | string | No | Filter by status (created, waiting\_for\_resource, preparing, pending, running, success, failed, canceling, canceled, skipped, manual, scheduled, waiting\_for\_callback) |
| `orderBy` | string | No | Order by field (id, status, ref, updated\_at, user\_id) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-17]

| Parameter | Type | Description |
| - | - | - |
| `pipelines` | array | List of GitLab pipelines |
| `total` | number | Total number of pipelines |

### GitLab Get Pipeline [#gitlab-get-pipeline]

Get details of a specific GitLab pipeline

#### Input [#input-18]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |

#### Output [#output-18]

| Parameter | Type | Description |
| - | - | - |
| `pipeline` | object | The GitLab pipeline details |

### GitLab Create Pipeline [#gitlab-create-pipeline]

Trigger a new pipeline in a GitLab project

#### Input [#input-19]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `ref` | string | Yes | Branch or tag to run the pipeline on |
| `variables` | array | No | Array of variables for the pipeline (each with key, value, and optional variable\_type) |
| `inputs` | json | No | Pipeline inputs as a key/value object (for pipelines with spec:inputs) |

#### Output [#output-19]

| Parameter | Type | Description |
| - | - | - |
| `pipeline` | object | The created GitLab pipeline |

### GitLab Retry Pipeline [#gitlab-retry-pipeline]

Retry a failed GitLab pipeline

#### Input [#input-20]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |

#### Output [#output-20]

| Parameter | Type | Description |
| - | - | - |
| `pipeline` | object | The retried GitLab pipeline |

### GitLab Cancel Pipeline [#gitlab-cancel-pipeline]

Cancel a running GitLab pipeline

#### Input [#input-21]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |

#### Output [#output-21]

| Parameter | Type | Description |
| - | - | - |
| `pipeline` | object | The cancelled GitLab pipeline |

### GitLab List Repository Tree [#gitlab-list-repository-tree]

List files and directories in a GitLab project repository

#### Input [#input-22]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `path` | string | No | Path inside the repository to list |
| `ref` | string | No | Branch, tag, or commit SHA to list from |
| `recursive` | boolean | No | Whether to list files recursively |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-22]

| Parameter | Type | Description |
| - | - | - |
| `tree` | array | List of repository tree entries |
| `total` | number | Total number of tree entries |

### GitLab Get File [#gitlab-get-file]

Get the contents of a file from a GitLab project repository

#### Input [#input-23]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `filePath` | string | Yes | Path to the file in the repository |
| `ref` | string | Yes | Branch, tag, or commit SHA |

#### Output [#output-23]

| Parameter | Type | Description |
| - | - | - |
| `filePath` | string | The file path |
| `fileName` | string | The file name |
| `size` | number | The file size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `content` | string | The decoded file content, truncated to 1M characters |
| `truncated` | boolean | Whether the content was truncated |

### GitLab Create File [#gitlab-create-file]

Create a new file in a GitLab project repository

#### Input [#input-24]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `filePath` | string | Yes | Path to the file in the repository |
| `branch` | string | Yes | Branch to commit the new file to |
| `content` | string | Yes | File content |
| `startBranch` | string | No | Name of the base branch to create the target branch from, if it does not exist |
| `authorName` | string | No | Commit author name (defaults to the token user) |
| `authorEmail` | string | No | Commit author email (defaults to the token user) |
| `executeFilemode` | boolean | No | Enable the execute flag on the file |
| `commitMessage` | string | Yes | Commit message |

#### Output [#output-24]

| Parameter | Type | Description |
| - | - | - |
| `filePath` | string | The created file path |
| `branch` | string | The branch the file was committed to |

### GitLab Update File [#gitlab-update-file]

Update an existing file in a GitLab project repository

#### Input [#input-25]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `filePath` | string | Yes | Path to the file in the repository |
| `branch` | string | Yes | Branch to commit the update to |
| `content` | string | Yes | New file content |
| `startBranch` | string | No | Name of the base branch to create the target branch from, if it does not exist |
| `authorName` | string | No | Commit author name (defaults to the token user) |
| `authorEmail` | string | No | Commit author email (defaults to the token user) |
| `executeFilemode` | boolean | No | Enable or disable the execute flag on the file |
| `commitMessage` | string | Yes | Commit message |
| `lastCommitId` | string | No | Last known commit ID for the file (optimistic locking) |

#### Output [#output-25]

| Parameter | Type | Description |
| - | - | - |
| `filePath` | string | The updated file path |
| `branch` | string | The branch the update was committed to |

### GitLab Create Branch [#gitlab-create-branch]

Create a new branch in a GitLab project repository

#### Input [#input-26]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `branch` | string | Yes | Name of the new branch |
| `ref` | string | Yes | Source branch/tag/SHA |

#### Output [#output-26]

| Parameter | Type | Description |
| - | - | - |
| `name` | string | The created branch name |
| `webUrl` | string | The web URL of the branch |
| `protected` | boolean | Whether the branch is protected |
| `commit` | object | The commit the branch points to |

### GitLab Delete Branch [#gitlab-delete-branch]

Delete a branch from a GitLab project repository

#### Input [#input-27]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `branch` | string | Yes | Name of the branch to delete |

#### Output [#output-27]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the branch was deleted successfully |

### GitLab Compare Branches [#gitlab-compare-branches]

Compare two branches, tags, or commits in a GitLab project repository

#### Input [#input-28]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `from` | string | Yes | Commit SHA or branch/tag name to compare from |
| `to` | string | Yes | Commit SHA or branch/tag name to compare to |
| `straight` | boolean | No | Compare directly from..to instead of using the merge base (defaults to false) |
| `fromProjectId` | string | No | ID of the project to compare from (for cross-fork comparisons) |
| `unidiff` | boolean | No | Return diffs in unified diff format (GitLab 16.5+) |

#### Output [#output-28]

| Parameter | Type | Description |
| - | - | - |
| `commit` | object | The latest commit in the comparison |
| `commits` | array | Commits between the two references |
| `diffs` | array | File diffs between the two references |
| `compareTimeout` | boolean | Whether the comparison exceeded size limits or timed out |
| `compareSameRef` | boolean | Whether both references point to the same commit |
| `webUrl` | string | The web URL for viewing the comparison |

### GitLab List Branches [#gitlab-list-branches]

List branches in a GitLab project repository

#### Input [#input-29]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `search` | string | No | Filter branches by name |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-29]

| Parameter | Type | Description |
| - | - | - |
| `branches` | array | List of branches |
| `total` | number | Total number of branches |

### GitLab List Commits [#gitlab-list-commits]

List commits in a GitLab project repository

#### Input [#input-30]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `refName` | string | No | Branch, tag, or revision range to list commits from |
| `since` | string | No | Only commits after this ISO 8601 date |
| `until` | string | No | Only commits before this ISO 8601 date |
| `path` | string | No | Only commits affecting this file path |
| `author` | string | No | Filter commits by author |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-30]

| Parameter | Type | Description |
| - | - | - |
| `commits` | array | List of commits |
| `total` | number | Number of commits returned on this page (GitLab does not report a grand total for commits) |

### GitLab Get Merge Request Changes [#gitlab-get-merge-request-changes]

Get the file changes (diffs) of a GitLab merge request

#### Input [#input-31]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |

#### Output [#output-31]

| Parameter | Type | Description |
| - | - | - |
| `mergeRequestIid` | number | The merge request internal ID (IID) |
| `changes` | array | List of file changes (diffs) |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether the merge request has more than 100 changed files (results truncated) |

### GitLab Approve Merge Request [#gitlab-approve-merge-request]

Approve a GitLab merge request

#### Input [#input-32]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `sha` | string | No | HEAD SHA of the merge request to approve |

#### Output [#output-32]

| Parameter | Type | Description |
| - | - | - |
| `approvalsRequired` | number | Number of approvals required |
| `approvalsLeft` | number | Number of approvals still needed |
| `approvedBy` | array | List of approvers |

### GitLab List Pipeline Jobs [#gitlab-list-pipeline-jobs]

List jobs for a GitLab pipeline

#### Input [#input-33]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |
| `scope` | string | No | Filter jobs by scope (e.g. created, running, success, failed) |
| `includeRetried` | boolean | No | Whether to include retried jobs |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-33]

| Parameter | Type | Description |
| - | - | - |
| `jobs` | array | List of pipeline jobs |
| `total` | number | Total number of jobs |

### GitLab Get Job Log [#gitlab-get-job-log]

Get the log (trace) of a GitLab job

#### Input [#input-34]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `jobId` | number | Yes | Job ID |

#### Output [#output-34]

| Parameter | Type | Description |
| - | - | - |
| `log` | string | The job log (trace) output, truncated to 200k characters |
| `truncated` | boolean | Whether the log was truncated |

### GitLab Play Job [#gitlab-play-job]

Trigger (play) a manual GitLab job

#### Input [#input-35]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `jobId` | number | Yes | Job ID |
| `jobVariables` | array | No | Variables for the manual job (array of objects with key and value) |

#### Output [#output-35]

| Parameter | Type | Description |
| - | - | - |
| `id` | number | The job ID |
| `name` | string | The job name |
| `status` | string | The job status |
| `webUrl` | string | The web URL of the job |

### GitLab List Releases [#gitlab-list-releases]

List releases in a GitLab project

#### Input [#input-36]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `orderBy` | string | No | Order by field (released\_at, created\_at) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-36]

| Parameter | Type | Description |
| - | - | - |
| `releases` | array | List of GitLab releases |
| `total` | number | Total number of releases |

### GitLab Create Release [#gitlab-create-release]

Create a new release in a GitLab project

#### Input [#input-37]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `tagName` | string | Yes | The Git tag for the release |
| `name` | string | No | The release name |
| `description` | string | No | Release description/notes (Markdown supported) |
| `ref` | string | No | Commit SHA, branch, or tag to create the tag from if it does not already exist |
| `releasedAt` | string | No | ISO 8601 date for an upcoming or historical release |
| `tagMessage` | string | No | Annotation message to use if creating a new annotated tag |
| `assetLinks` | array | No | Release asset links: array of objects with name, url, and optional link\_type (other, runbook, image, package) |
| `milestones` | array | No | Array of milestone titles to associate with the release |

#### Output [#output-37]

| Parameter | Type | Description |
| - | - | - |
| `release` | object | The created GitLab release |

### GitLab List Members [#gitlab-list-members]

List members of a GitLab project or group. Includes members inherited from ancestor groups by default.

#### Input [#input-38]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `directOnly` | boolean | No | When true, returns only direct members. Defaults to false, which also returns members inherited from ancestor groups. |
| `query` | string | No | Filter members by name, email, or username |
| `userIds` | string | No | Comma-separated user IDs to filter the results to |
| `state` | string | No | Filter inherited-member results by state: 'awaiting' or 'active' (Premium/Ultimate; only applies when inherited members are included) |
| `showSeatInfo` | boolean | No | Include seat information for each member |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-38]

| Parameter | Type | Description |
| - | - | - |
| `members` | array | List of project or group members |
| `total` | number | Total number of members |

### GitLab Add Member [#gitlab-add-member]

Add an existing GitLab user to a project or group at a given access level

#### Input [#input-39]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | No | The ID of the user to add. Provide either userId or username. |
| `username` | string | No | The username of the user to add. Provide either userId or username. |
| `accessLevel` | number | Yes | Access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) |

#### Output [#output-39]

| Parameter | Type | Description |
| - | - | - |
| `member` | object | The added member |
| `alreadyMember` | boolean | Whether the user was already a member (add was a no-op) |

### GitLab Update Member [#gitlab-update-member]

Update a member's access level in a GitLab project or group

#### Input [#input-40]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The ID of the member to update |
| `accessLevel` | number | Yes | New access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format. Pass an empty string to clear an existing expiration. |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only). Warning: when omitted, GitLab removes any custom role the member currently holds. |

#### Output [#output-40]

| Parameter | Type | Description |
| - | - | - |
| `member` | object | The updated member |

### GitLab Remove Member [#gitlab-remove-member]

Remove a member from a GitLab project or group

#### Input [#input-41]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The ID of the member to remove |
| `skipSubresources` | boolean | No | Skip deleting the member from subgroups and projects below the target (defaults to false) |
| `unassignIssuables` | boolean | No | Unassign the member from all issues and merge requests in the target (defaults to false) |

#### Output [#output-41]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the member was removed successfully |

### GitLab Invite Member [#gitlab-invite-member]

Invite a person to a GitLab project or group by email address

#### Input [#input-42]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `email` | string | Yes | Email address to invite (comma-separated for multiple) |
| `accessLevel` | number | Yes | Access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) |
| `inviteSource` | string | No | Identifier recorded as the source of the invitation (for attribution) |

#### Output [#output-42]

| Parameter | Type | Description |
| - | - | - |
| `status` | string | Invitation status returned by GitLab |
| `message` | object | Per-email result detail, if any |

### GitLab List Invitations [#gitlab-list-invitations]

List pending email invitations for a GitLab project or group

#### Input [#input-43]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `query` | string | No | Filter invitations by invited email |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-43]

| Parameter | Type | Description |
| - | - | - |
| `invitations` | array | List of pending invitations |
| `total` | number | Total number of invitations |

### GitLab Update Invitation [#gitlab-update-invitation]

Update a pending invitation to a GitLab project or group

#### Input [#input-44]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `email` | string | Yes | Email address of the invitation to update |
| `accessLevel` | number | No | New access level: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date (ISO 8601, e.g. 2026-12-31T00:00:00Z; date-only also accepted). At least one of accessLevel or expiresAt must be provided. |

#### Output [#output-44]

| Parameter | Type | Description |
| - | - | - |
| `invitation` | object | The updated invitation |

### GitLab Revoke Invitation [#gitlab-revoke-invitation]

Revoke a pending email invitation to a GitLab project or group

#### Input [#input-45]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `email` | string | Yes | Email address of the invitation to revoke |

#### Output [#output-45]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the invitation was revoked successfully |

### GitLab List Access Requests [#gitlab-list-access-requests]

List pending access requests for a GitLab project or group

#### Input [#input-46]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-46]

| Parameter | Type | Description |
| - | - | - |
| `accessRequests` | array | List of pending access requests |
| `total` | number | Total number of access requests |

### GitLab Approve Access Request [#gitlab-approve-access-request]

Approve a pending access request for a GitLab project or group

#### Input [#input-47]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The user ID of the access requester |
| `accessLevel` | number | No | Access level to grant: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner). Defaults to 30 (Developer). |

#### Output [#output-47]

| Parameter | Type | Description |
| - | - | - |
| `accessRequest` | object | The approved access request |

### GitLab Deny Access Request [#gitlab-deny-access-request]

Deny (delete) a pending access request for a GitLab project or group

#### Input [#input-48]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The user ID of the access requester |

#### Output [#output-48]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the access request was denied successfully |

### GitLab List SAML Group Links [#gitlab-list-saml-group-links]

List SAML group links for a GitLab group. Use this to detect whether a group is governed by SAML group sync before provisioning members.

#### Input [#input-49]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) |

#### Output [#output-49]

| Parameter | Type | Description |
| - | - | - |
| `samlGroupLinks` | array | List of SAML group links |
| `total` | number | Number of SAML group links |

### GitLab Search Users [#gitlab-search-users]

Search for GitLab users by name, username, or email. Email matches must be exact; private emails match only with an admin token. Use this to resolve an email to a user ID before adding a member.

#### Input [#input-50]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `search` | string | Yes | Name, username, or email to search for |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |

#### Output [#output-50]

| Parameter | Type | Description |
| - | - | - |
| `users` | array | List of matching users |
| `total` | number | Total number of matching users |

### GitLab Create User [#gitlab-create-user]

Create a new GitLab user. Requires an administrator token with admin\_mode on the instance.

#### Input [#input-51]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `email` | string | Yes | The user's email address |
| `username` | string | Yes | The user's username |
| `name` | string | Yes | The user's display name |
| `password` | string | No | The user's password. Omit and set resetPassword to email a reset link instead. |
| `resetPassword` | boolean | No | Send the user a password reset link instead of setting a password |
| `forceRandomPassword` | boolean | No | Set a random password without emailing a reset link (useful for SSO-only accounts). One of password, resetPassword, or forceRandomPassword is required. |
| `admin` | boolean | No | Whether the new user is an administrator |
| `skipConfirmation` | boolean | No | Skip email confirmation for the new user |

#### Output [#output-51]

| Parameter | Type | Description |
| - | - | - |
| `user` | object | The created user |

### GitLab Update User [#gitlab-update-user]

Modify an existing GitLab user. Requires an administrator token with admin\_mode on the instance.

#### Input [#input-52]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to modify |
| `email` | string | No | The user's new email address (GitLab only allows changing to one of the user's existing verified secondary emails) |
| `username` | string | No | The user's new username |
| `name` | string | No | The user's new display name |
| `admin` | boolean | No | Whether the user is an administrator |

#### Output [#output-52]

| Parameter | Type | Description |
| - | - | - |
| `user` | object | The updated user |

### GitLab Delete User [#gitlab-delete-user]

Delete a GitLab user. Requires an administrator token with admin\_mode on the instance.

#### Input [#input-53]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to delete |
| `hardDelete` | boolean | No | When true, contributions, personal projects, AND groups owned solely by this user are deleted rather than moved to a Ghost User |

#### Output [#output-53]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the user was deleted successfully |

### GitLab Block User [#gitlab-block-user]

Block a GitLab user, preventing them from signing in or accessing the instance

#### Input [#input-54]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-54]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Unblock User [#gitlab-unblock-user]

Unblock a previously blocked GitLab user

#### Input [#input-55]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-55]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Deactivate User [#gitlab-deactivate-user]

Deactivate a dormant GitLab user

#### Input [#input-56]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-56]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Activate User [#gitlab-activate-user]

Reactivate a deactivated GitLab user

#### Input [#input-57]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-57]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Ban User [#gitlab-ban-user]

Ban a GitLab user

#### Input [#input-58]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-58]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Unban User [#gitlab-unban-user]

Unban a previously banned GitLab user

#### Input [#input-59]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-59]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Approve User [#gitlab-approve-user]

Approve a GitLab user whose signup is pending administrator approval

#### Input [#input-60]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-60]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Reject User [#gitlab-reject-user]

Reject a GitLab user whose signup is pending administrator approval

#### Input [#input-61]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to act on |

#### Output [#output-61]

| Parameter | Type | Description |
| - | - | - |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |

### GitLab Delete User Identity [#gitlab-delete-user-identity]

Delete a user's authentication identity (e.g. SAML or LDAP). Requires an administrator token with admin\_mode on the instance.

#### Input [#input-62]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user |
| `provider` | string | Yes | The external identity provider name (e.g. saml, ldapmain) |

#### Output [#output-62]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the identity was deleted successfully |

### GitLab Add SAML Group Link [#gitlab-add-saml-group-link]

Add a SAML group link that maps an identity-provider group to a GitLab group at a given access level (GitLab Premium/Ultimate)

#### Input [#input-63]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) |
| `samlGroupName` | string | Yes | The name of the SAML group as sent by the identity provider |
| `accessLevel` | number | Yes | Access level granted to members of the SAML group: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) |
| `provider` | string | No | Unique provider name that must match for this group link to be applied (GitLab 18.2+) |

#### Output [#output-63]

| Parameter | Type | Description |
| - | - | - |
| `samlGroupLink` | object | The created SAML group link |

### GitLab Delete SAML Group Link [#gitlab-delete-saml-group-link]

Delete a SAML group link from a GitLab group (GitLab Premium/Ultimate)

#### Input [#input-64]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) |
| `samlGroupName` | string | Yes | The name of the SAML group link to delete |
| `provider` | string | No | Provider name of the link to delete. Required when multiple links share the same SAML group name. |

#### Output [#output-64]

| Parameter | Type | Description |
| - | - | - |
| `success` | boolean | Whether the SAML group link was deleted successfully |

## Triggers [#triggers]

A trigger starts a workflow when a supported event occurs in this service.

### GitLab Comment [#gitlab-comment]

Trigger workflow when a comment is added on a commit, merge request, or issue

#### Configuration [#configuration]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |

#### Output [#output-65]

| Parameter | Type | Description |
| - | - | - |
| `object_kind` | string | Event kind (note) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | |
| ↳ `id` | number | Comment ID |
| ↳ `note` | string | Comment body |
| ↳ `noteable_type` | string | What the comment is on (Commit, MergeRequest, Issue, Snippet) |
| ↳ `action` | string | Action (create, update) |
| ↳ `url` | string | Comment URL |

***

### GitLab Event [#gitlab-event]

Trigger workflow from any GitLab webhook event

#### Configuration [#configuration-1]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |

#### Output [#output-66]

| Parameter | Type | Description |
| - | - | - |
| `object_kind` | string | Event kind (push, merge\_request, issue, etc.) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | json | Actor that triggered the event (when present) |
| `project` | object | |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | json | Event-specific attributes (varies by object\_kind) |

***

### GitLab Issue [#gitlab-issue]

Trigger workflow when an issue is opened, updated, or closed in GitLab

#### Configuration [#configuration-2]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |

#### Output [#output-67]

| Parameter | Type | Description |
| - | - | - |
| `object_kind` | string | Event kind (issue) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | |
| ↳ `id` | number | Global issue ID |
| ↳ `iid` | number | Project-scoped issue number |
| ↳ `title` | string | Issue title |
| ↳ `state` | string | State (opened, closed) |
| ↳ `action` | string | Action (open, close, reopen, update) |
| ↳ `description` | string | Issue description |
| ↳ `confidential` | boolean | Whether the issue is confidential |
| ↳ `url` | string | Issue URL |
| ↳ `work_item_type` | string | Work item type (e.g. Issue, Incident, Task); GitLab 17.2+ only |

***

### GitLab Merge Request [#gitlab-merge-request]

Trigger workflow when a merge request is opened, updated, or merged in GitLab

#### Configuration [#configuration-3]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |

#### Output [#output-68]

| Parameter | Type | Description |
| - | - | - |
| `object_kind` | string | Event kind (merge\_request) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | |
| ↳ `id` | number | Global merge request ID |
| ↳ `iid` | number | Project-scoped merge request number |
| ↳ `title` | string | Merge request title |
| ↳ `state` | string | State (opened, closed, merged, locked) |
| ↳ `action` | string | Action (open, close, reopen, update, merge, etc.) |
| ↳ `source_branch` | string | Source branch |
| ↳ `target_branch` | string | Target branch |
| ↳ `merge_status` | string | Merge status (deprecated by GitLab) |
| ↳ `detailed_merge_status` | string | Detailed merge status |
| ↳ `draft` | boolean | Whether the merge request is a draft |
| ↳ `url` | string | Merge request URL |

***

### GitLab Pipeline [#gitlab-pipeline]

Trigger workflow when a pipeline status changes in GitLab

#### Configuration [#configuration-4]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |

#### Output [#output-69]

| Parameter | Type | Description |
| - | - | - |
| `object_kind` | string | Event kind (pipeline) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | |
| ↳ `id` | number | Pipeline ID |
| ↳ `status` | string | Pipeline status (success, failed, running, etc.) |
| ↳ `detailed_status` | string | Detailed pipeline status |
| ↳ `ref` | string | Ref the pipeline ran on |
| ↳ `sha` | string | Commit SHA |
| ↳ `source` | string | Pipeline source (push, web, schedule, etc.) |
| ↳ `duration` | number | Pipeline duration in seconds |
| ↳ `url` | string | Pipeline URL |

***

### GitLab Push [#gitlab-push]

Trigger workflow when commits are pushed to a GitLab project

#### Configuration [#configuration-5]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |

#### Output [#output-70]

| Parameter | Type | Description |
| - | - | - |
| `object_kind` | string | Event kind (push) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `ref` | string | Git ref that was pushed (e.g. refs/heads/main) |
| `branch` | string | Branch name derived from ref |
| `before` | string | SHA before the push |
| `after` | string | SHA after the push |
| `checkout_sha` | string | SHA of the most recent commit |
| `user_username` | string | Username of the pusher |
| `user_name` | string | Display name of the pusher |
| `user_email` | string | Email of the pusher |
| `total_commits_count` | number | Number of commits in the push |
| `project` | object | |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `commits` | json | Array of commit objects included in this push |
