# GitLab

Manage GitLab: projects, merge requests, issues, pipelines, files, branches. Exposes **59 actions** covering the full API surface
the agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `gitlab_projects_list` | List projects - GET /projects. |
| `gitlab_project_get` | Get one project - GET /projects/&#123;id&#125;. |
| `gitlab_project_create` | Create a new project - POST /projects. |
| `gitlab_project_update` | Update a project - PUT /projects/&#123;id&#125;. |
| `gitlab_project_delete` | Delete a project - DELETE /projects/&#123;id&#125;. |
| `gitlab_file_get` | Get a file - GET /projects/&#123;id&#125;/repository/files/&#123;path&#125;. |
| `gitlab_file_create` | Create a file - POST /projects/&#123;id&#125;/repository/files/&#123;path&#125;. |
| `gitlab_file_update` | Update a file - PUT /projects/&#123;id&#125;/repository/files/&#123;path&#125;. |
| `gitlab_file_delete` | Delete a file - DELETE /projects/&#123;id&#125;/repository/files/&#123;path&#125;. |
| `gitlab_branches_list` | List branches - GET /projects/&#123;id&#125;/repository/branches. |
| `gitlab_branch_get` | Get one branch - GET /projects/&#123;id&#125;/repository/branches/&#123;branch&#125;. |
| `gitlab_branch_create` | Create a branch - POST /projects/&#123;id&#125;/repository/branches. |
| `gitlab_branch_delete` | Delete a branch - DELETE /projects/&#123;id&#125;/repository/branches/&#123;branch&#125;. |
| `gitlab_commits_list` | List commits - GET /projects/&#123;id&#125;/repository/commits. |
| `gitlab_commit_get` | Get one commit - GET /projects/&#123;id&#125;/repository/commits/&#123;sha&#125;. |
| `gitlab_merge_requests_list` | List merge requests - GET /projects/&#123;id&#125;/merge_requests. |
| `gitlab_merge_request_get` | Get one merge request - GET /projects/&#123;id&#125;/merge_requests/&#123;iid&#125;. |
| `gitlab_merge_request_create` | Create a merge request - POST /projects/&#123;id&#125;/merge_requests. |
| `gitlab_merge_request_update` | Update a merge request - PUT /projects/&#123;id&#125;/merge_requests/&#123;iid&#125;. |
| `gitlab_merge_request_merge` | Merge a merge request - PUT /projects/&#123;id&#125;/merge_requests/&#123;iid&#125;/merge. |
| `gitlab_merge_request_close` | Close a merge request - PUT /projects/&#123;id&#125;/merge_requests/&#123;iid&#125;?state_event=close. |
| `gitlab_issues_list` | List issues - GET /projects/&#123;id&#125;/issues. |
| `gitlab_issue_get` | Get one issue - GET /projects/&#123;id&#125;/issues/&#123;iid&#125;. |
| `gitlab_issue_create` | Create an issue - POST /projects/&#123;id&#125;/issues. |
| `gitlab_issue_update` | Update an issue - PUT /projects/&#123;id&#125;/issues/&#123;iid&#125;. |
| `gitlab_issue_close` | Close an issue - PUT /projects/&#123;id&#125;/issues/&#123;iid&#125;?state_event=close. |
| `gitlab_notes_list` | List notes (comments) - GET /projects/&#123;id&#125;/&#123;noteable_type&#125;/&#123;iid&#125;/notes. |
| `gitlab_note_get` | Get one note (comment) - GET /projects/&#123;id&#125;/&#123;noteable_type&#125;/&#123;iid&#125;/notes/&#123;note_id&#125;. |
| `gitlab_note_create` | Create a note (comment) - POST /projects/&#123;id&#125;/&#123;noteable_type&#125;/&#123;iid&#125;/notes. |
| `gitlab_note_update` | Update a note (comment) - PUT /projects/&#123;id&#125;/&#123;noteable_type&#125;/&#123;iid&#125;/notes/&#123;note_id&#125;. |
| `gitlab_note_delete` | Delete a note (comment) - DELETE /projects/&#123;id&#125;/&#123;noteable_type&#125;/&#123;iid&#125;/notes/&#123;note_id&#125;. |
| `gitlab_pipelines_list` | List pipelines - GET /projects/&#123;id&#125;/pipelines. |
| `gitlab_pipeline_get` | Get one pipeline - GET /projects/&#123;id&#125;/pipelines/&#123;pipeline_id&#125;. |
| `gitlab_jobs_list` | List jobs (CI/CD) - GET /projects/&#123;id&#125;/jobs. |
| `gitlab_job_get` | Get one job - GET /projects/&#123;id&#125;/jobs/&#123;job_id&#125;. |
| `gitlab_members_list` | List project members - GET /projects/&#123;id&#125;/members. |
| `gitlab_member_get` | Get one member - GET /projects/&#123;id&#125;/members/&#123;user_id&#125;. |
| `gitlab_member_add` | Add a member to project - POST /projects/&#123;id&#125;/members. |
| `gitlab_member_update` | Update member access level - PUT /projects/&#123;id&#125;/members/&#123;user_id&#125;. |
| `gitlab_member_remove` | Remove a member from project - DELETE /projects/&#123;id&#125;/members/&#123;user_id&#125;. |
| `gitlab_users_list` | List users (global) - GET /users. |
| `gitlab_user_get` | Get one user - GET /users/&#123;id&#125;. |
| `gitlab_milestones_list` | List milestones - GET /projects/&#123;id&#125;/milestones. |
| `gitlab_milestone_get` | Get one milestone - GET /projects/&#123;id&#125;/milestones/&#123;milestone_id&#125;. |
| `gitlab_milestone_create` | Create a milestone - POST /projects/&#123;id&#125;/milestones. |
| `gitlab_milestone_update` | Update a milestone - PUT /projects/&#123;id&#125;/milestones/&#123;milestone_id&#125;. |
| `gitlab_labels_list` | List labels - GET /projects/&#123;id&#125;/labels. |
| `gitlab_label_get` | Get one label - GET /projects/&#123;id&#125;/labels/&#123;label_id&#125;. |
| `gitlab_label_create` | Create a label - POST /projects/&#123;id&#125;/labels. |
| `gitlab_label_update` | Update a label - PUT /projects/&#123;id&#125;/labels/&#123;label_id&#125;. |
| `gitlab_label_delete` | Delete a label - DELETE /projects/&#123;id&#125;/labels/&#123;label_id&#125;. |
| `gitlab_groups_list` | List groups - GET /groups. |
| `gitlab_group_get` | Get one group - GET /groups/&#123;id&#125;. |
| `gitlab_group_create` | Create a group - POST /groups. |
| `gitlab_group_update` | Update a group - PUT /groups/&#123;id&#125;. |
| `gitlab_group_delete` | Delete a group - DELETE /groups/&#123;id&#125;. |
| `gitlab_group_projects_list` | List projects in a group - GET /groups/&#123;id&#125;/projects. |
| `gitlab_group_members_list` | List group members - GET /groups/&#123;id&#125;/members. |
| `gitlab_search` | Search GitLab - GET /search. |

## How to get credentials

This connector uses **OAuth 2.0**. In FlyMyAI, open the tool and click
**Connect** - you'll be redirected to GitLab to authorize, then back to
FlyMyAI. There is no API key to paste.

> The OAuth app must be registered by FlyMyAI for this provider. If you see
> *"connection not configured"*, the provider's client credentials are still
> being set up - check back shortly.

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| _(none)_ | Connect via OAuth - nothing to paste. |

## Troubleshooting

- **`401 Unauthorized` / `403 Forbidden`** - the OAuth connection expired or was revoked - reconnect.
- **`429 Too Many Requests`** - you hit the provider rate limit; retry after a short backoff.
- **Unexpected `4xx` on writes** - double-check required fields; the agent confirms before write actions.

## Links

- [GitLab API documentation](https://docs.gitlab.com/ee/api/)
