マージリクエストAPI

  • reference は GitLab 12.7 で非推奨となりました。
  • draft はGitLab 14.0でwork_in_progress の代わりとして導入されました。
  • merged_by はGitLab 14.7で非推奨となりました。
  • merge_user はGitLab 14.7でmerged_by の最終的な置き換えとして導入されました。
  • merge_status はGitLab 15.6で detailed_merge_status
  • with_merge_status_recheck GitLab 15.11でrestrict_merge_status_recheck というフラグが 変更され、権限が不十分なユーザーからのリクエストは無視されるようになりました。デフォルトでは無効になっています。
  • approvals_before_merge はGitLab 16.0で非推奨となりました。
  • prepared_at は GitLab 16.1 で導入されました。

非公開情報へのAPI呼び出しには認証が必要です。

API v5での削除

approvals_before_merge 属性は非推奨となり、API v5 ではマージリクエスト承認者 API のために削除される予定です。

マージリクエストの一覧

認証済みユーザーがアクセスできるすべてのマージリクエストを取得します。デフォルトでは、現在のユーザーによって作成されたマージリクエストのみを返します。すべてのマージリクエストを取得するには、パラメータscope=all を使用します。

state パラメータを使用すると、指定された状態のマージリクエスト (opened,closed,locked,merged) またはそれらすべて (all) のみを取得できます。locked で検索する場合、短命で過渡的な状態であるため、ほとんどの場合結果が返されないことに注意してください。pagination パラメータpageper_page を使って、マージリクエストのリストを制限することができます。

GET /merge_requests
GET /merge_requests?state=opened
GET /merge_requests?state=all
GET /merge_requests?milestone=release
GET /merge_requests?labels=bug,reproduced
GET /merge_requests?author_id=5
GET /merge_requests?author_username=gitlab-bot
GET /merge_requests?my_reaction_emoji=star
GET /merge_requests?scope=assigned_to_me
GET /merge_requests?search=foo&in=title

サポートされる属性:

属性種類必須説明
approved_by_ids 整数配列。なし指定されたid を持つすべてのユーザーによって承認されたマージリクエストを返します。None は承認者のいないマージリクエストを返します。Any は承認者のいるマージリクエストを返します。
approver_ids 整数配列。なし id None は承認者なしのマージリクエストを返します。Any は承認者ありのマージリクエストを返します。
approved文字列です。なし approved ステータスによってマージリクエストをフィルタします。yes は承認者のみのマージリクエストを返します。no は非承認者のみのマージリクエストを返します。GitLab 15.11 で導入されました。機能フラグmr_approved_filter が有効な場合のみ利用可能です。
assignee_id整数。なし指定されたユーザーid に割り当てられているマージリクエストを返します。None は割り当てられていないマージリクエストを返します。Any は担当者がいるマージリクエストを返します。
author_id整数。なし指定されたユーザーid によって作成されたマージリクエストを返します。author_username と排他的です。scope=all またはscope=assigned_to_me と結合します。
author_username文字列です。なし与えられたusername によって作成されたマージリクエストを返します。author_id と排他的です。
created_afterdatetimeなし指定された時刻以降に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
created_beforedatetimeなし指定された時刻以前に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
deployed_afterdatetimeなし指定された日時以降にデプロイされたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
deployed_beforedatetimeなし指定した日時より前にデプロイされたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
environment文字列です。なし指定された環境にデプロイされたマージリクエストを返します。
in文字列です。なし search 属性のスコープを変更します。title,description, またはカンマで連結した文字列。デフォルトはtitle,description
labels文字列です。なしコンマで区切られたラベルのリストにマッチするマージリクエストを返します。None はラベルのないすべてのマージリクエストを一覧表示します。Any は少なくとも 1 つのラベルを持つすべてのマージリクエストを一覧表示します。定義済みの名前は大文字小文字を区別しません。
milestone文字列です。なし None マイルストーンのないマージリクエストを返します。Any マイルストーンが割り当てられているマージリクエストを返します。
my_reaction_emoji文字列です。なし emoji None は、リアクションが与えられていないイシューを返します。Any は、少なくとも1つのリアクションが与えられたイシューを返します。
notハッシュなし指定したパラメータにマッチしないマージリクエストを返します。受けつけます:labels milestone,author_id,author_username,assignee_id,assignee_username,reviewer_id,reviewer_username,my_reaction_emoji.
order_by文字列です。なし created_at,title,updated_at フィールドの順にリクエストを返します。デフォルトはcreated_at 。 GitLab 14.8 で導入されました
reviewer_id整数。なし id Noneレビュアーがいないマージリクエストを返します。Any は任意のレビュアーがいるマージリクエストを返します。reviewer_username と排他的です。
reviewer_username文字列です。なし username Noneレビュアーがいないマージリクエストを返します。Any は任意のレビュアーがいるマージリクエストを返します。reviewer_id と排他的です。 GitLab 13.8 で導入されました
scope文字列です。なし与えられたスコープのマージリクエストを返します:created_by_me assigned_to_me あるいはall 。デフォルトはcreated_by_me です。
search文字列です。なしマージリクエストをtitle およびdescription に対して検索します。
sort文字列です。なしリクエストをasc またはdesc 順番に descソートして返します。desc デフォルトは . desc
source_branch文字列です。なし指定したソースブランチとのマージリクエストを返します。
state文字列です。なしすべてのマージリクエスト、あるいはopened,closed,locked,merged のものだけを返します。
target_branch文字列です。なし指定したターゲットブランチとのマージリクエストを返します。
updated_afterdatetimeなし指定された時刻以降に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
updated_beforedatetimeなし指定された時刻以前に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
view文字列です。なし simple の場合、iid 、URL、タイトル、説明、マージリクエストの基本状態を返します。
with_labels_detailsbooleanなし true の場合、labels フィールドの各ラベルの詳細を返します::name :color,:description,:description_html,:text_color.デフォルトはfalse です。
with_merge_status_recheckbooleanなし true の場合、このプロジェクトはmerge_status フィールドの非同期再計算を要求します(保証はしません)。デフォルトはfalse 。 GitLab 13.0で導入されました。GitLab 15.11以降では、restrict_merge_status_recheck 機能フラグを有効にすると、少なくとも開発者ロールを持っていないユーザーが要求した場合、この属性は無視されます。
wip文字列です。なし wip ステータスに対してマージリクエストをフィルタします。yesドラフトマージリクエストのみを返し、noドラフト以外のマージリクエストを返します。
[
  {
    "id": 1,
    "iid": 1,
    "project_id": 3,
    "title": "test1",
    "description": "fixed login page css paddings",
    "state": "merged",
    "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
      "id": 87854,
      "name": "Douwe Maan",
      "username": "DouweM",
      "state": "active",
      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
      "web_url": "https://gitlab.com/DouweM"
    },
    "merge_user": {
      "id": 87854,
      "name": "Douwe Maan",
      "username": "DouweM",
      "state": "active",
      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
      "web_url": "https://gitlab.com/DouweM"
    },
    "merged_at": "2018-09-07T11:16:17.520Z",
    "prepared_at": "2018-09-04T11:16:17.520Z",
    "closed_by": null,
    "closed_at": null,
    "created_at": "2017-04-29T08:46:00Z",
    "updated_at": "2017-04-29T08:46:00Z",
    "target_branch": "master",
    "source_branch": "test1",
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignee": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignees": [{
      "name": "Miss Monserrate Beier",
      "username": "axel.block",
      "id": 12,
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/axel.block"
    }],
    "reviewers": [{
      "id": 2,
      "name": "Sam Bauch",
      "username": "kenyatta_oconnell",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
      "web_url": "http://gitlab.example.com//kenyatta_oconnell"
    }],
    "source_project_id": 2,
    "target_project_id": 3,
    "labels": [
      "Community contribution",
      "Manage"
    ],
    "draft": false,
    "work_in_progress": false,
    "milestone": {
      "id": 5,
      "iid": 1,
      "project_id": 3,
      "title": "v2.0",
      "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
      "state": "closed",
      "created_at": "2015-02-02T19:49:26.013Z",
      "updated_at": "2015-02-02T19:49:26.013Z",
      "due_date": "2018-09-22",
      "start_date": "2018-08-08",
      "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
    },
    "merge_when_pipeline_succeeds": true,
    "merge_status": "can_be_merged",
    "detailed_merge_status": "not_open",
    "sha": "8888888888888888888888888888888888888888",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "user_notes_count": 1,
    "discussion_locked": null,
    "should_remove_source_branch": true,
    "force_remove_source_branch": false,
    "allow_collaboration": false,
    "allow_maintainer_to_push": false,
    "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
    "references": {
      "short": "!1",
      "relative": "my-group/my-project!1",
      "full": "my-group/my-project!1"
    },
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    },
    "squash": false,
    "task_completion_status":{
      "count":0,
      "completed_count":0
    }
  }
]

マージリクエストリスト レスポンスノート

  • GitLab 13.0 で導入された、リストマージリクエストはmerge_status (has_conflicts にも影響します) を積極的に更新しないかもしれません。これは高価なオペレーションになる可能性があるからです。このエンドポイントからこれらのフィールドの値が必要な場合は、クエリでwith_merge_status_recheck パラメータをtrue に設定してください。
  • マージ・リクエスト・オブジェクト・フィールドに関する注意事項については、Single merge request response notes を参照してください。

プロジェクトマージリクエスト一覧

このプロジェクトのすべてのマージリクエストを取得します。state パラメータを使うと、指定した状態 (opened,closed,locked,merged) のマージリクエストだけを取得したり、すべてのマージリクエスト (all) を取得したりすることができます。pagination パラメータpageper_page を使って、マージリクエストの一覧を制限することができます。

