GitLab API — merge_requests. 32 operations. Lead operation: List group merge requests. Self-contained Naftiko capability covering one Gitlab Ci business surface.
naftiko: 1.0.0-alpha2
info:
label: GitLab API — merge_requests
description: 'GitLab API — merge_requests. 32 operations. Lead operation: List group merge requests. Self-contained Naftiko
capability covering one Gitlab Ci business surface.'
tags:
- Gitlab Ci
- merge_requests
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
GITLAB_CI_API_KEY: GITLAB_CI_API_KEY
capability:
consumes:
- type: http
namespace: gitlab-ci-merge-requests
baseUri: https://gitlab.com
description: GitLab API — merge_requests business capability. Self-contained, no shared references.
resources:
- name: api-v4-groups-id-merge_requests
path: /api/v4/groups/{id}/merge_requests
operations:
- name: getapiv4groupsidmergerequests
method: GET
description: List group merge requests
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the group owned by the authenticated user.
required: true
- name: author_id
in: query
type: integer
description: Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`. Combine
with `scope=all` or `scope=assigned_to_me`.
- name: author_username
in: query
type: string
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: assignee_id
in: query
type: integer
description: Returns merge requests assigned to the given user `id`. `None` returns unassigned merge requests. `Any`
returns merge requests with an assignee.
- name: assignee_username
in: query
type: array
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: reviewer_username
in: query
type: string
description: Returns merge requests which have the user as a reviewer with the given `username`. `None` returns
merge requests with no reviewers. `Any` returns merge request
- name: labels
in: query
type: array
description: Returns merge requests matching a comma-separated list of labels. `None` lists all merge requests with
no labels. `Any` lists all merge requests with at least o
- name: milestone
in: query
type: string
description: Returns merge requests for a specific milestone. `None` returns merge requests with no milestone. `Any`
returns merge requests that have an assigned milestone.
- name: my_reaction_emoji
in: query
type: string
description: Returns merge requests reacted by the authenticated user by the given `emoji`. `None` returns issues
not given a reaction. `Any` returns issues given at least o
- name: reviewer_id
in: query
type: integer
description: Returns merge requests which have the user as a reviewer with the given user `id`. `None` returns merge
requests with no reviewers. `Any` returns merge requests
- name: state
in: query
type: string
description: Returns `all` merge requests or just those that are `opened`, `closed`, `locked`, or `merged`.
- name: order_by
in: query
type: string
description: Returns merge requests ordered by `created_at`, `label_priority`, `milestone_due`, `popularity`, `priority`,
`title`, `updated_at` or `merged_at` fields. Introd
- name: sort
in: query
type: string
description: Returns merge requests sorted in `asc` or `desc` order.
- name: with_labels_details
in: query
type: boolean
description: 'If `true`, response returns more details for each label in labels field: `:name`,`:color`, `:description`,
`:description_html`, `:text_color`'
- name: with_merge_status_recheck
in: query
type: boolean
description: If `true`, this projection requests (but does not guarantee) that the `merge_status` field be recalculated
asynchronously. Introduced in GitLab 13.0.
- name: created_after
in: query
type: string
description: Returns merge requests created on or after the given time. Expected in ISO 8601 format.
- name: created_before
in: query
type: string
description: Returns merge requests created on or before the given time. Expected in ISO 8601 format.
- name: updated_after
in: query
type: string
description: Returns merge requests updated on or after the given time. Expected in ISO 8601 format.
- name: updated_before
in: query
type: string
description: Returns merge requests updated on or before the given time. Expected in ISO 8601 format.
- name: view
in: query
type: string
description: If simple, returns the `iid`, URL, title, description, and basic state of merge request
- name: scope
in: query
type: string
description: 'Returns merge requests for the given scope: `created_by_me`, `assigned_to_me`, `reviews_for_me` or
`all`'
- name: source_branch
in: query
type: string
description: Returns merge requests with the given source branch
- name: source_project_id
in: query
type: integer
description: Returns merge requests with the given source project id
- name: target_branch
in: query
type: string
description: Returns merge requests with the given target branch
- name: search
in: query
type: string
description: Search merge requests against their `title` and `description`.
- name: in
in: query
type: string
description: Modify the scope of the search attribute. `title`, `description`, or a string joining them with comma.
- name: wip
in: query
type: string
description: Deprecated. Use `draft` instead. Filter merge requests against their `wip` status. `yes` to return
only draft merge requests, `no` to return non-draft merge req
- name: draft
in: query
type: boolean
description: Filter merge requests against their `draft` status. `true` to return only draft merge requests, `false`
to return non-draft merge requests.
- name: not[author_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`.
Combine with `scope=all` or `scope=assigned_to_me`'
- name: not[author_username]
in: query
type: string
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[assignee_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests assigned to the given user `id`. `None` returns unassigned merge
requests. `Any` returns merge requests with an assignee.'
- name: not[assignee_username]
in: query
type: array
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[reviewer_username]
in: query
type: string
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given `username`. `None`
returns merge requests with no reviewers. `Any` returns m'
- name: not[labels]
in: query
type: array
description: '`<Negated>` Returns merge requests matching a comma-separated list of labels. `None` lists all merge
requests with no labels. `Any` lists all merge requests wit'
- name: not[milestone]
in: query
type: string
description: '`<Negated>` Returns merge requests for a specific milestone. `None` returns merge requests with no
milestone. `Any` returns merge requests that have an assigned'
- name: not[my_reaction_emoji]
in: query
type: string
description: '`<Negated>` Returns merge requests reacted by the authenticated user by the given `emoji`. `None`
returns issues not given a reaction. `Any` returns issues give'
- name: not[reviewer_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given user `id`. `None`
returns merge requests with no reviewers. `Any` returns me'
- name: deployed_before
in: query
type: string
description: Returns merge requests deployed before the given date/time. Expected in ISO 8601 format.
- name: deployed_after
in: query
type: string
description: Returns merge requests deployed after the given date/time. Expected in ISO 8601 format
- name: environment
in: query
type: string
description: Returns merge requests deployed to the given environment
- name: approved
in: query
type: string
description: Filters merge requests by their `approved` status. `yes` returns only approved merge requests. `no`
returns only non-approved merge requests.
- name: merge_user_id
in: query
type: integer
description: Returns merge requests which have been merged by the user with the given user `id`. Mutually exclusive
with `merge_user_username`.
- name: merge_user_username
in: query
type: string
description: Returns merge requests which have been merged by the user with the given `username`. Mutually exclusive
with `merge_user_id`.
- name: approver_ids
in: query
type: string
description: Return merge requests which have specified the users with the given IDs as an individual approver
- name: approved_by_ids
in: query
type: string
description: Return merge requests which have been approved by the specified users with the given IDs
- name: approved_by_usernames
in: query
type: string
description: Return merge requests which have been approved by the specified users with the given
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: non_archived
in: query
type: boolean
description: Returns merge requests from non archived projects only.
- name: api-v4-merge_requests
path: /api/v4/merge_requests
operations:
- name: getapiv4mergerequests
method: GET
description: List merge requests
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: author_id
in: query
type: integer
description: Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`. Combine
with `scope=all` or `scope=assigned_to_me`.
- name: author_username
in: query
type: string
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: assignee_id
in: query
type: integer
description: Returns merge requests assigned to the given user `id`. `None` returns unassigned merge requests. `Any`
returns merge requests with an assignee.
- name: assignee_username
in: query
type: array
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: reviewer_username
in: query
type: string
description: Returns merge requests which have the user as a reviewer with the given `username`. `None` returns
merge requests with no reviewers. `Any` returns merge request
- name: labels
in: query
type: array
description: Returns merge requests matching a comma-separated list of labels. `None` lists all merge requests with
no labels. `Any` lists all merge requests with at least o
- name: milestone
in: query
type: string
description: Returns merge requests for a specific milestone. `None` returns merge requests with no milestone. `Any`
returns merge requests that have an assigned milestone.
- name: my_reaction_emoji
in: query
type: string
description: Returns merge requests reacted by the authenticated user by the given `emoji`. `None` returns issues
not given a reaction. `Any` returns issues given at least o
- name: reviewer_id
in: query
type: integer
description: Returns merge requests which have the user as a reviewer with the given user `id`. `None` returns merge
requests with no reviewers. `Any` returns merge requests
- name: state
in: query
type: string
description: Returns `all` merge requests or just those that are `opened`, `closed`, `locked`, or `merged`.
- name: order_by
in: query
type: string
description: Returns merge requests ordered by `created_at`, `label_priority`, `milestone_due`, `popularity`, `priority`,
`title`, `updated_at` or `merged_at` fields. Introd
- name: sort
in: query
type: string
description: Returns merge requests sorted in `asc` or `desc` order.
- name: with_labels_details
in: query
type: boolean
description: 'If `true`, response returns more details for each label in labels field: `:name`,`:color`, `:description`,
`:description_html`, `:text_color`'
- name: with_merge_status_recheck
in: query
type: boolean
description: If `true`, this projection requests (but does not guarantee) that the `merge_status` field be recalculated
asynchronously. Introduced in GitLab 13.0.
- name: created_after
in: query
type: string
description: Returns merge requests created on or after the given time. Expected in ISO 8601 format.
- name: created_before
in: query
type: string
description: Returns merge requests created on or before the given time. Expected in ISO 8601 format.
- name: updated_after
in: query
type: string
description: Returns merge requests updated on or after the given time. Expected in ISO 8601 format.
- name: updated_before
in: query
type: string
description: Returns merge requests updated on or before the given time. Expected in ISO 8601 format.
- name: view
in: query
type: string
description: If simple, returns the `iid`, URL, title, description, and basic state of merge request
- name: scope
in: query
type: string
description: 'Returns merge requests for the given scope: `created_by_me`, `assigned_to_me`, `reviews_for_me` or
`all`'
- name: source_branch
in: query
type: string
description: Returns merge requests with the given source branch
- name: source_project_id
in: query
type: integer
description: Returns merge requests with the given source project id
- name: target_branch
in: query
type: string
description: Returns merge requests with the given target branch
- name: search
in: query
type: string
description: Search merge requests against their `title` and `description`.
- name: in
in: query
type: string
description: Modify the scope of the search attribute. `title`, `description`, or a string joining them with comma.
- name: wip
in: query
type: string
description: Deprecated. Use `draft` instead. Filter merge requests against their `wip` status. `yes` to return
only draft merge requests, `no` to return non-draft merge req
- name: draft
in: query
type: boolean
description: Filter merge requests against their `draft` status. `true` to return only draft merge requests, `false`
to return non-draft merge requests.
- name: not[author_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`.
Combine with `scope=all` or `scope=assigned_to_me`'
- name: not[author_username]
in: query
type: string
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[assignee_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests assigned to the given user `id`. `None` returns unassigned merge
requests. `Any` returns merge requests with an assignee.'
- name: not[assignee_username]
in: query
type: array
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[reviewer_username]
in: query
type: string
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given `username`. `None`
returns merge requests with no reviewers. `Any` returns m'
- name: not[labels]
in: query
type: array
description: '`<Negated>` Returns merge requests matching a comma-separated list of labels. `None` lists all merge
requests with no labels. `Any` lists all merge requests wit'
- name: not[milestone]
in: query
type: string
description: '`<Negated>` Returns merge requests for a specific milestone. `None` returns merge requests with no
milestone. `Any` returns merge requests that have an assigned'
- name: not[my_reaction_emoji]
in: query
type: string
description: '`<Negated>` Returns merge requests reacted by the authenticated user by the given `emoji`. `None`
returns issues not given a reaction. `Any` returns issues give'
- name: not[reviewer_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given user `id`. `None`
returns merge requests with no reviewers. `Any` returns me'
- name: deployed_before
in: query
type: string
description: Returns merge requests deployed before the given date/time. Expected in ISO 8601 format.
- name: deployed_after
in: query
type: string
description: Returns merge requests deployed after the given date/time. Expected in ISO 8601 format
- name: environment
in: query
type: string
description: Returns merge requests deployed to the given environment
- name: approved
in: query
type: string
description: Filters merge requests by their `approved` status. `yes` returns only approved merge requests. `no`
returns only non-approved merge requests.
- name: merge_user_id
in: query
type: integer
description: Returns merge requests which have been merged by the user with the given user `id`. Mutually exclusive
with `merge_user_username`.
- name: merge_user_username
in: query
type: string
description: Returns merge requests which have been merged by the user with the given `username`. Mutually exclusive
with `merge_user_id`.
- name: approver_ids
in: query
type: string
description: Return merge requests which have specified the users with the given IDs as an individual approver
- name: approved_by_ids
in: query
type: string
description: Return merge requests which have been approved by the specified users with the given IDs
- name: approved_by_usernames
in: query
type: string
description: Return merge requests which have been approved by the specified users with the given
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: non_archived
in: query
type: boolean
description: Returns merge requests from non archived projects only.
- name: api-v4-projects-id-create_ci_config
path: /api/v4/projects/{id}/create_ci_config
operations:
- name: postapiv4projectsidcreateciconfig
method: POST
description: Create merge request for missing ci config in project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
required: true
- name: api-v4-projects-id-merge_requests
path: /api/v4/projects/{id}/merge_requests
operations:
- name: getapiv4projectsidmergerequests
method: GET
description: List project merge requests
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project.
required: true
- name: author_id
in: query
type: integer
description: Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`. Combine
with `scope=all` or `scope=assigned_to_me`.
- name: author_username
in: query
type: string
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: assignee_id
in: query
type: integer
description: Returns merge requests assigned to the given user `id`. `None` returns unassigned merge requests. `Any`
returns merge requests with an assignee.
- name: assignee_username
in: query
type: array
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: reviewer_username
in: query
type: string
description: Returns merge requests which have the user as a reviewer with the given `username`. `None` returns
merge requests with no reviewers. `Any` returns merge request
- name: labels
in: query
type: array
description: Returns merge requests matching a comma-separated list of labels. `None` lists all merge requests with
no labels. `Any` lists all merge requests with at least o
- name: milestone
in: query
type: string
description: Returns merge requests for a specific milestone. `None` returns merge requests with no milestone. `Any`
returns merge requests that have an assigned milestone.
- name: my_reaction_emoji
in: query
type: string
description: Returns merge requests reacted by the authenticated user by the given `emoji`. `None` returns issues
not given a reaction. `Any` returns issues given at least o
- name: reviewer_id
in: query
type: integer
description: Returns merge requests which have the user as a reviewer with the given user `id`. `None` returns merge
requests with no reviewers. `Any` returns merge requests
- name: state
in: query
type: string
description: Returns `all` merge requests or just those that are `opened`, `closed`, `locked`, or `merged`.
- name: order_by
in: query
type: string
description: Returns merge requests ordered by `created_at`, `label_priority`, `milestone_due`, `popularity`, `priority`,
`title`, `updated_at` or `merged_at` fields. Introd
- name: sort
in: query
type: string
description: Returns merge requests sorted in `asc` or `desc` order.
- name: with_labels_details
in: query
type: boolean
description: 'If `true`, response returns more details for each label in labels field: `:name`,`:color`, `:description`,
`:description_html`, `:text_color`'
- name: with_merge_status_recheck
in: query
type: boolean
description: If `true`, this projection requests (but does not guarantee) that the `merge_status` field be recalculated
asynchronously. Introduced in GitLab 13.0.
- name: created_after
in: query
type: string
description: Returns merge requests created on or after the given time. Expected in ISO 8601 format.
- name: created_before
in: query
type: string
description: Returns merge requests created on or before the given time. Expected in ISO 8601 format.
- name: updated_after
in: query
type: string
description: Returns merge requests updated on or after the given time. Expected in ISO 8601 format.
- name: updated_before
in: query
type: string
description: Returns merge requests updated on or before the given time. Expected in ISO 8601 format.
- name: view
in: query
type: string
description: If simple, returns the `iid`, URL, title, description, and basic state of merge request
- name: scope
in: query
type: string
description: 'Returns merge requests for the given scope: `created_by_me`, `assigned_to_me`, `reviews_for_me` or
`all`'
- name: source_branch
in: query
type: string
description: Returns merge requests with the given source branch
- name: source_project_id
in: query
type: integer
description: Returns merge requests with the given source project id
- name: target_branch
in: query
type: string
description: Returns merge requests with the given target branch
- name: search
in: query
type: string
description: Search merge requests against their `title` and `description`.
- name: in
in: query
type: string
description: Modify the scope of the search attribute. `title`, `description`, or a string joining them with comma.
- name: wip
in: query
type: string
description: Deprecated. Use `draft` instead. Filter merge requests against their `wip` status. `yes` to return
only draft merge requests, `no` to return non-draft merge req
- name: draft
in: query
type: boolean
description: Filter merge requests against their `draft` status. `true` to return only draft merge requests, `false`
to return non-draft merge requests.
- name: not[author_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`.
Combine with `scope=all` or `scope=assigned_to_me`'
- name: not[author_username]
in: query
type: string
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[assignee_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests assigned to the given user `id`. `None` returns unassigned merge
requests. `Any` returns merge requests with an assignee.'
- name: not[assignee_username]
in: query
type: array
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[reviewer_username]
in: query
type: string
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given `username`. `None`
returns merge requests with no reviewers. `Any` returns m'
- name: not[labels]
in: query
type: array
description: '`<Negated>` Returns merge requests matching a comma-separated list of labels. `None` lists all merge
requests with no labels. `Any` lists all merge requests wit'
- name: not[milestone]
in: query
type: string
description: '`<Negated>` Returns merge requests for a specific milestone. `None` returns merge requests with no
milestone. `Any` returns merge requests that have an assigned'
- name: not[my_reaction_emoji]
in: query
type: string
description: '`<Negated>` Returns merge requests reacted by the authenticated user by the given `emoji`. `None`
returns issues not given a reaction. `Any` returns issues give'
- name: not[reviewer_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given user `id`. `None`
returns merge requests with no reviewers. `Any` returns me'
- name: deployed_before
in: query
type: string
description: Returns merge requests deployed before the given date/time. Expected in ISO 8601 format.
- name: deployed_after
in: query
type: string
description: Returns merge requests deployed after the given date/time. Expected in ISO 8601 format
- name: environment
in: query
type: string
description: Returns merge requests deployed to the given environment
- name: approved
in: query
type: string
description: Filters merge requests by their `approved` status. `yes` returns only approved merge requests. `no`
returns only non-approved merge requests.
- name: merge_user_id
in: query
type: integer
description: Returns merge requests which have been merged by the user with the given user `id`. Mutually exclusive
with `merge_user_username`.
- name: merge_user_username
in: query
type: string
description: Returns merge requests which have been merged by the user with the given `username`. Mutually exclusive
with `merge_user_id`.
- name: approver_ids
in: query
type: string
description: Return merge requests which have specified the users with the given IDs as an individual approver
- name: approved_by_ids
in: query
type: string
# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gitlab-ci/refs/heads/main/capabilities/gitlab-ci-merge-requests.yaml