- API v5での削除
- マージリクエストの一覧
- プロジェクトマージリクエスト一覧
- グループマージリクエスト一覧
- 単一の MR を取得
- シングルマージリクエスト参加者の取得
- 単一のマージリクエストレビューアーを取得します。
- 単一のマージリクエストコミットを取得します。
- 単一のマージリクエストの変更を取得します。
- マージリクエストの差分を一覧表示します。
- マージリクエストパイプラインのリスト
- マージリクエストパイプラインの作成
- MRの作成
- MR の更新
- マージリクエストの削除
- マージリクエストをマージします。
- デフォルトのマージ参照パスへのマージ
- パイプライン成功時のマージキャンセル
- マージリクエストのリベース
- マージリクエストに関するコメント
- マージ時にクローズするイシューのリスト
- マージリクエストの購読
- マージリクエストの登録解除
- To-Do 項目の作成
- マージリクエストの差分バージョンの取得
- マージリクエストの diff を取得します。
- マージリクエストの見積もり時間の設定
- マージリクエストの見積もり時間をリセットします。
- マージリクエストにかかった時間を追加します。
- マージリクエストの滞在時間リセット
- 時間追跡統計の取得
- 承認
- マージリクエスト状態イベント一覧
- トラブルシューティング
マージリクエスト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 パラメータpage
とper_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_after | datetime | なし | 指定された時刻以降に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
created_before | datetime | なし | 指定された時刻以前に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
deployed_after | datetime | なし | 指定された日時以降にデプロイされたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
deployed_before | datetime | なし | 指定した日時より前にデプロイされたマージリクエストを返します。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_after | datetime | なし | 指定された時刻以降に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
updated_before | datetime | なし | 指定された時刻以前に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
view | 文字列です。 | なし |
simple の場合、iid 、URL、タイトル、説明、マージリクエストの基本状態を返します。 |
with_labels_details | boolean | なし |
true の場合、labels フィールドの各ラベルの詳細を返します::name :color ,:description ,:description_html ,:text_color .デフォルトはfalse です。 |
with_merge_status_recheck | boolean | なし |
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 パラメータpage
とper_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_id
、target_project_id
、project_id
は同じです。フォークからのマージリクエストの場合、target_project_id
とproject_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_after | datetime | なし | 指定された時刻以降に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
created_before | datetime | なし | 指定された時刻以前に作成されたマージリクエストを返します。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_after | datetime | なし | 指定された時刻以降に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
updated_before | datetime | なし | 指定された時刻以前に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
view | 文字列です。 | なし |
simple の場合、iid 、URL、タイトル、説明、マージリクエストの基本状態を返します。 |
wip | 文字列です。 | なし |
wip ステータスに対してマージリクエストをフィルタします。yes はドラフトマージリクエストのみを返し、no はドラフト以外のマージリクエストを返します。 |
with_labels_details | boolean | なし |
true の場合、labels フィールドの各ラベルの詳細を返します::name :color ,:description ,:description_html ,:text_color .デフォルトはfalse です。 |
with_merge_status_recheck | boolean | なし |
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 パラメータpage
とper_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_after | datetime | なし | 指定された時刻以降に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
created_before | datetime | なし | 指定された時刻以前に作成されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
labels | 文字列です。 | なし | コンマで区切られたラベルのリストにマッチするマージリクエストを返します。None はラベルのないすべてのマージリクエストを一覧表示します。Any は少なくとも 1 つのラベルを持つすべてのマージリクエストを一覧表示します。定義済みの名前は大文字小文字を区別しません。 |
milestone | 文字列です。 | なし |
None マイルストーンのないマージリクエストを返します。Any マイルストーンが割り当てられているマージリクエストを返します。 |
my_reaction_emoji | 文字列です。 | なし |
emoji None は、リアクションが与えられていないイシューを返します。Any は、少なくとも1つのリアクションが与えられたイシューを返します。 |
non_archived | boolean | なし | アーカイブされていないプロジェクトからのマージリクエストのみを返します。デフォルトは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_after | datetime | なし | 指定された時刻以降に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
updated_before | datetime | なし | 指定された時刻以前に更新されたマージリクエストを返します。ISO 8601 形式 (2019-03-15T08:00:00Z ) で返されます。 |
view | 文字列です。 | なし |
simple の場合、iid 、URL、タイトル、説明、マージリクエストの基本状態を返します。 |
with_labels_details | boolean | なし |
true の場合、labels フィールドの各ラベルの詳細を返します::name :color ,:description ,:description_html ,:text_color .デフォルトはfalse です。 |
with_merge_status_recheck | boolean | なし |
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_count | boolean | なし |
true の場合、レスポンスにはターゲットブランチの後ろのコミットも含まれます。 |
include_rebase_in_progress | boolean | なし |
true の場合、リベースオペレーションが進行中であるかどうか。 |
render_html | boolean | なし |
true の場合、レスポンスにはタイトルと説明文のレンダリングされた HTML が含まれます。 |
レスポンス
属性 | 種類 | 説明 |
---|---|---|
approvals_before_merge | 整数。 | このマージリクエストがマージできるまでに必要な承認者の数。承認者ルールを設定するには、マージリクエスト承認者 APIを参照してください。GitLab 16.0 で非推奨。 |
assignee | オブジェクトを返します。 | マージリクエストの最初の担当者。 |
assignees | アレイ | マージリクエストの担当者。 |
author | オブジェクトを返します。 | このマージリクエストを作成したユーザー。 |
blocking_discussions_resolved | boolean | マージリクエストをマージする前にすべてのディスカッションが必要な場合にのみ、すべてのディスカッションを解決するかどうかを示します。 |
changes_count | 文字列です。 | マージリクエストで行われた変更の数。マージリクエストが作成されたときは空で、非同期に入力されます。新しいマージリクエストについては Empty API Fields を参照ください。 |
closed_at | datetime | マージリクエストがクローズされたときのタイムスタンプ。 |
closed_by | オブジェクトを返します。 | このマージリクエストをクローズしたユーザー。 |
created_at | datetime | マージリクエストが作成されたときのタイムスタンプ。 |
description | 文字列です。 | マージリクエストの説明。キャッシュのためにHTMLとしてレンダリングされたMarkdownを含みます。 |
detailed_merge_status | 文字列です。 | マージリクエストの詳細なマージステータス。潜在的な値のリストについてはマージステータスをお読みください。 |
diff_refs | オブジェクトを返します。 | このマージリクエストのベース SHA、ヘッド SHA、開始 SHA の参照。マージリクエストの最新の差分バージョンに対応します。マージリクエストが作成されたときは空で、非同期に入力されます。新しいマージリクエスト用の空の API フィールド を参照ください。 |
discussion_locked | boolean | マージリクエストのコメントがメンバーのみにロックされるかどうかを示します。 |
downvotes | 整数。 | マージリクエストに対するダウンボートの数。 |
draft | boolean | マージリクエストがドラフトであるかどうかを示します。 |
first_contribution | boolean | マージリクエストが作成者の最初の貢献であるかどうかを示します。 |
first_deployed_to_production_at | datetime | 最初のデプロイが終了したときのタイムスタンプ。 |
force_remove_source_branch | boolean | プロジェクトの設定で、マージ後にソースブランチを削除するかどうかを指定します。 |
has_conflicts | boolean | マージリクエストに競合があり、マージできないかどうかを示します。merge_status プロパティに依存します。merge_status がcannot_be_merged でない限り、false を返します。 |
head_pipeline | オブジェクトを返します。 | マージリクエストのブランチ HEAD で実行されているパイプライン。pipeline よりも完全な情報が含まれているので、代わりに使うべきです。 |
id | 整数。 | マージリクエストの ID。 |
iid | 整数。 | マージリクエストの内部 ID。 |
labels | アレイ | マージリクエストのラベル。 |
latest_build_finished_at | datetime | マージリクエストの最新ビルドが終了したときのタイムスタンプ。 |
latest_build_started_at | datetime | マージリクエストの最新ビルドが開始されたタイムスタンプ。 |
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_succeeds | boolean | パイプラインが成功したときにマージされるように設定されているかどうかを示します。 |
merged_at | datetime | マージリクエストがマージされたときのタイムスタンプ。 |
merged_by | オブジェクトを返します。 | このマージリクエストをマージしたユーザー、または自動マージに設定したユーザー。GitLab 14.7 で非推奨。API バージョン 5 で削除予定。代わりにmerge_user を使用してください。 |
milestone | オブジェクトを返します。 | マージリクエストのマイルストーン。 |
pipeline | オブジェクトを返します。 | マージリクエストのブランチ HEAD で実行されているパイプライン。より多くの情報が含まれているので、代わりにhead_pipeline を使うことを検討してください。 |
prepared_at | datetime | マージリクエストが準備された時のタイムスタンプ。このフィールドはすべての準備ステップが完了した後に一度だけ入力され、さらに変更が追加されても更新されません。 |
project_id | 整数。 | マージリクエストプロジェクトの ID。 |
reference | 文字列です。 | マージリクエストの内部参照。デフォルトでは短縮形式で返されます。GitLab 12.7 で非推奨。API バージョン 5 で削除予定。代わりにreferences を使用してください。 |
references | オブジェクトを返します。 | マージリクエストの内部参照。short 、relative 、full の参照を含みます。references.relative はマージリクエストのグループまたはプロジェクトからの相対参照です。マージリクエストのプロジェクトから取得する場合、relative とshort の形式は同じです。グループまたはプロジェクトを越えて要求された場合、relative とfull の書式は同じです。 |
reviewers | アレイ | マージリクエストのレビュアー。 |
sha | 文字列です。 | マージリクエストの差分ヘッドの SHA。 |
should_remove_source_branch | boolean | マージリクエストのソースブランチをマージ後に削除するかどうかを示します。 |
source_branch | 文字列です。 | マージリクエストのソースブランチ。 |
source_project_id | 整数。 | マージリクエストソースプロジェクトの ID。 |
squash | boolean | マージ時のスカッシュが有効かどうかを示します。 |
squash_commit_sha | 文字列です。 | squashコミットのSHA。マージされるまでは空です。 |
state | 文字列です。 | マージリクエストの状態。opened ,closed ,merged またはlocked のいずれかです。 |
subscribed | boolean | 現在認証されているユーザーがこのマージリクエストを購読しているかどうかを示します。 |
target_branch | 文字列です。 | マージリクエストの対象ブランチ。 |
target_project_id | 整数。 | マージリクエストの対象プロジェクトの ID。 |
task_completion_status | オブジェクトを返します。 | タスクの完了状況 |
title | 文字列です。 | マージリクエストのタイトル。 |
updated_at | datetime | マージリクエストが更新されたときのタイムスタンプ。 |
upvotes | 整数。 | マージリクエストのアップボートの数。 |
user | オブジェクトを返します。 | マージリクエストに要求されたユーザーの権限。 |
user_notes_count | 整数。 | マージリクエストのユーザーメモカウント。 |
web_url | 文字列です。 | マージリクエストのウェブURL。 |
work_in_progress | boolean | 非推奨:代わりに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_status
がcannot_be_merged
でない限り、false
を返します。
マージステータス
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"
}
]
単一のマージリクエストの変更を取得します。
ファイルや変更点を含むマージリクエストに関する情報を表示します。
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_diffs | boolean | なし | 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_file | boolean | ファイルが追加されたかどうかを示します。 |
renamed_file | boolean | ファイルがリネームされているかどうかを示します。 |
deleted_file | boolean | ファイルが削除されたかどうかを示します。 |
リクエストの例
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_collaboration | boolean | なし | 対象ブランチにマージできるメンバーからのコミットを許可します。 |
approvals_before_merge
| 整数。 | なし | マージ前に必要な承認者の数 (以下を参照)。承認者ルールを設定するには、マージリクエスト承認者APIを参照してください。GitLab 16.0 で非推奨。 |
allow_maintainer_to_push | boolean | なし |
allow_collaboration のエイリアス。 |
assignee_id | 整数。 | なし | 担当者ユーザーID。 |
assignee_ids | 整数配列。 | なし | マージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0 または空の値を設定します。 |
description | 文字列です。 | なし | マージリクエストの説明。1,048,576文字に制限されています。 |
labels | 文字列です。 | なし | コンマで区切られたリストとしてのマージリクエストのラベル。 |
milestone_id | 整数。 | なし | マイルストーンのグローバルID。 |
remove_source_branch | boolean | なし | マージリクエストがマージ時にソースブランチを削除するかどうかを示すフラグ。 |
reviewer_ids | 整数配列。 | なし | マージリクエストにレビュアーとして追加されるユーザーのID。0 に設定するか、空のままにすると、レビュアーは追加されません。GitLab 13.8 で導入されました。 |
squash | boolean | なし | マージ時にマージリクエストがつぶされるように設定されているかどうかを示します。プロジェクトの設定がこの値を上書きする場合があります。 |
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_collaboration | boolean | なし | 対象ブランチにマージできるメンバーからのコミットを許可します。 |
allow_maintainer_to_push | boolean | なし |
allow_collaboration のエイリアス。 |
assignee_id | 整数。 | なし | マージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0 に設定するか、空の値を指定します。 |
assignee_ids | 整数配列。 | なし | マージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0 または空の値を設定します。 |
description | 文字列です。 | なし | マージリクエストの説明。1,048,576文字に制限されています。 |
discussion_locked | boolean | なし | マージリクエストのディスカッションがロックされているかどうかを示すフラグ。ディスカッションがロックされている場合、プロジェクトメンバーだけがコメントを追加、編集、解決することができます。 |
labels | 文字列です。 | なし | マージリクエストのカンマ区切りのラベル名。すべてのラベルの割り当てを解除するには、空の文字列を設定します。 |
milestone_id | 整数。 | なし | マージリクエストを割り当てるマイルストーンのグローバル ID。マイルストーンの割り当てを解除するには、0 に設定するか、空の値を指定します。 |
remove_labels | 文字列です。 | なし | マージリクエストから削除するカンマ区切りのラベル名。 |
remove_source_branch | boolean | なし | マージリクエストがマージ時にソースブランチを削除するかどうかを示すフラグ。 |
reviewer_ids | 整数配列。 | なし | マージリクエストにレビュアーとして設定されたユーザーのID。値を0 に設定するか、すべてのレビュアーに設定しない場合は空の値を指定してください。GitLab 13.8 で導入されました。 |
squash | boolean | なし | マージ時にマージリクエストがつぶされるように設定されているかどうかを示します。プロジェクトの設定がこの値を上書きする場合があります。 |
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_succeeds | boolean | なし |
true の場合、パイプラインが成功するとマージリクエストはマージされます。 |
sha | 文字列です。 | なし | 存在する場合、この SHA はソースブランチの HEAD と一致しなければならず、一致しない場合はマージに失敗します。 |
should_remove_source_branch | boolean | なし |
true の場合、ソースブランチを削除します。 |
squash_commit_message | 文字列です。 | なし | カスタムスクワッシュコミットメッセージ。 |
squash | boolean | なし |
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 ステータス | メッセージ | 理由 |
---|---|---|
401 | Unauthorized | このユーザーにはこのマージリクエストを受け付ける権限がありません。 |
405 | Method Not Allowed | マージリクエストはマージできません。 |
409 | SHA does not match HEAD of source branch | 指定されたsha パラメータがソースの HEAD と一致しません。 |
422 | Branch 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 ステータス | メッセージ | 理由 |
---|---|---|
401 | Unauthorized | このユーザーにはこのマージリクエストをキャンセルする権限がありません。 |
405 | Method Not Allowed | マージリクエストはすでにマージされているか、クローズされています。 |
406 | Not 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_ci | boolean | なし | 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_refs
とchanges_count
フィールドは最初は空です。これらのフィールドはマージリクエストが作成された後に非同期に入力されます。詳細については、イシューSome merge request API fields (diff_refs
,changes_count
) empty after MR is created、および GitLab フォーラムの関連ディスカッションを参照してください。