GET /projects/:id/merge_requests
GET /projects/:id/merge_requests?state=opened
GET /projects/:id/merge_requests?state=all
GET /projects/:id/merge_requests?iids[]=42&iids[]=43
GET /projects/:id/merge_requests?milestone=release
GET /projects/:id/merge_requests?labels=bug,reproduced
GET /projects/:id/merge_requests?my_reaction_emoji=star

project_id マージリクエストが存在するプロジェクトの ID を表します。 project_id常にtarget_project_id と等しくなります。

同じプロジェクトからのマージリクエストの場合、source_project_idtarget_project_idproject_id は同じです。フォークからのマージリクエストの場合、target_project_idproject_id は同じで、source_project_id はフォークプロジェクトの ID です。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
approved_by_ids 整数配列。なし id None は承認者のいないマージリクエストを返します。Any は承認者のいるマージリクエストを返します。
approver_ids 整数配列。なし id None は承認者なしのマージリクエストを返します。Any は承認者ありのマージリクエストを返します。
approved文字列です。なし approved ステータスによってマージリクエストをフィルタします。yes は承認者のみのマージリクエストを返します。no は非承認者のみのマージリクエストを返します。GitLab 15.11 で導入されました。機能フラグmr_approved_filter が有効な場合のみ利用可能です。
assignee_id整数。なし指定されたユーザーid に割り当てられているマージリクエストを返します。None は割り当てられていないマージリクエストを返します。Any は担当者がいるマージリクエストを返します。
author_id整数。なし指定されたユーザーid によって作成されたマージリクエストを返します。author_username と排他的です。
author_username文字列です。なし与えられたusername によって作成されたマージリクエストを返します。author_id と排他的です。
created_afterdatetimeなし指定された時刻以降に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
created_beforedatetimeなし指定された時刻以前に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
environment文字列です。なし指定された環境にデプロイされたマージリクエストを返します。
iids[]整数配列。なし与えられたiid を持つリクエストを返します。
labels文字列です。なしコンマで区切られたラベルのリストにマッチするマージリクエストを返します。None はラベルのないすべてのマージリクエストを一覧表示します。Any は少なくとも 1 つのラベルを持つすべてのマージリクエストを一覧表示します。定義済みの名前は大文字小文字を区別しません。
milestone文字列です。なし None マイルストーンのないマージリクエストを返します。Any マイルストーンが割り当てられているマージリクエストを返します。
my_reaction_emoji文字列です。なし emoji None は、リアクションが与えられていないイシューを返します。Any は、少なくとも1つのリアクションが与えられたイシューを返します。
notハッシュなし指定したパラメータにマッチしないマージリクエストを返します。受けつけます:labels milestone,author_id,author_username,assignee_id,assignee_username,reviewer_id,reviewer_username,my_reaction_emoji.
order_by文字列です。なし created_at,title,updated_at フィールドの順にリクエストを返します。デフォルトはcreated_at です。 GitLab 14.8 で導入されました
reviewer_id整数。なし id Noneレビュアーがいないマージリクエストを返します。Any は任意のレビュアーがいるマージリクエストを返します。reviewer_username と排他的です。
reviewer_username文字列です。なし username Noneレビュアーがいないマージリクエストを返します。Any は任意のレビュアーがいるマージリクエストを返します。reviewer_id と排他的です。 GitLab 13.8 で導入されました
scope文字列です。なし与えられたスコープのマージリクエストを返します:created_by_me assigned_to_me またはall
search文字列です。なしマージリクエストをtitle およびdescription に対して検索します。
sort文字列です。なしリクエストをasc またはdesc 順番に descソートして返します。desc デフォルトは . desc
source_branch文字列です。なし指定したソースブランチとのマージリクエストを返します。
state文字列です。なしすべてのマージリクエスト、あるいはopened,closed,locked,merged のものだけを返します。
target_branch文字列です。なし指定したターゲットブランチとのマージリクエストを返します。
updated_afterdatetimeなし指定された時刻以降に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
updated_beforedatetimeなし指定された時刻以前に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
view文字列です。なし simple の場合、iid 、URL、タイトル、説明、マージリクエストの基本状態を返します。
wip文字列です。なし wip ステータスに対してマージリクエストをフィルタします。yesドラフトマージリクエストのみを返し、noドラフト以外のマージリクエストを返します。
with_labels_detailsbooleanなし true の場合、labels フィールドの各ラベルの詳細を返します::name :color,:description,:description_html,:text_color.デフォルトはfalse です。
with_merge_status_recheckbooleanなし true の場合、このプロジェクトはmerge_status フィールドの非同期再計算を要求します(保証はしません)。デフォルトはfalse 。 GitLab 13.0で導入されました。GitLab 15.11以降では、restrict_merge_status_recheck 機能フラグを有効にすると、少なくとも開発者ロールを持っていないユーザーが要求した場合、この属性は無視されます。
[
  {
    "id": 1,
    "iid": 1,
    "project_id": 3,
    "title": "test1",
    "description": "fixed login page css paddings",
    "state": "merged",
    "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
      "id": 87854,
      "name": "Douwe Maan",
      "username": "DouweM",
      "state": "active",
      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
      "web_url": "https://gitlab.com/DouweM"
    },
    "merge_user": {
      "id": 87854,
      "name": "Douwe Maan",
      "username": "DouweM",
      "state": "active",
      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
      "web_url": "https://gitlab.com/DouweM"
    },
    "merged_at": "2018-09-07T11:16:17.520Z",
    "prepared_at": "2018-09-04T11:16:17.520Z",
    "closed_by": null,
    "closed_at": null,
    "created_at": "2017-04-29T08:46:00Z",
    "updated_at": "2017-04-29T08:46:00Z",
    "target_branch": "master",
    "source_branch": "test1",
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignee": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignees": [{
      "name": "Miss Monserrate Beier",
      "username": "axel.block",
      "id": 12,
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/axel.block"
    }],
    "reviewers": [{
      "id": 2,
      "name": "Sam Bauch",
      "username": "kenyatta_oconnell",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
      "web_url": "http://gitlab.example.com//kenyatta_oconnell"
    }],
    "source_project_id": 2,
    "target_project_id": 3,
    "labels": [
      "Community contribution",
      "Manage"
    ],
    "draft": false,
    "work_in_progress": false,
    "milestone": {
      "id": 5,
      "iid": 1,
      "project_id": 3,
      "title": "v2.0",
      "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
      "state": "closed",
      "created_at": "2015-02-02T19:49:26.013Z",
      "updated_at": "2015-02-02T19:49:26.013Z",
      "due_date": "2018-09-22",
      "start_date": "2018-08-08",
      "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
    },
    "merge_when_pipeline_succeeds": true,
    "merge_status": "can_be_merged",
    "detailed_merge_status": "not_open",
    "sha": "8888888888888888888888888888888888888888",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "user_notes_count": 1,
    "discussion_locked": null,
    "should_remove_source_branch": true,
    "force_remove_source_branch": false,
    "allow_collaboration": false,
    "allow_maintainer_to_push": false,
    "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
    "references": {
      "short": "!1",
      "relative": "!1",
      "full": "my-group/my-project!1"
    },
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    },
    "squash": false,
    "task_completion_status":{
      "count":0,
      "completed_count":0
    },
    "has_conflicts": false,
    "blocking_discussions_resolved": true
  }
]

レスポンスデータに関する重要な注意事項については、マージリクエストリストのレスポンスに関する注意事項をお読みください。

グループマージリクエスト一覧

このグループとそのサブグループのすべてのマージリクエストを取得します。state パラメータを使用して、指定された状態のマージリクエスト (opened,closed,locked, またはmerged) またはそれらすべて (all) のみを取得できます。pagination パラメータpageper_page を使用して、マージリクエストのリストを制限できます。

GET /groups/:id/merge_requests
GET /groups/:id/merge_requests?state=opened
GET /groups/:id/merge_requests?state=all
GET /groups/:id/merge_requests?milestone=release
GET /groups/:id/merge_requests?labels=bug,reproduced
GET /groups/:id/merge_requests?my_reaction_emoji=star

group_id はマージリクエストが存在するプロジェクトを含むグループの ID を表します。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証されたユーザーが所有するグループのID またはURL エンコードされたパス
approved_by_ids 整数配列。なし id None は承認者のいないマージリクエストを返します。Any は承認者のいるマージリクエストを返します。
approved_by_usernames 文字列配列なし username None は承認者のいないマージリクエストを返します。Any は承認者のいるマージリクエストを返します。
approver_ids 整数配列。なし id None は承認者を持たないマージリクエストを返します。Any は承認者を持つマージリクエストを返します。
approved文字列です。なし approved ステータスによってマージリクエストをフィルタします。yes は承認者のみのマージリクエストを返します。no は非承認者のみのマージリクエストを返します。GitLab 15.11 で導入されました。機能フラグmr_approved_filter が有効な場合のみ利用可能です。
assignee_id整数。なし指定されたユーザーid に割り当てられているマージリクエストを返します。None は割り当てられていないマージリクエストを返します。Any は担当者がいるマージリクエストを返します。
author_id整数。なし指定されたユーザーid によって作成されたマージリクエストを返します。author_username と排他的です。
author_username文字列です。なし与えられたusername によって作成されたマージリクエストを返します。author_id と排他的です。
created_afterdatetimeなし指定された時刻以降に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
created_beforedatetimeなし指定された時刻以前に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
labels文字列です。なしコンマで区切られたラベルのリストにマッチするマージリクエストを返します。None はラベルのないすべてのマージリクエストを一覧表示します。Any は少なくとも 1 つのラベルを持つすべてのマージリクエストを一覧表示します。定義済みの名前は大文字小文字を区別しません。
milestone文字列です。なし None マイルストーンのないマージリクエストを返します。Any マイルストーンが割り当てられているマージリクエストを返します。
my_reaction_emoji文字列です。なし emoji None は、リアクションが与えられていないイシューを返します。Any は、少なくとも1つのリアクションが与えられたイシューを返します。
non_archivedbooleanなしアーカイブされていないプロジェクトからのマージリクエストのみを返します。デフォルトはtrue です。
notハッシュなし指定したパラメータにマッチしないマージリクエストを返します。受けつけます:labels milestone,author_id,author_username,assignee_id,assignee_username,reviewer_id,reviewer_username,my_reaction_emoji.
order_by文字列です。なし created_at,title またはupdated_at フィールドで並べ替えられたマージリクエストを返します。デフォルトはcreated_at です。 GitLab 14.8 で導入されました
reviewer_id整数。なし id Noneレビュアーがいないマージリクエストを返します。Any は任意のレビュアーがいるマージリクエストを返します。reviewer_username と排他的です。
reviewer_username文字列です。なし username Noneレビュアーがいないマージリクエストを返します。Any は任意のレビュアーがいるマージリクエストを返します。reviewer_id と排他的です。 GitLab 13.8 で導入されました
scope文字列です。なし与えられたスコープのマージリクエストを返します:created_by_me assigned_to_me またはall
search文字列です。なしマージリクエストをtitle およびdescription に対して検索します。
source_branch文字列です。なし指定したソースブランチとのマージリクエストを返します。
sort文字列です。なしマージリクエストをasc またはdesc 順序で descソートして返します。desc デフォルトは . desc
state文字列です。なしすべてのマージリクエスト、あるいはopened,closed,locked,merged のものだけを返します。
target_branch文字列です。なし指定したターゲットブランチとのマージリクエストを返します。
updated_afterdatetimeなし指定された時刻以降に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
updated_beforedatetimeなし指定された時刻以前に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z) で返されます。
view文字列です。なし simple の場合、iid 、URL、タイトル、説明、マージリクエストの基本状態を返します。
with_labels_detailsbooleanなし true の場合、labels フィールドの各ラベルの詳細を返します::name :color,:description,:description_html,:text_color.デフォルトはfalse です。
with_merge_status_recheckbooleanなし true の場合、このプロジェクトはmerge_status フィールドの非同期再計算を要求します(保証はしません)。デフォルトはfalse 。 GitLab 13.0で導入されました。GitLab 15.11以降では、restrict_merge_status_recheck 機能フラグを有効にすると、少なくとも開発者ロールを持っていないユーザーが要求した場合、この属性は無視されます。
[
  {
    "id": 1,
    "iid": 1,
    "project_id": 3,
    "title": "test1",
    "description": "fixed login page css paddings",
    "state": "merged",
    "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
      "id": 87854,
      "name": "Douwe Maan",
      "username": "DouweM",
      "state": "active",
      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
      "web_url": "https://gitlab.com/DouweM"
    },
    "merge_user": {
      "id": 87854,
      "name": "Douwe Maan",
      "username": "DouweM",
      "state": "active",
      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
      "web_url": "https://gitlab.com/DouweM"
    },
    "merged_at": "2018-09-07T11:16:17.520Z",
    "prepared_at": "2018-09-04T11:16:17.520Z",
    "closed_by": null,
    "closed_at": null,
    "created_at": "2017-04-29T08:46:00Z",
    "updated_at": "2017-04-29T08:46:00Z",
    "target_branch": "master",
    "source_branch": "test1",
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignee": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignees": [{
      "name": "Miss Monserrate Beier",
      "username": "axel.block",
      "id": 12,
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/axel.block"
    }],
    "reviewers": [{
      "id": 2,
      "name": "Sam Bauch",
      "username": "kenyatta_oconnell",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
      "web_url": "http://gitlab.example.com//kenyatta_oconnell"
    }],
    "source_project_id": 2,
    "target_project_id": 3,
    "labels": [
      "Community contribution",
      "Manage"
    ],
    "draft": false,
    "work_in_progress": false,
    "milestone": {
      "id": 5,
      "iid": 1,
      "project_id": 3,
      "title": "v2.0",
      "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
      "state": "closed",
      "created_at": "2015-02-02T19:49:26.013Z",
      "updated_at": "2015-02-02T19:49:26.013Z",
      "due_date": "2018-10-22",
      "start_date": "2018-09-08",
      "web_url": "gitlab.example.com/my-group/my-project/milestones/1"
    },
    "merge_when_pipeline_succeeds": true,
    "merge_status": "can_be_merged",
    "detailed_merge_status": "not_open",
    "sha": "8888888888888888888888888888888888888888",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "user_notes_count": 1,
    "discussion_locked": null,
    "should_remove_source_branch": true,
    "force_remove_source_branch": false,
    "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
    "references": {
      "short": "!1",
      "relative": "my-project!1",
      "full": "my-group/my-project!1"
    },
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    },
    "squash": false,
    "task_completion_status":{
      "count":0,
      "completed_count":0
    },
    "has_conflicts": false,
    "blocking_discussions_resolved": true
  }
]

レスポンスデータに関する重要な注意事項については、マージリクエストリストのレスポンスに関する注意事項をお読みください。

単一の MR を取得

単一のマージリクエストに関する情報を表示します。

注意: レスポンスのchanges_count の値は整数ではなく文字列です。マージリクエストの変更数が多すぎて表示や保存ができない場合、1,000 が上限となります。その場合、API は変更数の文字列"1000+" を返します。

GET /projects/:id/merge_requests/:merge_request_iid

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
include_diverged_commits_countbooleanなし true の場合、レスポンスにはターゲットブランチの後ろのコミットも含まれます。
include_rebase_in_progressbooleanなし true の場合、リベースオペレーションが進行中であるかどうか。
render_htmlbooleanなし true の場合、レスポンスにはタイトルと説明文のレンダリングされた HTML が含まれます。

レスポンス

属性種類説明
approvals_before_merge整数。 このマージリクエストがマージできるまでに必要な承認者の数。承認者ルールを設定するには、マージリクエスト承認者 APIを参照してください。GitLab 16.0 で非推奨
assigneeオブジェクトを返します。マージリクエストの最初の担当者。
assigneesアレイマージリクエストの担当者。
authorオブジェクトを返します。このマージリクエストを作成したユーザー。
blocking_discussions_resolvedbooleanマージリクエストをマージする前にすべてのディスカッションが必要な場合にのみ、すべてのディスカッションを解決するかどうかを示します。
changes_count文字列です。マージリクエストで行われた変更の数。マージリクエストが作成されたときは空で、非同期に入力されます。新しいマージリクエストについては Empty API Fields を参照ください。
closed_atdatetimeマージリクエストがクローズされたときのタイムスタンプ。
closed_byオブジェクトを返します。このマージリクエストをクローズしたユーザー。
created_atdatetimeマージリクエストが作成されたときのタイムスタンプ。
description文字列です。マージリクエストの説明。キャッシュのためにHTMLとしてレンダリングされたMarkdownを含みます。
detailed_merge_status文字列です。マージリクエストの詳細なマージステータス。潜在的な値のリストについてはマージステータスをお読みください。
diff_refsオブジェクトを返します。このマージリクエストのベース SHA、ヘッド SHA、開始 SHA の参照。マージリクエストの最新の差分バージョンに対応します。マージリクエストが作成されたときは空で、非同期に入力されます。新しいマージリクエスト用の空の API フィールド を参照ください。
discussion_lockedbooleanマージリクエストのコメントがメンバーのみにロックされるかどうかを示します。
downvotes整数。マージリクエストに対するダウンボートの数。
draftbooleanマージリクエストがドラフトであるかどうかを示します。
first_contributionbooleanマージリクエストが作成者の最初の貢献であるかどうかを示します。
first_deployed_to_production_atdatetime最初のデプロイが終了したときのタイムスタンプ。
force_remove_source_branchbooleanプロジェクトの設定で、マージ後にソースブランチを削除するかどうかを指定します。
has_conflictsbooleanマージリクエストに競合があり、マージできないかどうかを示します。merge_status プロパティに依存します。merge_statuscannot_be_merged でない限り、false を返します。
head_pipelineオブジェクトを返します。マージリクエストのブランチ HEAD で実行されているパイプライン。pipeline よりも完全な情報が含まれているので、代わりに使うべきです。
id整数。マージリクエストの ID。
iid整数。マージリクエストの内部 ID。
labelsアレイマージリクエストのラベル。
latest_build_finished_atdatetimeマージリクエストの最新ビルドが終了したときのタイムスタンプ。
latest_build_started_atdatetimeマージリクエストの最新ビルドが開始されたタイムスタンプ。
merge_commit_sha文字列です。マージリクエストコミットの SHA。マージされるまではnull を返します。
merge_error文字列です。マージに失敗した場合に表示されるエラーメッセージ。マージの可否を確認するには、代わりにdetailed_merge_status を使用してください。
merge_userオブジェクトを返します。このマージリクエストをマージしたユーザー、自動マージに設定したユーザー、またはnull 。 GitLab 14.7 で導入されました
merge_status文字列です。マージリクエストのステータス。unchecked,checking,can_be_merged,cannot_be_merged, またはcannot_be_merged_recheck のいずれかです。has_conflicts プロパティに影響します。レスポンスデータに関する重要なインポートについては、Single merge request response notesを参照してください。GitLab 15.6では非推奨。代わりにdetailed_merge_status を使用してください。
merge_when_pipeline_succeedsbooleanパイプラインが成功したときにマージされるように設定されているかどうかを示します。
merged_atdatetimeマージリクエストがマージされたときのタイムスタンプ。
merged_byオブジェクトを返します。このマージリクエストをマージしたユーザー、または自動マージに設定したユーザー。GitLab 14.7 で非推奨API バージョン 5 で削除予定。代わりにmerge_user を使用してください。
milestoneオブジェクトを返します。マージリクエストのマイルストーン。
pipelineオブジェクトを返します。マージリクエストのブランチ HEAD で実行されているパイプライン。より多くの情報が含まれているので、代わりにhead_pipeline を使うことを検討してください。
prepared_atdatetimeマージリクエストが準備された時のタイムスタンプ。このフィールドはすべての準備ステップが完了した後に一度だけ入力され、さらに変更が追加されても更新されません。
project_id整数。マージリクエストプロジェクトの ID。
reference文字列です。マージリクエストの内部参照。デフォルトでは短縮形式で返されます。GitLab 12.7 で非推奨API バージョン 5 で削除予定。代わりにreferences を使用してください。
referencesオブジェクトを返します。マージリクエストの内部参照。shortrelativefull の参照を含みます。references.relative はマージリクエストのグループまたはプロジェクトからの相対参照です。マージリクエストのプロジェクトから取得する場合、relativeshort の形式は同じです。グループまたはプロジェクトを越えて要求された場合、relativefull の書式は同じです。
reviewersアレイマージリクエストのレビュアー。
sha文字列です。マージリクエストの差分ヘッドの SHA。
should_remove_source_branchbooleanマージリクエストのソースブランチをマージ後に削除するかどうかを示します。
source_branch文字列です。マージリクエストのソースブランチ。
source_project_id整数。マージリクエストソースプロジェクトの ID。
squashbooleanマージ時のスカッシュが有効かどうかを示します。
squash_commit_sha文字列です。squashコミットのSHA。マージされるまでは空です。
state文字列です。マージリクエストの状態。opened,closed,merged またはlockedのいずれかです。
subscribedboolean現在認証されているユーザーがこのマージリクエストを購読しているかどうかを示します。
target_branch文字列です。マージリクエストの対象ブランチ。
target_project_id整数。マージリクエストの対象プロジェクトの ID。
task_completion_statusオブジェクトを返します。タスクの完了状況
title文字列です。マージリクエストのタイトル。
updated_atdatetimeマージリクエストが更新されたときのタイムスタンプ。
upvotes整数。マージリクエストのアップボートの数。
userオブジェクトを返します。マージリクエストに要求されたユーザーの権限。
user_notes_count整数。マージリクエストのユーザーメモカウント。
web_url文字列です。マージリクエストのウェブURL。
work_in_progressboolean非推奨:代わりにdraft を使用してください。マージリクエストがドラフトであるかどうかを示します。
{
  "id": 155016530,
  "iid": 133,
  "project_id": 15513260,
  "title": "Manual job rules",
  "description": "",
  "state": "opened",
  "created_at": "2022-05-13T07:26:38.402Z",
  "updated_at": "2022-05-14T03:38:31.354Z",
  "merged_by": null, // Deprecated and will be removed in API v5. Use `merge_user` instead.
  "merge_user": null,
  "merged_at": null,
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "target_branch": "master",
  "source_branch": "manual-job-rules",
  "user_notes_count": 0,
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "id": 4155490,
    "username": "marcel.amirault",
    "name": "Marcel Amirault",
    "state": "active",
    "avatar_url": "https://gitlab.com/uploads/-/system/user/avatar/4155490/avatar.png",
    "web_url": "https://gitlab.com/marcel.amirault"
  },
  "assignees": [],
  "assignee": null,
  "reviewers": [],
  "source_project_id": 15513260,
  "target_project_id": 15513260,
  "labels": [],
  "draft": false,
  "work_in_progress": false,
  "milestone": null,
  "merge_when_pipeline_succeeds": false,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "can_be_merged",
  "sha": "e82eb4a098e32c796079ca3915e07487fc4db24c",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "discussion_locked": null,
  "should_remove_source_branch": null,
  "force_remove_source_branch": true,
  "reference": "!133", // Deprecated. Use `references` instead.
  "references": {
    "short": "!133",
    "relative": "!133",
    "full": "marcel.amirault/test-project!133"
  },
  "web_url": "https://gitlab.com/marcel.amirault/test-project/-/merge_requests/133",
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "squash": false,
  "task_completion_status": {
    "count": 0,
    "completed_count": 0
  },
  "has_conflicts": false,
  "blocking_discussions_resolved": true,
  "approvals_before_merge": null, // deprecated, use [Merge request approvals API](merge_request_approvals.md)
  "subscribed": true,
  "changes_count": "1",
  "latest_build_started_at": "2022-05-13T09:46:50.032Z",
  "latest_build_finished_at": null,
  "first_deployed_to_production_at": null,
  "pipeline": { // Use `head_pipeline` instead.
    "id": 538317940,
    "iid": 1877,
    "project_id": 15513260,
    "sha": "1604b0c46c395822e4e9478777f8e54ac99fe5b9",
    "ref": "refs/merge-requests/133/merge",
    "status": "failed",
    "source": "merge_request_event",
    "created_at": "2022-05-13T09:46:39.560Z",
    "updated_at": "2022-05-13T09:47:20.706Z",
    "web_url": "https://gitlab.com/marcel.amirault/test-project/-/pipelines/538317940"
  },
  "head_pipeline": {
    "id": 538317940,
    "iid": 1877,
    "project_id": 15513260,
    "sha": "1604b0c46c395822e4e9478777f8e54ac99fe5b9",
    "ref": "refs/merge-requests/133/merge",
    "status": "failed",
    "source": "merge_request_event",
    "created_at": "2022-05-13T09:46:39.560Z",
    "updated_at": "2022-05-13T09:47:20.706Z",
    "web_url": "https://gitlab.com/marcel.amirault/test-project/-/pipelines/538317940",
    "before_sha": "1604b0c46c395822e4e9478777f8e54ac99fe5b9",
    "tag": false,
    "yaml_errors": null,
    "user": {
      "id": 4155490,
      "username": "marcel.amirault",
      "name": "Marcel Amirault",
      "state": "active",
      "avatar_url": "https://gitlab.com/uploads/-/system/user/avatar/4155490/avatar.png",
      "web_url": "https://gitlab.com/marcel.amirault"
    },
    "started_at": "2022-05-13T09:46:50.032Z",
    "finished_at": "2022-05-13T09:47:20.697Z",
    "committed_at": null,
    "duration": 30,
    "queued_duration": 10,
    "coverage": null,
    "detailed_status": {
      "icon": "status_failed",
      "text": "failed",
      "label": "failed",
      "group": "failed",
      "tooltip": "failed",
      "has_details": true,
      "details_path": "/marcel.amirault/test-project/-/pipelines/538317940",
      "illustration": null,
      "favicon": "/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png"
    }
  },
  "diff_refs": {
    "base_sha": "1162f719d711319a2efb2a35566f3bfdadee8bab",
    "head_sha": "e82eb4a098e32c796079ca3915e07487fc4db24c",
    "start_sha": "1162f719d711319a2efb2a35566f3bfdadee8bab"
  },
  "merge_error": null,
  "first_contribution": false,
  "user": {
    "can_merge": true
  },
  "approvals_before_merge": { // Available for GitLab Premium and Ultimate tiers only
    "id": 1,
    "title": "test1",
    "approvals_before_merge": null
  },
}

単一のマージリクエストレスポンスのメモ

  • GitLab 12.8 で導入された、各マージリクエストのマージ可否 (merge_status) は、このエンドポイントにリクエストが行われたときに非同期でチェックされます。更新されたステータスを取得するには、この API エンドポイントをポーリングしてください。これはmerge_statusに依存するため、has_conflicts プロパティに影響します。merge_statuscannot_be_mergedでない限り、false を返します。

マージステータス

  • merge_status フィールドは GitLab 15.6 で廃止されました。
  • detailed_merge_status フィールドは GitLab 15.6 で導入されました。

merge_status の代わりにdetailed_merge_status を使って、すべての潜在的なステータスを考慮してください。

  • detailed_merge_status フィールドには、マージリクエストに関連する以下の値のいずれかを含めることができます:
    • blocked_status:別のマージリクエストによってブロックされました。
    • broken_status:競合の可能性があるため、対象ブランチにマージできません。
    • checking:Git は有効なマージが可能かどうかをテストしています。
    • unchecked:Gitはまだ有効なマージが可能かどうかテストしていません。
    • ci_must_pass:マージの前にCI/CDパイプラインが成功する必要があります。
    • ci_still_running:CI/CD パイプラインはまだ実行中です。
    • discussions_not_resolved:マージ前にすべての議論を解決する必要があります。
    • draft_status:マージリクエストがドラフトなのでマージできません。
    • external_status_checks:マージ前にすべてのステータスチェックに合格する必要があります。
    • mergeable:ブランチはターゲットブランチにきれいにマージできます。
    • not_approved:マージ前に承認者が必要です。
    • not_open:マージリクエストはマージ前に開いておく必要があります。
    • policies_denied:マージリクエストには拒否されたポリシーが含まれています。

準備ステップ

prepared_at フィールドは、すべての準備ステップが完了した後に 1 回だけ入力されます。マージリクエストに変更が追加されても更新されません:

  • diff が作成されます。
  • ウェブフックが実行されます。
  • パイプラインが作成されます。
  • マージ可能性がチェックされます。
  • Git LFS オブジェクトがリンクされます。
  • 通知が送信されます。

シングルマージリクエスト参加者の取得

マージリクエスト参加者のリストを取得します。

GET /projects/:id/merge_requests/:merge_request_iid/participants

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
[
  {
    "id": 1,
    "name": "John Doe1",
    "username": "user1",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
    "web_url": "http://localhost/user1"
  },
  {
    "id": 2,
    "name": "John Doe2",
    "username": "user2",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80&d=identicon",
    "web_url": "http://localhost/user2"
  }
]

単一のマージリクエストレビューアーを取得します。

マージリクエストレビューアーの一覧を取得します。

GET /projects/:id/merge_requests/:merge_request_iid/reviewers

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
[
  {
    "user": {
      "id": 1,
      "name": "John Doe1",
      "username": "user1",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
      "web_url": "http://localhost/user1"
    },
    "state": "unreviewed",
    "created_at": "2022-07-27T17:03:27.684Z"
  },
  {
    "user": {
      "id": 2,
      "name": "John Doe2",
      "username": "user2",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80&d=identicon",
      "web_url": "http://localhost/user2"
    },
    "state": "reviewed",
    "created_at": "2022-07-27T17:03:27.684Z"
  }
]

単一のマージリクエストコミットを取得します。

マージリクエストコミットの一覧を取得します。

GET /projects/:id/merge_requests/:merge_request_iid/commits

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
[
  {
    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
    "short_id": "ed899a2f4b5",
    "title": "Replace sanitize with escape once",
    "author_name": "Example User",
    "author_email": "user@example.com",
    "created_at": "2012-09-20T11:50:22+03:00",
    "message": "Replace sanitize with escape once"
  },
  {
    "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
    "short_id": "6104942438c",
    "title": "Sanitize for network graph",
    "author_name": "Example User",
    "author_email": "user@example.com",
    "created_at": "2012-09-20T09:06:12+03:00",
    "message": "Sanitize for network graph"
  }
]

単一のマージリクエストの変更を取得します。

caution
このエンドポイントは GitLab 15.7 で非推奨となり、API v5 では削除される予定です。 代わりにList merge request diffsエンドポイントを使用してください。

ファイルや変更点を含むマージリクエストに関する情報を表示します。

GitLab 13.6 で導入された、一連の変更に関連づけられた diff には、API で返されたり UI で表示されたりする他の diff と同じサイズ制限が適用されます。これらの制限が結果に影響する場合、overflow フィールドにはtrue という値が含まれます。これらの制限が適用されていない diff データは、access_raw_diffs パラメータを追加することで、データベースからではなく Gitaly から直接 diff にアクセスして取得することができます。この方法は一般的に遅く、リソースを多く消費しますが、データベースでバックアップされたdiffに設定されたサイズ制限の影響を受けません。Gitaly固有の制限はまだ適用されます。

GET /projects/:id/merge_requests/:merge_request_iid/changes

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
access_raw_diffsbooleanなしGitaly経由で変更の差分を取得します。
{
  "id": 21,
  "iid": 1,
  "project_id": 4,
  "title": "Blanditiis beatae suscipit hic assumenda et molestias nisi asperiores repellat et.",
  "state": "reopened",
  "created_at": "2015-02-02T19:49:39.159Z",
  "updated_at": "2015-02-02T20:08:49.959Z",
  "target_branch": "secret_token",
  "source_branch": "version-1-9",
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "name": "Chad Hamill",
    "username": "jarrett",
    "id": 5,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/b95567800f828948baf5f4160ebb2473?s=40&d=identicon",
    "web_url" : "https://gitlab.example.com/jarrett"
  },
  "assignee": {
    "name": "Administrator",
    "username": "root",
    "id": 1,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon",
    "web_url" : "https://gitlab.example.com/root"
  },
  "assignees": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "reviewers": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "source_project_id": 4,
  "target_project_id": 4,
  "labels": [ ],
  "description": "Qui voluptatibus placeat ipsa alias quasi. Deleniti rem ut sint. Optio velit qui distinctio.",
  "draft": false,
  "work_in_progress": false,
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 4,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": null
  },
  "merge_when_pipeline_succeeds": true,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "can_be_merged",
  "subscribed" : true,
  "sha": "8888888888888888888888888888888888888888",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "user_notes_count": 1,
  "changes_count": "1",
  "should_remove_source_branch": true,
  "force_remove_source_branch": false,
  "squash": false,
  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
  "references": {
    "short": "!1",
    "relative": "!1",
    "full": "my-group/my-project!1"
  },
  "discussion_locked": false,
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "task_completion_status":{
    "count":0,
    "completed_count":0
  },
  "changes": [
    {
    "old_path": "VERSION",
    "new_path": "VERSION",
    "a_mode": "100644",
    "b_mode": "100644",
    "diff": "@@ -1 +1 @@\ -1.9.7\ +1.9.8",
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false
    }
  ],
  "overflow": false
}

マージリクエストの差分を一覧表示します。

マージリクエストで変更されたファイルの diff を一覧表示します。

GET /projects/:id/merge_requests/:merge_request_iid/diffs

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
page整数。いいえ返す結果のページ。デフォルトは1です。
per_page整数。いいえページあたりの結果数。デフォルトは20です。

成功した場合は、200 OK と以下のレスポンス属性を返します:

属性種類説明
old_path文字列です。ファイルの旧パス。
new_path文字列です。ファイルの新しいパス。
a_mode文字列です。ファイルの旧ファイルモード。
b_mode文字列です。ファイルの新しいファイルモード。
diff文字列です。ファイルに加えられた変更の差分表現。
new_filebooleanファイルが追加されたかどうかを示します。
renamed_filebooleanファイルがリネームされているかどうかを示します。
deleted_filebooleanファイルが削除されたかどうかを示します。

リクエストの例

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/diffs?page=1&per_page=2"

応答例

[
  {
    "old_path": "README",
    "new_path": "README",
    "a_mode": "100644",
    "b_mode": "100644",
    "diff": "@@ -1 +1 @@\ -Title\ +README",
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false
  },
  {
    "old_path": "VERSION",
    "new_path": "VERSION",
    "a_mode": "100644",
    "b_mode": "100644",
    "diff": "@@\ -1.9.7\ +1.9.8",
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false
  }
]

マージリクエストパイプラインのリスト

マージリクエストパイプラインの一覧を取得します。pagination パラメータpage およびper_page を使用して、マージリクエストパイプラインの一覧を制限することができます。

GET /projects/:id/merge_requests/:merge_request_iid/pipelines

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
[
  {
    "id": 77,
    "sha": "959e04d7c7a30600c894bd3c0cd0e1ce7f42c11d",
    "ref": "master",
    "status": "success"
  }
]

マージリクエストパイプラインの作成

マージリクエスト用の新しいパイプラインを作成します。このエンドポイントを経由して作成されたパイプラインは、通常のブランチ/タグパイプラインを実行しません。ジョブを作成するためにonly: [merge_requests].gitlab-ci.yml を設定する必要があります。

新しいパイプラインは次のようになります:

POST /projects/:id/merge_requests/:merge_request_iid/pipelines

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
{
  "id": 2,
  "sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0",
  "ref": "refs/merge-requests/1/head",
  "status": "pending",
  "web_url": "http://localhost/user1/project1/pipelines/2",
  "before_sha": "0000000000000000000000000000000000000000",
  "tag": false,
  "yaml_errors": null,
  "user": {
    "id": 1,
    "name": "John Doe1",
    "username": "user1",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
    "web_url": "http://example.com"
  },
  "created_at": "2019-09-04T19:20:18.267Z",
  "updated_at": "2019-09-04T19:20:18.459Z",
  "started_at": null,
  "finished_at": null,
  "committed_at": null,
  "duration": null,
  "coverage": null,
  "detailed_status": {
    "icon": "status_pending",
    "text": "pending",
    "label": "pending",
    "group": "pending",
    "tooltip": "pending",
    "has_details": false,
    "details_path": "/user1/project1/pipelines/2",
    "illustration": null,
    "favicon": "/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png"
  }
}

MRの作成

新しいマージリクエストを作成します。

POST /projects/:id/merge_requests
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
source_branch文字列です。はいソースブランチ。
target_branch文字列です。はいターゲットブランチ。
title文字列です。はいMRのタイトル
allow_collaborationbooleanなし対象ブランチにマージできるメンバーからのコミットを許可します。
approvals_before_merge 整数。なしマージ前に必要な承認者の数 (以下を参照)。承認者ルールを設定するには、マージリクエスト承認者APIを参照してください。GitLab 16.0 で非推奨
allow_maintainer_to_pushbooleanなし allow_collaboration のエイリアス。
assignee_id整数。なし担当者ユーザーID。
assignee_ids整数配列。なしマージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0 または空の値を設定します。
description文字列です。なしマージリクエストの説明。1,048,576文字に制限されています。
labels文字列です。なしコンマで区切られたリストとしてのマージリクエストのラベル。
milestone_id整数。なしマイルストーンのグローバルID。
remove_source_branchbooleanなしマージリクエストがマージ時にソースブランチを削除するかどうかを示すフラグ。
reviewer_ids整数配列。なしマージリクエストにレビュアーとして追加されるユーザーのID。0 に設定するか、空のままにすると、レビュアーは追加されません。GitLab 13.8 で導入されました
squashbooleanなしマージ時にマージリクエストがつぶされるように設定されているかどうかを示します。プロジェクトの設定がこの値を上書きする場合があります。
target_project_id整数。なし対象プロジェクトの数値ID。
{
  "id": 1,
  "iid": 1,
  "project_id": 3,
  "title": "test1",
  "description": "fixed login page css paddings",
  "state": "merged",
  "created_at": "2017-04-29T08:46:00Z",
  "updated_at": "2017-04-29T08:46:00Z",
  "target_branch": "master",
  "source_branch": "test1",
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignee": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "source_project_id": 2,
  "target_project_id": 3,
  "labels": [
    "Community contribution",
    "Manage"
  ],
  "draft": false,
  "work_in_progress": false,
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 3,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": "2018-09-22",
    "start_date": "2018-08-08",
    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
  },
  "merge_when_pipeline_succeeds": true,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "not_open",
  "merge_error": null,
  "sha": "8888888888888888888888888888888888888888",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "user_notes_count": 1,
  "discussion_locked": null,
  "should_remove_source_branch": true,
  "force_remove_source_branch": false,
  "allow_collaboration": false,
  "allow_maintainer_to_push": false,
  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
  "references": {
    "short": "!1",
    "relative": "!1",
    "full": "my-group/my-project!1"
  },
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "squash": false,
  "subscribed": false,
  "changes_count": "1",
  "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merge_user": {
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merged_at": "2018-09-07T11:16:17.520Z",
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
  "first_deployed_to_production_at": null,
  "pipeline": {
    "id": 29626725,
    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "ref": "patch-28",
    "status": "success",
    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
  },
  "diff_refs": {
    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
  },
  "diverged_commits_count": 2,
  "task_completion_status":{
    "count":0,
    "completed_count":0
  }
}

応答データに関する重要な注意事項については、マージリクエスト応答に関する注意事項をお読みください。

MR の更新

既存のマージリクエストを更新します。対象ブランチやタイトルを変更したり、MR を閉じることもできます。

PUT /projects/:id/merge_requests/:merge_request_iid
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストのID。
add_labels文字列です。なしマージリクエストに追加するカンマ区切りのラベル名。
allow_collaborationbooleanなし対象ブランチにマージできるメンバーからのコミットを許可します。
allow_maintainer_to_pushbooleanなし allow_collaboration のエイリアス。
assignee_id整数。なしマージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0 に設定するか、空の値を指定します。
assignee_ids整数配列。なしマージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0 または空の値を設定します。
description文字列です。なしマージリクエストの説明。1,048,576文字に制限されています。
discussion_lockedbooleanなしマージリクエストのディスカッションがロックされているかどうかを示すフラグ。ディスカッションがロックされている場合、プロジェクトメンバーだけがコメントを追加、編集、解決することができます。
labels文字列です。なしマージリクエストのカンマ区切りのラベル名。すべてのラベルの割り当てを解除するには、空の文字列を設定します。
milestone_id整数。なしマージリクエストを割り当てるマイルストーンのグローバル ID。マイルストーンの割り当てを解除するには、0 に設定するか、空の値を指定します。
remove_labels文字列です。なしマージリクエストから削除するカンマ区切りのラベル名。
remove_source_branchbooleanなしマージリクエストがマージ時にソースブランチを削除するかどうかを示すフラグ。
reviewer_ids整数配列。なしマージリクエストにレビュアーとして設定されたユーザーのID。値を0 に設定するか、すべてのレビュアーに設定しない場合は空の値を指定してください。GitLab 13.8 で導入されました
squashbooleanなしマージ時にマージリクエストがつぶされるように設定されているかどうかを示します。プロジェクトの設定がこの値を上書きする場合があります。
state_event文字列です。なし新しい状態(クローズ/オープン)。
target_branch文字列です。なしターゲットブランチ。
title文字列です。なしMRのタイトル

上記の属性のうち、少なくとも1つは必須ではありません。

{
  "id": 1,
  "iid": 1,
  "project_id": 3,
  "title": "test1",
  "description": "fixed login page css paddings",
  "state": "merged",
  "created_at": "2017-04-29T08:46:00Z",
  "updated_at": "2017-04-29T08:46:00Z",
  "target_branch": "master",
  "source_branch": "test1",
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignee": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignees": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "reviewers": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "source_project_id": 2,
  "target_project_id": 3,
  "labels": [
    "Community contribution",
    "Manage"
  ],
  "draft": false,
  "work_in_progress": false,
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 3,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": "2018-09-22",
    "start_date": "2018-08-08",
    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
  },
  "merge_when_pipeline_succeeds": true,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "not_open",
  "merge_error": null,
  "sha": "8888888888888888888888888888888888888888",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "user_notes_count": 1,
  "discussion_locked": null,
  "should_remove_source_branch": true,
  "force_remove_source_branch": false,
  "allow_collaboration": false,
  "allow_maintainer_to_push": false,
  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
  "references": {
    "short": "!1",
    "relative": "!1",
    "full": "my-group/my-project!1"
  },
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "squash": false,
  "subscribed": false,
  "changes_count": "1",
  "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merge_user": {
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merged_at": "2018-09-07T11:16:17.520Z",
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
  "first_deployed_to_production_at": null,
  "pipeline": {
    "id": 29626725,
    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "ref": "patch-28",
    "status": "success",
    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
  },
  "diff_refs": {
    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
  },
  "diverged_commits_count": 2,
  "task_completion_status":{
    "count":0,
    "completed_count":0
  }
}

応答データに関する重要な注意事項については、マージリクエスト応答に関する注意事項をお読みください。

マージリクエストの削除

管理者とプロジェクトオーナーのみ。対象のマージリクエストを削除します。

DELETE /projects/:id/merge_requests/:merge_request_iid
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/merge_requests/85"

マージリクエストをマージします。

この API を使用してマージリクエストで送信された変更を受け入れ、マージします。

PUT /projects/:id/merge_requests/:merge_request_iid/merge

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
merge_commit_message文字列です。なしカスタムマージコミットメッセージ。
merge_when_pipeline_succeedsbooleanなし true の場合、パイプラインが成功するとマージリクエストはマージされます。
sha文字列です。なし存在する場合、この SHA はソースブランチの HEAD と一致しなければならず、一致しない場合はマージに失敗します。
should_remove_source_branchbooleanなし true の場合、ソースブランチを削除します。
squash_commit_message文字列です。なしカスタムスクワッシュコミットメッセージ。
squashbooleanなし true の場合、マージ時にコミットは1つのコミットにまとめられます。
{
  "id": 1,
  "iid": 1,
  "project_id": 3,
  "title": "test1",
  "description": "fixed login page css paddings",
  "state": "merged",
  "created_at": "2017-04-29T08:46:00Z",
  "updated_at": "2017-04-29T08:46:00Z",
  "target_branch": "master",
  "source_branch": "test1",
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignee": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignees": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "reviewers": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "source_project_id": 2,
  "target_project_id": 3,
  "labels": [
    "Community contribution",
    "Manage"
  ],
  "draft": false,
  "work_in_progress": false,
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 3,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": "2018-09-22",
    "start_date": "2018-08-08",
    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
  },
  "merge_when_pipeline_succeeds": true,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "not_open",
  "merge_error": null,
  "sha": "8888888888888888888888888888888888888888",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "user_notes_count": 1,
  "discussion_locked": null,
  "should_remove_source_branch": true,
  "force_remove_source_branch": false,
  "allow_collaboration": false,
  "allow_maintainer_to_push": false,
  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
  "references": {
    "short": "!1",
    "relative": "!1",
    "full": "my-group/my-project!1"
  },
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "squash": false,
  "subscribed": false,
  "changes_count": "1",
  "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merge_user": {
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merged_at": "2018-09-07T11:16:17.520Z",
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
  "first_deployed_to_production_at": null,
  "pipeline": {
    "id": 29626725,
    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "ref": "patch-28",
    "status": "success",
    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
  },
  "diff_refs": {
    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
  },
  "diverged_commits_count": 2,
  "task_completion_status":{
    "count":0,
    "completed_count":0
  }
}

このAPIは失敗時に特定のHTTPステータスコードを返します:

HTTP ステータスメッセージ理由
401Unauthorizedこのユーザーにはこのマージリクエストを受け付ける権限がありません。
405Method Not Allowedマージリクエストはマージできません。
409SHA does not match HEAD of source branch指定されたsha パラメータがソースの HEAD と一致しません。
422Branch cannot be mergedマージリクエストはマージに失敗しました。

レスポンスデータに関するその他の重要な注意事項については、シングルマージリクエストのレスポンスに関する注意事項をお読みください。

デフォルトのマージ参照パスへのマージ

マージリクエストソースブランチとターゲットブランチの間の変更を、可能であればターゲットプロジェクトリポジトリのrefs/merge-requests/:iid/merge ref にマージします。この ref は、通常のマージアクションが実行された場合のターゲットブランチの状態を持ちます。

このアクションはマージリクエストターゲットブランチの状態を変更しないので、通常のマージアクションではありません。

このリファレンス (refs/merge-requests/:iid/merge) は、この API にリクエストを送信したときに必ずしも上書きされるわけではありません。

マージリクエストがコンフリクトしていたり、空だったり、すでにマージされていたりすると、400 と説明的なエラーメッセージが表示されます。

200の場合、レスポンスボディにrefs/merge-requests/:iid/merge の HEAD コミットを返します。

GET /projects/:id/merge_requests/:merge_request_iid/merge_ref

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
{
  "commit_id": "854a3a7a17acbcc0bbbea170986df1eb60435f34"
}

パイプライン成功時のマージキャンセル

このAPIは失敗時に特定のHTTPステータスコードを返します:

HTTP ステータスメッセージ理由
401Unauthorizedこのユーザーにはこのマージリクエストをキャンセルする権限がありません。
405Method Not Allowedマージリクエストはすでにマージされているか、クローズされています。
406Not Acceptableパイプラインが成功したとき、マージリクエストはマージされるように設定されていません。
POST /projects/:id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds

サポートされる属性:

属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
{
  "id": 1,
  "iid": 1,
  "project_id": 3,
  "title": "test1",
  "description": "fixed login page css paddings",
  "state": "merged",
  "created_at": "2017-04-29T08:46:00Z",
  "updated_at": "2017-04-29T08:46:00Z",
  "target_branch": "master",
  "source_branch": "test1",
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignee": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignees": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "reviewers": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "source_project_id": 2,
  "target_project_id": 3,
  "labels": [
    "Community contribution",
    "Manage"
  ],
  "draft": false,
  "work_in_progress": false,
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 3,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": "2018-09-22",
    "start_date": "2018-08-08",
    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
  },
  "merge_when_pipeline_succeeds": false,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "not_open",
  "merge_error": null,
  "sha": "8888888888888888888888888888888888888888",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "user_notes_count": 1,
  "discussion_locked": null,
  "should_remove_source_branch": true,
  "force_remove_source_branch": false,
  "allow_collaboration": false,
  "allow_maintainer_to_push": false,
  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
  "references": {
    "short": "!1",
    "relative": "!1",
    "full": "my-group/my-project!1"
  },
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "squash": false,
  "subscribed": false,
  "changes_count": "1",
  "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merge_user": {
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merged_at": "2018-09-07T11:16:17.520Z",
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
  "first_deployed_to_production_at": null,
  "pipeline": {
    "id": 29626725,
    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "ref": "patch-28",
    "status": "success",
    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
  },
  "diff_refs": {
    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
  },
  "diverged_commits_count": 2,
  "task_completion_status":{
    "count":0,
    "completed_count":0
  }
}

応答データに関する重要な注意事項については、マージリクエスト応答に関する注意事項をお読みください。

マージリクエストのリベース

target_branch に対してマージリクエストのsource_branch を自動的にリベースします。

マージリクエストのソースブランチにプッシュする権限がない場合、403 Forbidden レスポンスを受け取ります。

PUT /projects/:id/merge_requests/:merge_request_iid/rebase
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
skip_cibooleanなしCI パイプラインの作成をスキップするには、true に設定します。
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/76/merge_requests/1/rebase"

このリクエストは非同期です。APIは、リクエストが正常にエンキューされた場合、HTTP 202 Accepted 、レスポンスにコンテナを返します:

{
  "rebase_in_progress": true
}

include_rebase_in_progress パラメータを使用してGet single MRエンドポイントをポーリングすると、非同期リクエストのステータスを確認できます。

リベース・オペレーションが進行中の場合、応答には以下が含まれます:

{
  "rebase_in_progress": true,
  "merge_error": null
}

リベース・オペレーションが正常に完了すると、応答には以下が含まれます:

{
  "rebase_in_progress": false,
  "merge_error": null
}

リベース・オペレーションが失敗した場合、応答には以下の内容が含まれます:

{
  "rebase_in_progress": false,
  "merge_error": "Rebase failed. Please rebase locally"
}

マージリクエストに関するコメント

コメントはノートリソースから行えます。

マージ時にクローズするイシューのリスト

指定されたマージリクエストをマージするとクローズされるすべてのイシューを取得します。

GET /projects/:id/merge_requests/:merge_request_iid/closes_issues
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/76/merge_requests/1/closes_issues"

GitLab issue tracker を使用した場合のレスポンス例:

[
   {
      "state" : "opened",
      "description" : "Ratione dolores corrupti mollitia soluta quia.",
      "author" : {
         "state" : "active",
         "id" : 18,
         "web_url" : "https://gitlab.example.com/eileen.lowe",
         "name" : "Alexandra Bashirian",
         "avatar_url" : null,
         "username" : "eileen.lowe"
      },
      "milestone" : {
         "project_id" : 1,
         "description" : "Ducimus nam enim ex consequatur cumque ratione.",
         "state" : "closed",
         "due_date" : null,
         "iid" : 2,
         "created_at" : "2016-01-04T15:31:39.996Z",
         "title" : "v4.0",
         "id" : 17,
         "updated_at" : "2016-01-04T15:31:39.996Z"
      },
      "project_id" : 1,
      "assignee" : {
         "state" : "active",
         "id" : 1,
         "name" : "Administrator",
         "web_url" : "https://gitlab.example.com/root",
         "avatar_url" : null,
         "username" : "root"
      },
      "updated_at" : "2016-01-04T15:31:51.081Z",
      "id" : 76,
      "title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
      "created_at" : "2016-01-04T15:31:51.081Z",
      "iid" : 6,
      "labels" : [],
      "user_notes_count": 1,
      "changes_count": "1"
   }
]

外部のイシュー・トラッカー (Jira など) を使用した場合の応答例:

[
   {
       "id" : "PROJECT-123",
       "title" : "Title of this issue"
   }
]

マージリクエストの購読

通知を受け取るために、認証済みユーザーをマージリクエストに登録します。ユーザーがすでにマージリクエストを購読している場合、ステータスコードHTTP 304 Not Modified が返されます。

POST /projects/:id/merge_requests/:merge_request_iid/subscribe
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/17/subscribe"

応答例

{
  "id": 1,
  "iid": 1,
  "project_id": 3,
  "title": "test1",
  "description": "fixed login page css paddings",
  "state": "merged",
  "created_at": "2017-04-29T08:46:00Z",
  "updated_at": "2017-04-29T08:46:00Z",
  "target_branch": "master",
  "source_branch": "test1",
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignee": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignees": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "reviewers": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "source_project_id": 2,
  "target_project_id": 3,
  "labels": [
    "Community contribution",
    "Manage"
  ],
  "draft": false,
  "work_in_progress": false,
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 3,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": "2018-09-22",
    "start_date": "2018-08-08",
    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
  },
  "merge_when_pipeline_succeeds": true,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "not_open",
  "sha": "8888888888888888888888888888888888888888",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "user_notes_count": 1,
  "discussion_locked": null,
  "should_remove_source_branch": true,
  "force_remove_source_branch": false,
  "allow_collaboration": false,
  "allow_maintainer_to_push": false,
  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
  "references": {
    "short": "!1",
    "relative": "!1",
    "full": "my-group/my-project!1"
  },
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "squash": false,
  "subscribed": false,
  "changes_count": "1",
  "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merge_user": {
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merged_at": "2018-09-07T11:16:17.520Z",
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
  "first_deployed_to_production_at": null,
  "pipeline": {
    "id": 29626725,
    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "ref": "patch-28",
    "status": "success",
    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
  },
  "diff_refs": {
    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
  },
  "diverged_commits_count": 2,
  "task_completion_status":{
    "count":0,
    "completed_count":0
  }
}

応答データに関する重要な注意事項については、マージリクエスト応答に関する注意事項をお読みください。

マージリクエストの登録解除

認証済みユーザーをマージリクエストから購読解除し、そのマージリクエストからの通知を受け取らないようにします。ユーザーがマージリクエストを購読していない場合、ステータスコードHTTP 304 Not Modified が返されます。

POST /projects/:id/merge_requests/:merge_request_iid/unsubscribe
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/17/unsubscribe"

応答例

{
  "id": 1,
  "iid": 1,
  "project_id": 3,
  "title": "test1",
  "description": "fixed login page css paddings",
  "state": "merged",
  "created_at": "2017-04-29T08:46:00Z",
  "updated_at": "2017-04-29T08:46:00Z",
  "target_branch": "master",
  "source_branch": "test1",
  "upvotes": 0,
  "downvotes": 0,
  "author": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignee": {
    "id": 1,
    "name": "Administrator",
    "username": "admin",
    "state": "active",
    "avatar_url": null,
    "web_url" : "https://gitlab.example.com/admin"
  },
  "assignees": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "reviewers": [{
    "name": "Miss Monserrate Beier",
    "username": "axel.block",
    "id": 12,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/axel.block"
  }],
  "source_project_id": 2,
  "target_project_id": 3,
  "labels": [
    "Community contribution",
    "Manage"
  ],
  "draft": false,
  "work_in_progress": false,
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 3,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": "2018-09-22",
    "start_date": "2018-08-08",
    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
  },
  "merge_when_pipeline_succeeds": true,
  "merge_status": "can_be_merged",
  "detailed_merge_status": "not_open",
  "sha": "8888888888888888888888888888888888888888",
  "merge_commit_sha": null,
  "squash_commit_sha": null,
  "user_notes_count": 1,
  "discussion_locked": null,
  "should_remove_source_branch": true,
  "force_remove_source_branch": false,
  "allow_collaboration": false,
  "allow_maintainer_to_push": false,
  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
  "references": {
    "short": "!1",
    "relative": "!1",
    "full": "my-group/my-project!1"
  },
  "time_stats": {
    "time_estimate": 0,
    "total_time_spent": 0,
    "human_time_estimate": null,
    "human_total_time_spent": null
  },
  "squash": false,
  "subscribed": false,
  "changes_count": "1",
  "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merge_user": {
    "id": 87854,
    "name": "Douwe Maan",
    "username": "DouweM",
    "state": "active",
    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
    "web_url": "https://gitlab.com/DouweM"
  },
  "merged_at": "2018-09-07T11:16:17.520Z",
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
  "first_deployed_to_production_at": null,
  "pipeline": {
    "id": 29626725,
    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "ref": "patch-28",
    "status": "success",
    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
  },
  "diff_refs": {
    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
  },
  "diverged_commits_count": 2,
  "task_completion_status":{
    "count":0,
    "completed_count":0
  }
}

応答データに関する重要な注意事項については、マージリクエスト応答に関する注意事項をお読みください。

To-Do 項目の作成

マージリクエストの現在のユーザーの ToDo 項目を手動で作成します。そのマージリクエストにユーザーのToDo項目がすでに存在する場合、ステータスコードHTTP 304 Not Modified が返されます。

POST /projects/:id/merge_requests/:merge_request_iid/todo
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/27/todo"

応答例

{
  "id": 113,
  "project": {
    "id": 3,
    "name": "GitLab CI/CD",
    "name_with_namespace": "GitLab Org / GitLab CI/CD",
    "path": "gitlab-ci",
    "path_with_namespace": "gitlab-org/gitlab-ci"
  },
  "author": {
    "name": "Administrator",
    "username": "root",
    "id": 1,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/root"
  },
  "action_name": "marked",
  "target_type": "MergeRequest",
  "target": {
    "id": 27,
    "iid": 7,
    "project_id": 3,
    "title": "Et voluptas laudantium minus nihil recusandae ut accusamus earum aut non.",
    "description": "Veniam sunt nihil modi earum cumque illum delectus. Nihil ad quis distinctio quia. Autem eligendi at quibusdam repellendus.",
    "state": "merged",
    "created_at": "2016-06-17T07:48:04.330Z",
    "updated_at": "2016-07-01T11:14:15.537Z",
    "target_branch": "allow_regex_for_project_skip_ref",
    "source_branch": "backup",
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "name": "Jarret O'Keefe",
      "username": "francisca",
      "id": 14,
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/a7fa515d53450023c83d62986d0658a8?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/francisca",
      "discussion_locked": false
    },
    "assignee": {
      "name": "Dr. Gabrielle Strosin",
      "username": "barrett.krajcik",
      "id": 4,
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/733005fcd7e6df12d2d8580171ccb966?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/barrett.krajcik"
    },
    "assignees": [{
      "name": "Miss Monserrate Beier",
      "username": "axel.block",
      "id": 12,
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/axel.block"
    }],
    "reviewers": [{
      "name": "Miss Monserrate Beier",
      "username": "axel.block",
      "id": 12,
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/axel.block"
    }],
    "source_project_id": 3,
    "target_project_id": 3,
    "labels": [],
    "draft": false,
    "work_in_progress": false,
    "milestone": {
      "id": 27,
      "iid": 2,
      "project_id": 3,
      "title": "v1.0",
      "description": "Quis ea accusantium animi hic fuga assumenda.",
      "state": "active",
      "created_at": "2016-06-17T07:47:33.840Z",
      "updated_at": "2016-06-17T07:47:33.840Z",
      "due_date": null
    },
    "merge_when_pipeline_succeeds": false,
    "merge_status": "unchecked",
    "detailed_merge_status": "not_open",
    "subscribed": true,
    "sha": "8888888888888888888888888888888888888888",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "user_notes_count": 7,
    "changes_count": "1",
    "should_remove_source_branch": true,
    "force_remove_source_branch": false,
    "squash": false,
    "web_url": "http://example.com/my-group/my-project/merge_requests/1",
    "references": {
      "short": "!1",
      "relative": "!1",
      "full": "my-group/my-project!1"
    }
  },
  "target_url": "https://gitlab.example.com/gitlab-org/gitlab-ci/merge_requests/7",
  "body": "Et voluptas laudantium minus nihil recusandae ut accusamus earum aut non.",
  "state": "pending",
  "created_at": "2016-07-01T11:14:15.530Z"
}

マージリクエストの差分バージョンの取得

マージリクエストの diff バージョンの一覧を取得します。レスポンス内の SHA については、API レスポンス内の SHA を参照してください。

GET /projects/:id/merge_requests/:merge_request_iid/versions
属性種類必須説明
id文字列はいプロジェクトのID。
merge_request_iid整数。はいマージリクエストの内部ID。
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/versions"

応答例

[{
  "id": 110,
  "head_commit_sha": "33e2ee8579fda5bc36accc9c6fbd0b4fefda9e30",
  "base_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
  "start_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
  "created_at": "2016-07-26T14:44:48.926Z",
  "merge_request_id": 105,
  "state": "collected",
  "real_size": "1",
  "patch_id_sha": "d504412d5b6e6739647e752aff8e468dde093f2f"
}, {
  "id": 108,
  "head_commit_sha": "3eed087b29835c48015768f839d76e5ea8f07a24",
  "base_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
  "start_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
  "created_at": "2016-07-25T14:21:33.028Z",
  "merge_request_id": 105,
  "state": "collected",
  "real_size": "1",
  "patch_id_sha": "72c30d1f0115fc1d2bb0b29b24dc2982cbcdfd32"
}]

API レスポンスの SHA

SHA フィールド目的
base_commit_shaマージベースコミットは、ソースブランチとターゲットブランチの間で SHA を行います。
head_commit_shaソースブランチの HEAD コミット。
start_commit_shaこのバージョンの diff が作成されたときのターゲットブランチの HEAD コミット SHA。

マージリクエストの diff を取得します。

単一のマージリクエストの diff バージョンを取得します。レスポンス内の SHA については、API レスポンス内の SHA をお読みください。

GET /projects/:id/merge_requests/:merge_request_iid/versions/:version_id
属性種類必須説明
id文字列はいプロジェクトのID。
merge_request_iid整数。はいマージリクエストの内部ID。
version_id整数。はいマージリクエスト差分バージョンのID。
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/versions/1"

応答例

{
  "id": 110,
  "head_commit_sha": "33e2ee8579fda5bc36accc9c6fbd0b4fefda9e30",
  "base_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
  "start_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
  "created_at": "2016-07-26T14:44:48.926Z",
  "merge_request_id": 105,
  "state": "collected",
  "real_size": "1",
  "patch_id_sha": "d504412d5b6e6739647e752aff8e468dde093f2f",
  "commits": [{
    "id": "33e2ee8579fda5bc36accc9c6fbd0b4fefda9e30",
    "short_id": "33e2ee85",
    "title": "Change year to 2018",
    "author_name": "Administrator",
    "author_email": "admin@example.com",
    "created_at": "2016-07-26T17:44:29.000+03:00",
    "message": "Change year to 2018"
  }, {
    "id": "aa24655de48b36335556ac8a3cd8bb521f977cbd",
    "short_id": "aa24655d",
    "title": "Update LICENSE",
    "author_name": "Administrator",
    "author_email": "admin@example.com",
    "created_at": "2016-07-25T17:21:53.000+03:00",
    "message": "Update LICENSE"
  }, {
    "id": "3eed087b29835c48015768f839d76e5ea8f07a24",
    "short_id": "3eed087b",
    "title": "Add license",
    "author_name": "Administrator",
    "author_email": "admin@example.com",
    "created_at": "2016-07-25T17:21:20.000+03:00",
    "message": "Add license"
  }],
  "diffs": [{
    "old_path": "LICENSE",
    "new_path": "LICENSE",
    "a_mode": "0",
    "b_mode": "100644",
    "diff": "@@ -0,0 +1,21 @@\n+The MIT License (MIT)\n+\n+Copyright (c) 2018 Administrator\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n",
    "new_file": true,
    "renamed_file": false,
    "deleted_file": false
  }]
}

マージリクエストの見積もり時間の設定

マージリクエストの作業予定時間を設定します。

POST /projects/:id/merge_requests/:merge_request_iid/time_estimate
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
duration文字列です。はい 3h30mのような内部フォーマットでの継続時間。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/93/time_estimate?duration=3h30m"

応答例

{
  "human_time_estimate": "3h 30m",
  "human_total_time_spent": null,
  "time_estimate": 12600,
  "total_time_spent": 0
}

マージリクエストの見積もり時間をリセットします。

マージリクエストの推定時間を0秒にリセットします。

POST /projects/:id/merge_requests/:merge_request_iid/reset_time_estimate
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいプロジェクトのマージリクエストの内部ID。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/93/reset_time_estimate"

応答例

{
  "human_time_estimate": null,
  "human_total_time_spent": null,
  "time_estimate": 0,
  "total_time_spent": 0
}

マージリクエストにかかった時間を追加します。

このマージリクエストの使用済み時間を追加します。

POST /projects/:id/merge_requests/:merge_request_iid/add_spent_time
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
duration文字列です。はい次のようなヒューマンフォーマットで期間を指定します。3h30m
summary文字列です。なし時間の使い方の概要
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/93/add_spent_time?duration=1h"

応答例

{
  "human_time_estimate": null,
  "human_total_time_spent": "1h",
  "time_estimate": 0,
  "total_time_spent": 3600
}

マージリクエストの滞在時間リセット

このマージリクエストの総使用時間を0秒にリセットします。

POST /projects/:id/merge_requests/:merge_request_iid/reset_spent_time
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいプロジェクトのマージリクエストの内部ID。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/93/reset_spent_time"

応答例

{
  "human_time_estimate": null,
  "human_total_time_spent": null,
  "time_estimate": 0,
  "total_time_spent": 0
}

時間追跡統計の取得

GET /projects/:id/merge_requests/:merge_request_iid/time_stats
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/merge_requests/93/time_stats"

応答例

{
  "human_time_estimate": "2h",
  "human_total_time_spent": "1h",
  "time_estimate": 7200,
  "total_time_spent": 3600
}

承認

承認者については、マージリクエストの承認を参照してください。

マージリクエスト状態イベント一覧

どの状態が設定され、誰がそれを行い、いつそれが起こったかを追跡するには、リソース状態イベントAPIをチェックしてください。

トラブルシューティング

新しいマージリクエストの API フィールドが空です。

マージリクエストが作成されると、diff_refschanges_count フィールドは最初は空です。これらのフィールドはマージリクエストが作成された後に非同期に入力されます。詳細については、イシューSome merge request API fields (diff_refs,changes_count) empty after MR is created、および GitLab フォーラムの関連ディスカッションを参照してください。