正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

マージリクエストAPI

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

このマージリクエストを管理するには、このAPIを使用します。次のことができます:

  • コードレビュープロセスのあらゆる部分を自動化します。
  • コードの変更を外部ツールに接続します。
  • 任意に指定した形式で、マージリクエスト情報を非GitLabシステムに送信します。
  • 外部システムからのデータに基づいて、マージリクエストの更新、承認、マージ、またはブロックを行います。

非公開情報に対するすべてのAPIコールには、認証が必要です。

API v5での削除

approvals_before_merge属性は非推奨であり、API v5で削除される予定です。代わりにマージリクエスト承認APIが推奨されます。

マージリクエストのリストを取得する

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

stateパラメータを使用して、指定された状態(openedclosedlockedmerged)のマージリクエストのみを取得するか、すべての状態(all)のマージリクエストを取得します。lockedは短期間であり一時的なため、通常、この状態で検索すると結果は返されません。マージリクエストのリストを制限するには、ページネーションパラメータ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?scope=reviews_for_me
GET /merge_requests?search=foo&in=title

サポートされている属性:

属性必須説明
approved_by_ids整数の配列いいえ指定されたidを持つすべてのユーザー(最大5人のユーザー)が承認したマージリクエストを返します。Noneは承認のないマージリクエストを返します。Anyは承認のあるマージリクエストを返します。PremiumおよびUltimateのみです。
approver_ids整数の配列いいえ指定されたidを持つすべてのユーザーを個別の承認者として指定したマージリクエストを返します。Noneは承認者のないマージリクエストを返します。Anyは承認者のあるマージリクエストを返します。PremiumおよびUltimateのみです。
assignee_id整数いいえ指定されたユーザーidに割り当てられたマージリクエストを返します。Noneは未割り当てのマージリクエストを返します。Anyは担当者に割り当てられているマージリクエストを返します。
author_id整数いいえ指定されたユーザーidが作成したマージリクエストを返します。author_usernameと相互に排他的です。scope=allまたはscope=assigned_to_meと組み合わせて指定します。
author_username文字列いいえ指定されたusernameが作成したマージリクエストを返します。author_idと相互に排他的です。
created_after日時いいえ指定された時刻以降に作成されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
created_before日時いいえ指定された時刻以前に作成されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
deployed_after日時いいえ指定された日時より後にデプロイされたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
deployed_before日時いいえ指定された日時より前にデプロイされたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
environment文字列いいえ指定された環境にデプロイされたマージリクエストを返します。
in文字列いいえsearch属性のスコーピングを変更します(titledescription、またはこれらをカンマで結合した文字列)。デフォルトはtitle,descriptionです。
labels文字列いいえカンマ区切りのラベルのリストに一致するマージリクエストを返します。Noneは、ラベルのないすべてのマージリクエストをリストします。Anyは、少なくとも1つのラベルを持つすべてのマージリクエストをリストします。定義済みの名前では大文字と小文字が区別されません。
merge_user_id整数いいえ指定されたユーザーidによってマージされたマージリクエストを返します。merge_user_usernameと相互に排他的です。GitLab 17.0で導入されました。
merge_user_username文字列いいえ指定されたusernameを持つユーザーによってマージされたマージリクエストを返します。merge_user_idと相互に排他的です。GitLab 17.0で導入されました。
milestone文字列いいえ特定のマイルストーンに対するマージリクエストを返します。Noneは、マイルストーンのないマージリクエストをリストします。Anyは、割り当てられたマイルストーンを持つマージリクエストをリストします。
my_reaction_emoji文字列いいえ認証されたユーザーが、指定されたemojiでリアクションしたマージリクエストを返します。Noneは、リアクションがないマージリクエストを返します。Anyは、1つ以上のリアクションがあるマージリクエストを返します。
notハッシュいいえ指定されたパラメータに一致しないマージリクエストを返します。labelsmilestoneauthor_idauthor_usernameassignee_idassignee_usernamereviewer_idreviewer_usernamemy_reaction_emojiを指定できます。
order_by文字列いいえcreated_attitlemerged_at(GitLab 17.2で導入)、またはupdated_atフィールドで並べ替えられたリクエストを返します。デフォルトはcreated_atです。
render_htmlブール値いいえtrueの場合、レスポンスには、レンダリングされたHTMLフィールドtitle_htmldescription_htmlが含まれます。
reviewer_id整数いいえ指定されたユーザーidのユーザーがレビュアーであるマージリクエストを返します。Noneはレビュアーのいないマージリクエストを、Anyはレビュアーのいるマージリクエストを返します。reviewer_usernameと相互に排他的です。
reviewer_username文字列いいえ指定されたusernameのユーザーがレビュアーであるマージリクエストを返します。Noneはレビュアーのいないマージリクエストを、Anyはレビュアーのいるマージリクエストを返します。reviewer_idと相互に排他的です。
scope文字列いいえ指定されたスコープ(created_by_meassigned_to_mereviews_for_me、またはall)のマージリクエストを返します。デフォルトはcreated_by_meです。reviews_for_meは、現在のユーザーがレビュアーとして割り当てられているマージリクエストを返します。
search文字列いいえtitledescriptionでマージリクエストを検索します。
sort文字列いいえascまたはdescの順にソートされたリクエストを返します。デフォルトはdescです。
source_branch文字列いいえ指定されたソースブランチを持つマージリクエストを返します。
state文字列いいえすべてのマージリクエスト(opened)、またはclosedlockedmerged、 のマージリクエストのみを返します。
target_branch文字列いいえ指定されたターゲットブランチを持つマージリクエストを返します。
updated_after日時いいえ指定された時刻以降に更新されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
updated_before日時いいえ指定された時刻以前に更新されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
view文字列いいえsimpleの場合、iid、URL、タイトル、説明、およびマージリクエストの基本的な状態を返します。
with_labels_detailsブール値いいえtrueの場合、レスポンスではラベルフィールドの各ラベルに関する詳細(:name:color:description:description_html:text_color)が返されます。デフォルトはfalseです。
with_merge_status_recheckブール値いいえtrueの場合、このプロジェクションはmerge_statusフィールドの非同期再計算をリクエストします(ただし保証はしません)。restrict_merge_status_recheck 機能フラグを有効にして、デベロッパー以上のロールを持たないユーザーがリクエストした場合にこの属性を無視します。
wip文字列いいえwipステータスでマージリクエストをフィルタリングします。ドラフトマージリクエストのみを返す場合はyesを使用し、ドラフト以外のマージリクエストを返す場合はnoを使用します。

成功すると、200 OKを返します。viewsimpleに設定されている場合、フィールドのサブセットが返されます。それ以外の場合、レスポンス属性には以下が含まれます:

属性説明
allow_collaborationブール値trueの場合、このフォークは、ターゲットブランチにマージできるメンバーからのコラボレーションを許可します。フォークからのマージリクエストにのみ使用されます。
allow_maintainer_to_pushブール値非推奨。代わりにallow_collaborationを使用してください。
approvals_before_merge整数GitLab 16.0で非推奨になりました。承認ルールを設定するには、代わりにマージリクエストAPIを参照してください。GitLab PremiumおよびUltimateのみです。
assignee[]オブジェクト非推奨。代わりにassigneesを使用してください。
assignees[]配列マージリクエストに割り当てられたユーザー。
assignees.avatar_url文字列アサイニーのアバターイメージへのフルURL。
assignees.id整数アサイニーの一意のID。
assignees.lockedブール値trueの場合、認証の試行に失敗したため、アサイニーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
assignees.name文字列アサイニーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
assignees.public_email文字列アサイニーの公開メールアドレス。
assignees.state文字列アサイニーのユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
assignees.username文字列マージリクエストのアサイニーのユーザー名。
assignees.web_url文字列アサイニーのプロファイルページへのフルURL。
author[]オブジェクトマージリクエストを作成したユーザーに関する情報を含むオブジェクト。
author.avatar_url文字列作成者のアバターイメージへのフルURL。
author.id整数マージリクエストを作成したユーザーの一意のID。
author.lockedブール値trueの場合、認証の試行に失敗したため、作成者のアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
author.name文字列作成者の表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
author.public_email文字列作成者の公開メールアドレス。
author.state文字列ユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
author.username文字列マージリクエストの作成者のユーザー名。
author.web_url文字列作成者のプロファイルページへのフルURL。
blocking_discussions_resolvedブール値trueの場合、マージリクエストのすべてのディスカッションスレッドは、マージする前に解決される必要があります。
closed_at日時マージリクエストがクローズされた時点のタイムスタンプ。
closed_by[]オブジェクトマージリクエストを閉じたユーザーに関する情報を含むオブジェクト。nullの場合、マージリクエストはオープンです。
closed_by.avatar_url文字列終了ユーザーのアバターイメージへのフルURL。
closed_by.id整数マージリクエストを閉じたユーザーの一意のID。
closed_by.lockedブール値trueの場合、認証の試行に失敗したため、終了ユーザーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
closed_by.name文字列終了ユーザーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
closed_by.public_email文字列終了ユーザーの公開メールアドレス。
closed_by.state文字列終了ユーザーのアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
closed_by.username文字列マージリクエストを閉じたユーザーのユーザー名。
closed_by.web_url文字列終了ユーザーのプロファイルページへのフルURL。
created_at日時マージリクエスト作成時のタイムスタンプ。
description文字列マージリクエストの説明。キャッシュ用にHTMLとしてレンダリングされたMarkdownが含まれます。
description_html文字列render_htmlが設定されている場合、descriptionのレンダリングされたHTMLバージョン。
detailed_merge_status文字列マージステータスの詳細情報。使用可能な値のリストについては、マージ状態を参照してください。
discussion_lockedブール値trueの場合、ディスカッションはロックされます。ロックされているディスカッションでは、プロジェクトメンバーのみがコメントの追加、編集、解決が可能です。
downvotes整数マージリクエストの同意しない数。
draftブール値trueの場合、マージリクエストはdraftの状態でマークされます。
force_remove_source_branchブール値trueの場合、プロジェクト設定により、マージ後にソースブランチが強制的に削除されます。
has_conflictsブール値trueの場合、マージリクエストには競合があり、マージできません。merge_statusプロパティに依存します。merge_statuscannot_be_mergedでない限り、falseを返します。
id整数マージリクエストの一意のID。
iid整数プロジェクト内のマージリクエストの内部ID。
importedブール値trueの場合、マージリクエストがインポートされました。
imported_from文字列Bitbucketなどのインポート元。
labels[]配列マージリクエストに割り当てられたラベルの配列。with_labels_detailstrueの場合、各ラベルの配列を返します。
labels.archivedブール値with_labels_detailstrueの場合、ラベルはアーカイブされます。
labels.color文字列with_labels_detailstrueの場合、ラベルの背景色。
labels.description文字列with_labels_detailstrueの場合、ラベルのdescriptionテキスト。nullの場合、ラベルにdescriptionはありません。
labels.description_html文字列with_labels_detailstrueの場合、ラベルのHTMLでレンダリングされたdescription。nullの場合、ラベルにdescriptionはありません。
labels.id整数with_labels_detailstrueの場合、ラベルの一意のID。
labels.name文字列with_labels_detailstrueの場合、ラベルの名前。
labels.text_color文字列with_labels_detailstrueの場合、ラベルのテキストカラー。
merge_after日時設定されている場合、マージリクエストをマージできるタイムスタンプ。GitLab 17.8で導入されました。
merge_commit_sha文字列設定されている場合、マージリクエストコミットのSHA。マージされるまでnullを返します。
merge_status文字列マージリクエストの状態。すべての潜在的なステータスを考慮する代わりに、detailed_merge_statusを使用してください。has_conflictsプロパティに影響します。レスポンスデータに関する重要な注意点については、単一マージリクエストのレスポンスに関する注意点を参照してください。GitLab 15.6で非推奨になりました。
merge_userオブジェクトマージリクエストをマージ、自動マージに設定したユーザー、またはnullに関する情報を含むオブジェクト。
merge_when_pipeline_succeedsブール値trueの場合、マージリクエストは自動マージに設定されています。
merged_at日時マージリクエストがマージされた時点のタイムスタンプ。
merged_by[]オブジェクト非推奨。代わりにmerge_userを使用してください。
milestone[]オブジェクトマージリクエストに割り当てられたマイルストーンに関する情報を含むオブジェクト。
milestone.created_at日時マイルストーンが作成されたときのタイムスタンプ。
milestone.description文字列マイルストーンのdescriptionテキスト。nullの場合、マイルストーンにdescriptionはありません。
milestone.due_date日付マイルストーンの期日。nullの場合、マイルストーンに期日はありません。
milestone.expiredブール値trueの場合、マイルストーンは期限切れになっています。
milestone.group_id整数マイルストーンが属するグループのID。マイルストーンがグループマイルストーンである場合にのみ含まれます。
milestone.id整数マイルストーンの一意のID。
milestone.iid整数プロジェクトまたはグループ内のマイルストーンの内部ID。
milestone.project_id整数マイルストーンが属するプロジェクトのID。マイルストーンがプロジェクトマイルストーンである場合にのみ含まれます。
milestone.start_date日付マイルストーンの開始日。nullの場合、マイルストーンに開始日はありません
milestone.state文字列activeclosedなど、マイルストーンの現在の状態。
milestone.title文字列マイルストーンのタイトル。
milestone.updated_at日時マイルストーンが最後に更新されたときのタイムスタンプ。
milestone.web_url文字列マイルストーンを表示するための完全なWeb URL。
prepared_at日時マージリクエストが準備されたときのタイムスタンプ。このフィールドは、すべての準備手順が完了した後に1回だけ入力され、それ以上の変更が加えられても更新されません。
project_id整数マージリクエストを含むプロジェクトのID。
reference文字列非推奨。代わりにreferencesを使用してください。
references[]オブジェクトマージリクエストのすべての内部参照を含むオブジェクト。
references.full文字列gitlab-org/gitlab!123のような、完全なプロジェクトパスを含む、マージリクエストへの完全な参照。グループまたはプロジェクト全体でリクエストされた場合、references.relativeと同一です。
references.relative文字列特定のプロジェクトまたはグループに対する相対参照: 現在のプロジェクトのマージリクエストの場合は!123、同じグループ内の別のプロジェクトの場合はother-project!123
references.short文字列!123のような、マージリクエストへの可能な限り短い参照。マージリクエストのプロジェクトからフェッチされた場合、references.relativeと同一です。
reviewers[]配列マージリクエストのレビュアー。
reviewers.avatar_url文字列レビュアーのアバターイメージへのフルURL。
reviewers.id整数レビュアーの一意のID。
reviewers.lockedブール値trueの場合、認証の試行に失敗したため、レビュアーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
reviewers.name文字列レビュアーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
reviewers.public_email文字列レビュアーの公開メールアドレス。
reviewers.state文字列レビュアーのユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
reviewers.username文字列マージリクエストのレビュアーのユーザー名。
reviewers.web_url文字列レビュアーのプロファイルページへのフルURL。
sha文字列ソースブランチ内のHEADコミットのSHA。
should_remove_source_branchブール値trueの場合、マージ後にソースブランチは削除されます。
source_branch文字列ソースブランチの名前。
source_project_id整数ソースブランチのID。
squashブール値trueの場合、マージ時にコミットをスカッシュします。
squash_commit_sha文字列設定されている場合、スカッシュコミットのSHA。マージされるまで空です。
squash_on_mergeブール値trueの場合、コミットはマージ時にスカッシュされます。
state文字列マージリクエストの現在の状態。使用可能な値: openedclosedmerged、またはlocked
target_branch文字列ターゲットブランチの名前。
target_project_id整数ターゲットプロジェクトのID(数値)。
task_completion_status[]オブジェクトタスクリスト完了ステータスに関する情報を含むオブジェクト。
task_completion_status.completed_count整数マージリクエストdescriptionで完了したタスクリスト項目の数。マージリクエストにdescriptionまたはタスクリスト項目がない場合、0を返します。
task_completion_status.count整数マージリクエストdescriptionで見つかったタスクリスト項目の総数。マージリクエストにdescriptionまたはタスクリスト項目がない場合、0を返します。
time_stats[]オブジェクトこのマージリクエストのタイムトラッキングに関する情報を含むオブジェクト。
time_stats.human_time_estimate文字列time_stats.time_estimateの人間が読める形式(3h 30mなど)。
time_stats.human_total_time_spent文字列time_stats.total_time_spentの人間が読める形式(3h 30mなど)。
time_stats.time_estimate整数マージリクエストを完了するまでの推定時間(秒)。
time_stats.total_time_spent整数マージリクエストの作業に費やした合計時間(秒単位)。
title文字列マージリクエストのタイトル。
title_html文字列render_htmltrueの場合、タイトルのレンダリングされたHTMLバージョン。
updated_at日時マージリクエストの最終更新時のタイムスタンプ。
upvotes整数マージリクエストへの同意数。
user_notes_count整数ユーザーコメントの数。
web_url文字列マージリクエストを表示するためのWeb URL。
work_in_progressブール値非推奨。代わりにdraftを使用してください。

その他の発生しうる応答:

  • アクセストークンが無効な場合は401 Unauthorized
  • 408 Request Timeoutデータベースデータベースクエリがタイムアウトした場合。
  • 422 Unprocessable Entity検証に失敗した場合。
  • 429 Too Many Requests searchパラメータを使用している場合にリクエストがレート制限されている場合。

レスポンス例:

[
  {
    "id": 1,
    "iid": 1,
    "project_id": 3,
    "title": "test1",
    "description": "fixed login page css paddings",
    "state": "merged",
    "imported": false,
    "imported_from": "none",
    "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",
    "merge_after": "2018-09-07T11:16:00.000Z",
    "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": "main",
    "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
    }
  }
]

マージリクエストリストのレスポンスに関する注記

  • マージリクエストのリスト取得では、merge_statusがプロアクティブに更新されない場合があります(has_conflictsにも影響します)。これは、コストのかかる操作になる可能性があるためです。このエンドポイントからこれらのフィールドの値が必要な場合は、クエリのwith_merge_status_recheckパラメータをtrueに設定します。
  • マージリクエストオブジェクトフィールドに関する注意事項については、単一マージリクエストのレスポンスに関する注意事項を参照してください。

プロジェクトマージリクエストのリストを取得する

このプロジェクトのすべてのマージリクエストを取得するには、次を実行します。

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

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
approved_by_ids整数の配列いいえ指定されたidを持つすべてのユーザー(最大5人のユーザー)が承認したマージリクエストを返します。Noneは承認のないマージリクエストを返します。Anyは承認のあるマージリクエストを返します。PremiumおよびUltimateのみです。
approver_ids整数の配列いいえ指定されたidを持つすべてのユーザーを個別の承認者として指定したマージリクエストを返します。Noneは承認者のないマージリクエストを返します。Anyは承認者のあるマージリクエストを返します。PremiumおよびUltimateのみです。
assignee_id整数いいえ指定されたユーザーidに割り当てられたマージリクエストを返します。Noneは未割り当てのマージリクエストを返します。Anyは担当者に割り当てられているマージリクエストを返します。
author_id整数いいえ指定されたユーザーidが作成したマージリクエストを返します。author_usernameと相互に排他的です。
author_username文字列いいえ指定されたusernameが作成したマージリクエストを返します。author_idと相互に排他的です。
created_after日時いいえ指定された時刻以降に作成されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
created_before日時いいえ指定された時刻以前に作成されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
environment文字列いいえ指定された環境にデプロイされたマージリクエストを返します。
iids[]整数の配列いいえ指定されたiidを持つリクエストを返します。
labels文字列いいえカンマ区切りのラベルのリストに一致するマージリクエストを返します。Noneは、ラベルのないすべてのマージリクエストをリストします。Anyは、少なくとも1つのラベルを持つすべてのマージリクエストをリストします。定義済みの名前では大文字と小文字が区別されません。
merge_user_id整数いいえ指定されたユーザーidによってマージされたマージリクエストを返します。merge_user_usernameと相互に排他的です。GitLab 17.0で導入されました。
merge_user_username文字列いいえ指定されたusernameを持つユーザーによってマージされたマージリクエストを返します。merge_user_idと相互に排他的です。GitLab 17.0で導入されました。
milestone文字列いいえ特定のマイルストーンに対するマージリクエストを返します。Noneは、マイルストーンのないマージリクエストをリストします。Anyは、割り当てられたマイルストーンを持つマージリクエストをリストします。
my_reaction_emoji文字列いいえ認証されたユーザーが、指定されたemojiでリアクションしたマージリクエストを返します。Noneは、リアクションがないマージリクエストを返します。Anyは、1つ以上のリアクションがあるマージリクエストを返します。
notハッシュいいえ指定されたパラメータに一致しないマージリクエストを返します。labelsmilestoneauthor_idauthor_usernameassignee_idassignee_usernamereviewer_idreviewer_usernamemy_reaction_emojiを指定できます。
order_by文字列いいえcreated_attitle、またはupdated_atフィールドで並べ替えられたリクエストを返します。デフォルトはcreated_atです。
reviewer_id整数いいえ指定されたユーザーidのユーザーがレビュアーであるマージリクエストを返します。Noneはレビュアーのいないマージリクエストを、Anyはレビュアーのいるマージリクエストを返します。reviewer_usernameと相互に排他的です。
reviewer_username文字列いいえ指定されたusernameのユーザーがレビュアーであるマージリクエストを返します。Noneはレビュアーのいないマージリクエストを、Anyはレビュアーのいるマージリクエストを返します。reviewer_idと相互に排他的です。
scope文字列いいえ指定されたスコープ(created_by_meassigned_to_me、またはall)のマージリクエストを返します。
search文字列いいえtitledescriptionでマージリクエストを検索します。
sort文字列いいえascまたはdescの順にソートされたリクエストを返します。デフォルトはdescです。
source_branch文字列いいえ指定されたソースブランチを持つマージリクエストを返します。
state文字列いいえすべてのマージリクエスト(all)または、openedclosedlocked、あるいはmergedのみを返します。
target_branch文字列いいえ指定されたターゲットブランチを持つマージリクエストを返します。
updated_after日時いいえ指定された時刻以降に更新されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
updated_before日時いいえ指定された時刻以前に更新されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
view文字列いいえsimpleの場合、iid、URL、タイトル、説明、およびマージリクエストの基本的な状態を返します。
wip文字列いいえwipのステータスでマージリクエストをフィルタリングします。yesはドラフトのマージリクエストのみを返し、noはドラフト以外のマージリクエストを返します。
with_labels_detailsブール値いいえtrueの場合、レスポンスではラベルフィールドの各ラベルに関する詳細(:name:color:description:description_html:text_color)が返されます。デフォルトはfalseです。
with_merge_status_recheckブール値いいえtrueの場合、このプロジェクションはmerge_statusフィールドの非同期再計算をリクエストします(ただし保証はしません)。restrict_merge_status_recheck 機能フラグを有効にして、デベロッパー以上のロールを持たないユーザーがリクエストした場合にこの属性を無視します。

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

属性説明
[].id整数マージリクエストのID。
[].iid整数マージリクエストの内部ID。
[].approvals_before_merge整数このマージリクエストがマージされる前に必要な承認の数。承認ルールを設定するには、マージリクエスト承認APIを参照してください。GitLab 16.0で非推奨になりました。PremiumおよびUltimateのみです。
[].assigneeオブジェクトマージリクエストの最初の担当者。
[].assignees配列マージリクエストの担当者。
[].authorオブジェクトこのマージリクエストを作成したユーザー。
[].blocking_discussions_resolvedブール値マージリクエストをマージする前に、すべてのディスカッションが必須な場合にのみ、すべてのディスカッションが解決されるかどうかを示します。
[].closed_at日時マージリクエストがクローズされた時点のタイムスタンプ。
[].closed_byオブジェクトこのマージリクエストをクローズしたユーザー。
[].created_at日時マージリクエスト作成時のタイムスタンプ。
[].description文字列マージリクエストの説明。
[].detailed_merge_status文字列マージリクエストの詳細なマージ状態。使用可能な値のリストについては、マージ状態を参照してください。
[].discussion_lockedブール値マージリクエストのコメントがメンバーのみにロックされているかどうかを示します。
[].downvotes整数マージリクエストの同意しない数。
[].draftブール値マージリクエストがドラフトかどうかを示します。
[].force_remove_source_branchブール値プロジェクトの設定で、マージ後にソースブランチを削除するかどうかを示します。
[].has_conflictsブール値マージリクエストに競合があり、マージできないかどうかを示します。merge_statusプロパティに依存します。falsemerge_statusでない限り、cannot_be_mergedを返します。
[].labels配列マージリクエストのラベル。
[].merge_commit_sha文字列マージリクエストのコミットのSHA。マージされるまでnullを返します。
[].merge_status文字列マージリクエストの状態。uncheckedcheckingcan_be_mergedcannot_be_merged、またはcannot_be_merged_recheckのいずれかです。has_conflictsプロパティに影響します。レスポンスデータに関する重要な注意点については、単一マージリクエストのレスポンスに関する注意点を参照してください。GitLab 15.6で非推奨になりました。代わりにdetailed_merge_statusを使用してください。
[].merge_userオブジェクトこのマージリクエストをマージしたユーザー、自動マージに設定したユーザー、またはnull
[].merge_when_pipeline_succeedsブール値マージリクエストが自動マージに設定されているかどうかを示します。
[].merged_at日時マージリクエストがマージされたときのタイムスタンプ。
[].merged_byオブジェクトこのマージリクエストをマージしたユーザー、または自動マージに設定したユーザー。GitLab 14.7で非推奨となり、APIバージョン5で削除される予定です。代わりにmerge_userを使用してください。
[].milestoneオブジェクトマージリクエストのマイルストーン。
[].prepared_at日時マージリクエストが準備されたときのタイムスタンプ。このフィールドは、すべての準備ステップが完了した後に1回だけ入力され、変更が追加されても更新されません。
[].project_id整数マージリクエストが存在するプロジェクトのID。常にtarget_project_idと等しくなります。
[].reference文字列マージリクエストの内部参照。デフォルトでは短縮形式で返されます。GitLab 12.7で非推奨となり、APIバージョン5で削除される予定です。代わりにreferencesを使用してください。
[].referencesオブジェクトマージリクエストの内部参照。shortrelative、およびfull参照が含まれます。references.relativeはマージリクエストのグループまたはプロジェクトに対して相対的です。マージリクエストのプロジェクトからフェッチされた場合、relative形式とshort形式は同一です。グループまたはプロジェクト全体でリクエストされた場合、relative形式とfull形式は同一です。
[].reviewers配列マージリクエストのレビュアー。
[].sha文字列マージリクエストの差分ヘッドSHA。
[].should_remove_source_branchブール値マージ後にソースブランチを削除するかどうかを示します。
[].source_branch文字列マージリクエストのソースブランチ。
[].source_project_id整数マージリクエストのソースプロジェクトのID。マージリクエストの起点にフォークがない限り、target_project_idと同じです。
[].squashブール値trueの場合、マージ時にすべてのコミットを単一のコミットにスカッシュします。プロジェクト設定によって、この値がオーバーライドされる可能性があります。プロジェクトのスカッシュ設定を反映させたい場合は、代わりにsquash_on_mergeを使用してください。
[].squash_commit_sha文字列スカッシュコミットのSHA。マージされるまで空です。
[].squash_on_mergeブール値マージ時にマージリクエストをスカッシュするかどうかを示します。
[].state文字列マージリクエストの状態。openedclosedmergedlockedのいずれか。
[].target_branch文字列マージリクエストのターゲットブランチ。
[].target_project_id整数マージリクエストのターゲットプロジェクトのID。
[].task_completion_statusオブジェクトタスクの完了状態。countcompleted_countが含まれます。
[].time_statsオブジェクトマージリクエストのタイムトラッキング統計。time_estimatetotal_time_spenthuman_time_estimate、およびhuman_total_time_spentが含まれます。
[].title文字列マージリクエストのタイトル。
[].updated_at日時マージリクエストが更新された時のタイムスタンプ。
[].upvotes整数マージリクエストへの同意数。
[].user_notes_count整数マージリクエストのユーザーノート数。
[].web_url文字列マージリクエストのWeb URL。
[].work_in_progressブール値非推奨: 代わりにdraftを使用してください。マージリクエストがドラフトかどうかを示します。

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/merge_requests"

レスポンス例:

[
  {
    "id": 1,
    "iid": 1,
    "project_id": 3,
    "title": "test1",
    "description": "fixed login page css paddings",
    "state": "merged",
    "imported": false,
    "imported_from": "none",
    "merged_by": { // Deprecated and will be removed in API v5, use `merge_user` instead
      "id": 87854,
      "name": "Douwe Maan",
      "username": "DouweM",
      "state": "active",
      "locked": false,
      "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",
      "locked": false,
      "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",
    "merge_after": "2018-09-07T11:16:00.000Z",
    "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": "main",
    "source_branch": "test1",
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "locked": false,
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignee": {
      "id": 1,
      "name": "Administrator",
      "username": "admin",
      "state": "active",
      "locked": false,
      "avatar_url": null,
      "web_url" : "https://gitlab.example.com/admin"
    },
    "assignees": [{
      "name": "Miss Monserrate Beier",
      "username": "axel.block",
      "id": 12,
      "state": "active",
      "locked": false,
      "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,
    "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
    "reference": "!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,
    "squash_on_merge": false,
    "task_completion_status":{
      "count":0,
      "completed_count":0
    },
    "has_conflicts": false,
    "blocking_discussions_resolved": true,
    "approvals_before_merge": 2
  }
]

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

グループマージリクエストのリストを取得する

このグループとそのサブグループのすべてのマージリクエストを取得します。

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

サポートされている属性:

属性必須説明
id整数または文字列グループのIDまたはURLエンコードされたパス
approved文字列いいえyesの場合、承認されたマージリクエストのみが返されます。no承認されていないマージリクエストのみが返されます。
approved_by_ids整数の配列いいえ指定されたidを持つすべてのユーザー(最大5人のユーザー)が承認したマージリクエストを返します。Noneは承認のないマージリクエストを返します。Anyは承認のあるマージリクエストを返します。PremiumおよびUltimateのみです。
approved_by_usernames文字列配列いいえ指定されたusernameを持つすべてのユーザー(最大5人のユーザー)が承認したマージリクエストを返します。Noneは承認のないマージリクエストを返します。Anyは承認のあるマージリクエストを返します。PremiumおよびUltimateのみです。
approver_ids整数の配列いいえ指定されたidを持つすべてのユーザーを個別の承認者として指定したマージリクエストを返します。Noneは承認者のないマージリクエストを返します。Anyは承認者のあるマージリクエストを返します。PremiumおよびUltimateのみです。
assignee_id整数または文字列いいえ指定されたユーザーidに割り当てられたマージリクエストを返します。Noneは未割り当てのマージリクエストを返します。Anyは担当者に割り当てられているマージリクエストを返します。assignee_usernameと相互に排他的です。
assignee_username[]配列いいえ指定されたユーザー名に割り当てられたマージリクエストを返します。assignee_idと相互に排他的です。
author_id整数いいえ指定されたユーザーidが作成したマージリクエストを返します。author_usernameと相互に排他的です。
author_username文字列いいえ指定されたusernameが作成したマージリクエストを返します。author_idと相互に排他的です。
created_after日時いいえ指定された時刻以降に作成されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
created_before日時いいえ指定された時刻以前に作成されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
deployed_after日時いいえ指定された日時より後にデプロイされたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
deployed_before日時いいえ指定された日時より前にデプロイされたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
environment文字列いいえ指定された環境にデプロイされたマージリクエストを返します。
in文字列いいえ設定されている場合、検索属性のスコープを変更します。titledescription、または"title,description"のように、コンマで結合した文字列を使用できます
labels文字列いいえカンマ区切りのラベルのリストに一致するマージリクエストを返します。Noneは、ラベルのないすべてのマージリクエストをリストします。Anyは、少なくとも1つのラベルを持つすべてのマージリクエストをリストします。定義済みの名前では大文字と小文字が区別されません。
merge_user_id整数いいえ指定されたユーザーidによってマージされたマージリクエストを返します。merge_user_usernameと相互に排他的です。GitLab 17.0で導入されました。
merge_user_username文字列いいえ指定されたusernameを持つユーザーによってマージされたマージリクエストを返します。merge_user_idと相互に排他的です。GitLab 17.0で導入されました。
milestone文字列いいえ特定のマイルストーンに対するマージリクエストを返します。Noneは、マイルストーンのないマージリクエストをリストします。Anyは、割り当てられたマイルストーンを持つマージリクエストをリストします。
my_reaction_emoji文字列いいえ認証されたユーザーが、指定されたemojiでリアクションしたマージリクエストを返します。Noneは、リアクションがないマージリクエストを返します。Anyは、1つ以上のリアクションがあるマージリクエストを返します。
non_archivedブール値いいえtrueの場合、アーカイブされていないプロジェクトからのマージリクエストのみを返します。デフォルトはtrueです。
notハッシュいいえ指定されたパラメータに一致しないマージリクエストを返します。指定できる項目:labelsmilestoneauthor_idauthor_usernameassignee_idassignee_usernamereviewer_idreviewer_usernamemy_reaction_emoji
order_by文字列いいえcreated_atlabel_prioritymerged_atmilestone_duepopularityprioritytitle、またはupdated_atフィールドでソートされたマージリクエストを返します。デフォルトはcreated_atです。
page整数いいえ現在のページ番号を返します。1がデフォルトです。
per_page整数いいえ返す1ページあたりの項目数。20がデフォルトです。
reviewer_id整数または文字列いいえ指定されたユーザーidのユーザーがレビュアーであるマージリクエストを返します。Noneはレビュアーのいないマージリクエストを、Anyはレビュアーのいるマージリクエストを返します。reviewer_usernameと相互に排他的です。
reviewer_username文字列いいえ指定されたusernameのユーザーがレビュアーであるマージリクエストを返します。Noneはレビュアーのいないマージリクエストを、Anyはレビュアーのいるマージリクエストを返します。reviewer_idと相互に排他的です。
scope文字列いいえ指定されたスコープ(created_by_meassigned_to_mereviews_for_me、またはall)のマージリクエストを返します。デフォルトはcreated_by_meです。reviews_for_meは、現在のユーザーがレビュアーとして割り当てられているマージリクエストを返します。
search文字列いいえtitledescriptionでマージリクエストを検索します。
source_branch文字列いいえ指定されたソースブランチを持つマージリクエストを返します。
source_project_id整数いいえ指定されたソースプロジェクトIDを持つマージリクエストを返します。
sort文字列いいえascまたはdescの順にソートされたマージリクエストを返します。デフォルトはdescです。
state文字列いいえすべてのマージリクエスト(opened)、またはclosedlockedmerged、 のマージリクエストのみを返します。allがデフォルトです。
target_branch文字列いいえ指定されたターゲットブランチを持つマージリクエストを返します。
updated_after日時いいえ指定された時刻以降に更新されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
updated_before日時いいえ指定された時刻以前に更新されたマージリクエストを返します。ISO 8601形式(2019-03-15T08:00:00Z)で指定します。
view文字列いいえsimpleの場合、iid、URL、タイトル、説明、およびマージリクエストの基本的な状態を返します。
with_labels_detailsブール値いいえtrueの場合、レスポンスではラベルフィールドの各ラベルに関する詳細(:name:color:description:description_html:text_color)が返されます。デフォルトはfalseです。
with_merge_status_recheckブール値いいえtrueの場合、merge_statusフィールドの非同期再計算をリクエストします(ただし保証されません)。restrict_merge_status_recheck 機能フラグを有効にして、デベロッパー以上のロールを持たないユーザーがリクエストした場合にこの属性を無視します。
wip文字列いいえwipステータスでマージリクエストをフィルタリングします。ドラフトマージリクエストのみを返す場合はyesを使用し、ドラフト以外のマージリクエストを返す場合はnoを使用します。

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

成功すると、200 OKを返します。viewsimpleに設定されている場合、フィールドのサブセットが返されます。それ以外の場合、レスポンス属性には以下が含まれます:

属性説明
allow_collaborationブール値trueの場合、このフォークは、ターゲットブランチにマージできるメンバーからのコラボレーションを許可します。フォークからのマージリクエストにのみ使用されます。
allow_maintainer_to_pushブール値非推奨。代わりにallow_collaborationを使用してください。
approvals_before_merge整数GitLab 16.0で非推奨になりました。承認ルールを設定するには、代わりにマージリクエストAPIを参照してください。GitLab PremiumおよびUltimateのみです。
assignee[]オブジェクト非推奨。代わりにassigneesを使用してください。
assignees[]配列マージリクエストに割り当てられたユーザー。
assignees.avatar_url文字列アサイニーのアバターイメージへのフルURL。
assignees.id整数アサイニーの一意のID。
assignees.lockedブール値trueの場合、認証の試行に失敗したため、アサイニーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
assignees.name文字列アサイニーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
assignees.public_email文字列アサイニーの公開メールアドレス。
assignees.state文字列アサイニーのユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
assignees.username文字列マージリクエストのアサイニーのユーザー名。
assignees.web_url文字列アサイニーのプロファイルページへのフルURL。
author[]オブジェクトマージリクエストを作成したユーザーに関する情報を含むオブジェクト。
author.avatar_url文字列作成者のアバターイメージへのフルURL。
author.id整数マージリクエストを作成したユーザーの一意のID。
author.lockedブール値trueの場合、認証の試行に失敗したため、作成者のアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
author.name文字列作成者の表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
author.public_email文字列作成者の公開メールアドレス。
author.state文字列ユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
author.username文字列マージリクエストの作成者のユーザー名。
author.web_url文字列作成者のプロファイルページへのフルURL。
blocking_discussions_resolvedブール値trueの場合、マージリクエストのすべてのディスカッションスレッドは、マージする前に解決される必要があります。
closed_at日時マージリクエストがクローズされた時点のタイムスタンプ。
closed_by[]オブジェクトマージリクエストを閉じたユーザーに関する情報を含むオブジェクト。nullの場合、マージリクエストはオープンです。
closed_by.avatar_url文字列終了ユーザーのアバターイメージへのフルURL。
closed_by.id整数マージリクエストを閉じたユーザーの一意のID。
closed_by.lockedブール値trueの場合、認証の試行に失敗したため、終了ユーザーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
closed_by.name文字列終了ユーザーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
closed_by.public_email文字列終了ユーザーの公開メールアドレス。
closed_by.state文字列終了ユーザーのアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
closed_by.username文字列マージリクエストを閉じたユーザーのユーザー名。
closed_by.web_url文字列終了ユーザーのプロファイルページへのフルURL。
created_at日時マージリクエスト作成時のタイムスタンプ。
description文字列マージリクエストの説明。キャッシュ用にHTMLとしてレンダリングされたMarkdownが含まれます。
detailed_merge_status文字列マージステータスの詳細情報。使用可能な値のリストについては、マージ状態を参照してください。
discussion_lockedブール値trueの場合、ディスカッションはロックされます。ロックされているディスカッションでは、プロジェクトメンバーのみがコメントの追加、編集、解決が可能です。
downvotes整数マージリクエストの同意しない数。
draftブール値trueの場合、マージリクエストはdraftの状態でマークされます。
force_remove_source_branchブール値trueの場合、プロジェクト設定により、マージ後にソースブランチが強制的に削除されます。
has_conflictsブール値trueの場合、マージリクエストには競合があり、マージできません。merge_statusプロパティに依存します。falsemerge_statusでない限り、cannot_be_mergedを返します。
id整数マージリクエストの一意のID。
iid整数プロジェクト内のマージリクエストの内部ID。
importedブール値trueの場合、マージリクエストがインポートされました。
imported_from文字列Bitbucketなどのインポート元。
labels[]配列マージリクエストに割り当てられたラベルの配列。with_labels_detailstrueの場合、各ラベルの配列を返します。
labels.archivedブール値with_labels_detailstrueの場合、ラベルはアーカイブされます。
labels.color文字列with_labels_detailstrueの場合、ラベルの背景色。
labels.description文字列with_labels_detailstrueの場合、ラベルのdescriptionテキスト。nullの場合、ラベルにdescriptionはありません。
labels.description_html文字列with_labels_detailstrueの場合、ラベルのHTMLでレンダリングされたdescription。nullの場合、ラベルにdescriptionはありません。
labels.id整数with_labels_detailstrueの場合、ラベルの一意のID。
labels.name文字列with_labels_detailstrueの場合、ラベルの名前。
labels.text_color文字列with_labels_detailstrueの場合、ラベルのテキストカラー。
merge_after日時設定されている場合、マージリクエストをマージできるタイムスタンプ。GitLab 17.8で導入されました。
merge_commit_sha文字列設定されている場合、マージリクエストコミットのSHA。マージされるまでnullを返します。
merge_status文字列マージリクエストの状態。すべての潜在的なステータスを考慮する代わりに、detailed_merge_statusを使用してください。has_conflictsプロパティに影響します。レスポンスデータに関する重要な注意点については、単一マージリクエストのレスポンスに関する注意点を参照してください。GitLab 15.6で非推奨になりました。
merge_userオブジェクトマージリクエストをマージ、自動マージに設定したユーザー、またはnullに関する情報を含むオブジェクト。
merge_when_pipeline_succeedsブール値trueの場合、マージリクエストは自動マージに設定されています。
merged_at日時マージリクエストがマージされた時点のタイムスタンプ。
merged_by[]オブジェクト非推奨。代わりにmerge_userを使用してください。
milestone[]オブジェクトマージリクエストに割り当てられたマイルストーンに関する情報を含むオブジェクト。
milestone.created_at日時マイルストーンが作成されたときのタイムスタンプ。
milestone.description文字列マイルストーンのdescriptionテキスト。nullの場合、マイルストーンにdescriptionはありません。
milestone.due_date日付マイルストーンの期日。nullの場合、マイルストーンに期日はありません。
milestone.expiredブール値trueの場合、マイルストーンは期限切れになっています。
milestone.group_id整数マイルストーンが属するグループのID。マイルストーンがグループマイルストーンである場合にのみ含まれます。
milestone.id整数マイルストーンの一意のID。
milestone.iid整数プロジェクトまたはグループ内のマイルストーンの内部ID。
milestone.project_id整数マイルストーンが属するプロジェクトのID。マイルストーンがプロジェクトマイルストーンである場合にのみ含まれます。
milestone.start_date日付マイルストーンの開始日。nullの場合、マイルストーンに開始日はありません
milestone.state文字列activeclosedなど、マイルストーンの現在の状態。
milestone.title文字列マイルストーンのタイトル。
milestone.updated_at日時マイルストーンが最後に更新されたときのタイムスタンプ。
milestone.web_url文字列マイルストーンを表示するための完全なWeb URL。
prepared_at日時マージリクエストが準備されたときのタイムスタンプ。このフィールドは、すべての準備手順が完了した後に1回だけ入力され、それ以上の変更が加えられても更新されません。
project_id整数マージリクエストを含むプロジェクトのID。
reference文字列非推奨。代わりにreferencesを使用してください。
references[]オブジェクトマージリクエストのすべての内部参照を含むオブジェクト。
references.full文字列gitlab-org/gitlab!123のような、完全なプロジェクトパスを含む、マージリクエストへの完全な参照。グループまたはプロジェクト全体でリクエストされた場合、references.relativeと同一です。
references.relative文字列特定のプロジェクトまたはグループに対する相対参照: 現在のプロジェクトのマージリクエストの場合は!123、同じグループ内の別のプロジェクトの場合はother-project!123
references.short文字列!123のような、マージリクエストへの可能な限り短い参照。マージリクエストのプロジェクトからフェッチされた場合、references.relativeと同一です。
reviewers[]配列マージリクエストのレビュアー。
reviewers.avatar_url文字列レビュアーのアバターイメージへのフルURL。
reviewers.id整数レビュアーの一意のID。
reviewers.lockedブール値trueの場合、認証の試行に失敗したため、レビュアーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
reviewers.name文字列レビュアーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
reviewers.public_email文字列レビュアーの公開メールアドレス。
reviewers.state文字列レビュアーのユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
reviewers.username文字列マージリクエストのレビュアーのユーザー名。
reviewers.web_url文字列レビュアーのプロファイルページへのフルURL。
sha文字列ソースブランチ内のHEADコミットのSHA。
should_remove_source_branchブール値trueの場合、マージ後にソースブランチは削除されます。
source_branch文字列ソースブランチの名前。
source_project_id整数ソースブランチのID。
squashブール値trueの場合、マージ時にコミットをスカッシュします。
squash_commit_sha文字列設定されている場合、スカッシュコミットのSHA。マージされるまで空です。
squash_on_mergeブール値trueの場合、コミットはマージ時にスカッシュされます。
state文字列マージリクエストの現在の状態。使用可能な値: openedclosedmerged、またはlocked
target_branch文字列ターゲットブランチの名前。
target_project_id整数ターゲットプロジェクトのID(数値)。
task_completion_status[]オブジェクトタスクリスト完了ステータスに関する情報を含むオブジェクト。
task_completion_status.completed_count整数マージリクエストdescriptionで完了したタスクリスト項目の数。マージリクエストにdescriptionまたはタスクリスト項目がない場合、0を返します。
task_completion_status.count整数マージリクエストdescriptionで見つかったタスクリスト項目の総数。マージリクエストにdescriptionまたはタスクリスト項目がない場合、0を返します。
time_stats[]オブジェクトこのマージリクエストのタイムトラッキングに関する情報を含むオブジェクト。
time_stats.human_time_estimate文字列time_stats.time_estimateの人間が読める形式(3h 30mなど)。
time_stats.human_total_time_spent文字列time_stats.total_time_spentの人間が読める形式(3h 30mなど)。
time_stats.time_estimate整数マージリクエストを完了するまでの推定時間(秒)。
time_stats.total_time_spent整数マージリクエストの作業に費やした合計時間(秒単位)。
title文字列マージリクエストのタイトル。
updated_at日時マージリクエストの最終更新時のタイムスタンプ。
upvotes整数マージリクエストへの同意数。
user_notes_count整数ユーザーコメントの数。
web_url文字列マージリクエストを表示するためのWeb URL。
work_in_progressブール値非推奨。代わりにdraftを使用してください。

その他の発生しうる応答:

  • アクセストークンが無効な場合は401 Unauthorized
  • プロジェクトまたはマージリクエストが見つからない場合は、404 Not Found
  • 422 Unprocessable Entity検証に失敗した場合。
  • 429 Too Many Requests searchパラメータを使用している場合にリクエストがレート制限されている場合。

レスポンス例:

[
  {
    "id": 1,
    "iid": 1,
    "project_id": 3,
    "title": "test1",
    "description": "fixed login page css paddings",
    "state": "merged",
    "imported": false,
    "imported_from": "none",
    "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",
    "merge_after": "2018-09-07T11:16:00.000Z",
    "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": "main",
    "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を取得する

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

GET /projects/:id/merge_requests/:merge_request_iid

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。
include_diverged_commits_countブール値いいえtrueの場合、レスポンスにターゲットブランチより遅れているコミットが含まれます。
include_rebase_in_progressブール値いいえtrueの場合、レスポンスにリベース操作が進行中かどうかが含まれます。
render_htmlブール値いいえtrueの場合、レスポンスには、タイトルと説明用にレンダリングされたHTMLが含まれます。

成功すると、200 OKを返します。その他の発生しうる応答:

  • アクセストークンが無効な場合は401 Unauthorized
  • アクセスが拒否された場合は、403 Forbidden
  • プロジェクトまたはマージリクエストが見つからない場合は、404 Not Found
  • 408 Request Timeoutデータベースデータベースクエリがタイムアウトした場合。
  • リソースロックの競合が存在する場合は、409 Conflict
  • 422 Unprocessable Entity検証に失敗した場合。
  • 429 Too Many Requests searchパラメータを使用している場合にリクエストがレート制限されている場合。

レスポンス

属性説明
allow_collaborationブール値trueの場合、このフォークは、ターゲットブランチにマージできるメンバーからのコラボレーションを許可します。フォークからのマージリクエストにのみ使用されます。
allow_maintainer_to_pushブール値非推奨。代わりにallow_collaborationを使用してください。
approvals_before_merge整数GitLab 16.0で非推奨になりました。承認ルールを設定するには、代わりにマージリクエストAPIを参照してください。GitLab PremiumおよびUltimateのみです。
assignee[]オブジェクト非推奨。代わりにassigneesを使用してください。
assignees[]配列マージリクエストに割り当てられたユーザー。
assignees.avatar_url文字列アサイニーのアバターイメージへのフルURL。
assignees.id整数アサイニーの一意のID。
assignees.lockedブール値trueの場合、認証の試行に失敗したため、アサイニーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
assignees.name文字列アサイニーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
assignees.public_email文字列アサイニーの公開メールアドレス。
assignees.state文字列アサイニーのユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
assignees.username文字列マージリクエストのアサイニーのユーザー名。
assignees.web_url文字列アサイニーのプロファイルページへのフルURL。
author[]オブジェクトマージリクエストを作成したユーザーに関する情報を含むオブジェクト。
author.avatar_url文字列作成者のアバターイメージへのフルURL。
author.id整数マージリクエストを作成したユーザーの一意のID。
author.lockedブール値trueの場合、認証の試行に失敗したため、作成者のアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
author.name文字列作成者の表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
author.public_email文字列作成者の公開メールアドレス。
author.state文字列ユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
author.username文字列マージリクエストの作成者のユーザー名。
author.web_url文字列作成者のプロファイルページへのフルURL。
blocking_discussions_resolvedブール値trueの場合、マージリクエストのすべてのディスカッションスレッドは、マージする前に解決される必要があります。
changes_count文字列設定されている場合、マージリクエストに対して行われた変更の数。マージリクエストが作成されると空になります。非同期的に入力された。整数ではなく、文字列です。表示および保存する変更が多すぎるマージリクエストの場合、値の上限は1000であり、文字列"1000+"を返します。新しいマージリクエストの空のAPIフィールドを参照してください。
closed_at日時マージリクエストがクローズされた時点のタイムスタンプ。
closed_by[]オブジェクトマージリクエストを閉じたユーザーに関する情報を含むオブジェクト。nullの場合、マージリクエストはオープンです。
closed_by.avatar_url文字列終了ユーザーのアバターイメージへのフルURL。
closed_by.id整数マージリクエストを閉じたユーザーの一意のID。
closed_by.lockedブール値trueの場合、認証の試行に失敗したため、終了ユーザーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
closed_by.name文字列終了ユーザーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
closed_by.public_email文字列終了ユーザーの公開メールアドレス。
closed_by.state文字列終了ユーザーのアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
closed_by.username文字列マージリクエストを閉じたユーザーのユーザー名。
closed_by.web_url文字列終了ユーザーのプロファイルページへのフルURL。
created_at日時マージリクエスト作成時のタイムスタンプ。
description文字列マージリクエストの説明。キャッシュ用にHTMLとしてレンダリングされたMarkdownが含まれます。
detailed_merge_status文字列マージステータスの詳細情報。使用可能な値のリストについては、マージ状態を参照してください。
diff_refs[]オブジェクトこのマージリクエストのベース、HEAD、および開始SHAの参照を持つオブジェクト。マージリクエストの最新の差分バージョンに対応します。マージリクエストの作成時は空であり、非同期的に入力されます。新しいマージリクエストの空のAPIフィールドを参照してください。
diff_refs.base_sha文字列ソースブランチとターゲットブランチが分岐したマージベースコミットのSHA。
diff_refs.start_sha文字列ターゲットブランチコミットのSHA。差分の開始点。通常はbase_shaと同じです。
diff_refs.head_sha文字列ソースブランチ内のHEADコミットのSHA。マージリクエストの最新のコミット。
discussion_lockedブール値trueの場合、ディスカッションはロックされます。ロックされているディスカッションでは、プロジェクトメンバーのみがコメントの追加、編集、解決が可能です。
diverged_commits_count整数設定されている場合、ソースブランチがターゲットブランチよりも遅れているコミットの数を含みます。
downvotes整数マージリクエストの同意しない数。
draftブール値trueの場合、マージリクエストはdraftの状態でマークされます。
first_contributionブール値trueの場合、このプロジェクトへの作成者の最初のコントリビュート。
first_deployed_to_production_at日時最初のデプロイメントが完了した時点のタイムスタンプ。
force_remove_source_branchブール値trueの場合、プロジェクト設定により、マージ後にソースブランチが強制的に削除されます。
has_conflictsブール値trueの場合、マージリクエストには競合があり、マージできません。merge_statusプロパティに依存します。falsemerge_statusでない限り、cannot_be_mergedを返します。
head_pipeline[]オブジェクトマージリクエストのソースブランチのHEADコミットで実行されるパイプライン。より完全な情報が含まれているため、pipelineの代わりに使用します。現在のユーザーがこのプロジェクトのパイプラインを表示できる場合にのみ公開されます。
head_pipeline.before_sha文字列このパイプラインの前のコミットのSHA。
head_pipeline.committed_at日時コミット作成時のタイムスタンプ。
head_pipeline.coverage数値テストカバレッジの割合(98.29など)。
head_pipeline.created_at日時パイプラインスケジュール作成時のタイムスタンプ。
head_pipeline.detailed_status[]オブジェクトこのパイプラインの詳細なステータスを持つフィールドを含むオブジェクト。
head_pipeline.detailed_status.action[]オブジェクト設定されている場合、このパイプラインで利用可能なアクションを含むオブジェクト。
head_pipeline.detailed_status.action.button_title文字列アクションのボタンタイトル。
head_pipeline.detailed_status.action.confirmation_message文字列アクションの確認メッセージ。
head_pipeline.detailed_status.action.icon文字列アクションのパス。
head_pipeline.detailed_status.action.method文字列POSTのように、アクションのHTTPメソッド。
head_pipeline.detailed_status.action.path文字列アクションのパス("/namespace1/project1/-/jobs/2/cancel"など)。
head_pipeline.detailed_status.action.title文字列アクションのタイトル。
head_pipeline.detailed_status.details_path文字列"/test-group/test-project/-/pipelines/287"のように、詳細ビューへのパス。
head_pipeline.detailed_status.favicon文字列ステータスファビコンへのパス。
head_pipeline.detailed_status.group文字列successのようなステータスグループ。
head_pipeline.detailed_status.has_detailsブール値設定されている場合、詳細ビューが利用可能です。
head_pipeline.detailed_status.icon文字列"status_success"のようなステータスアイコン名。
head_pipeline.detailed_status.illustration.content文字列"This job depends on upstream jobs that need to succeed in order for this job to be triggered"のような、イラストのコンテンツテキスト。
head_pipeline.detailed_status.illustration.image文字列イラスト画像へのパス。
head_pipeline.detailed_status.illustration.size文字列イラストのサイズ。
head_pipeline.detailed_status.illustration.title文字列"This job has not been triggered yet"のような、イラストのタイトル。
head_pipeline.detailed_status.label文字列"passed"のような、パイプラインのステータスラベル。
head_pipeline.detailed_status.text文字列"passed"のような、パイプラインのステータステキスト。
head_pipeline.detailed_status.tooltip文字列"passed"のような、パイプラインのツールチップテキスト。
head_pipeline.duration整数パイプラインの実行に費やされた時間(秒)。
head_pipeline.finished_at日時パイプラインが完了したときのタイムスタンプ。
head_pipeline.id整数パイプラインの一意の数値識別子。ci_pipelinesテーブルへの外部キー。
head_pipeline.iid整数パイプラインの内部数値ID。
head_pipeline.project_id整数パイプラインを含むプロジェクトの数値ID。
head_pipeline.queued_duration整数エンキューに費やされた時間(秒)。
head_pipeline.ref文字列パイプラインが実行されるGit参照(ブランチまたはタグ)の名前。
head_pipeline.sha文字列パイプラインをトリガーしたコミットのSHA。
head_pipeline.source文字列パイプラインがトリガーされた方法。例:pushmerge_request_event、またはapi
head_pipeline.started_at日時パイプラインの実行が開始されたときのタイムスタンプ。
head_pipeline.status文字列パイプライン作成の現在のステータス。使用可能な値: successfailedrunningpending
head_pipeline.tagブール値trueの場合、このパイプラインはGitタグで実行されています。
head_pipeline.updated_at日時パイプラインスケジュールの最終更新時のタイムスタンプ。
head_pipeline.user[]オブジェクトパイプラインをトリガーしたユーザーに関する情報を含むオブジェクト。
head_pipeline.user.avatar_url文字列ユーザーのアバター画像への完全なURL。
head_pipeline.user.id整数パイプラインをトリガーしたユーザーの一意のID。
head_pipeline.user.lockedブール値trueの場合、パイプラインをトリガーしたユーザーアカウントは認証の試行が失敗したためにロックされており、ロックが期限切れになるか、管理者がアカウントのロックを解除するまでサインインできません。
head_pipeline.user.name文字列パイプラインをトリガーしたユーザーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
head_pipeline.user.public_email文字列パイプラインをトリガーしたユーザーの公開メールアドレス。
head_pipeline.user.state文字列パイプラインをトリガーしたユーザーのアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
head_pipeline.user.username文字列パイプラインをトリガーしたユーザーのユーザー名
head_pipeline.user.web_url文字列パイプラインをトリガーしたユーザーのプロファイルページへの完全なURL。
head_pipeline.web_url文字列パイプラインページへの完全なURL。
head_pipeline.yaml_errors文字列YAML設定エラー。例:widgets:build: needs 'widgets:test')
id整数マージリクエストのID。
iid整数マージリクエストの内部ID。
importedブール値trueの場合、マージリクエストがインポートされました。
imported_from文字列Bitbucketなどのインポート元。
labels[]配列マージリクエストに割り当てられたラベルの配列。with_labels_detailstrueの場合、各ラベルの配列を返します。
labels.archivedブール値with_labels_detailstrueの場合、ラベルはアーカイブされます。
labels.color文字列with_labels_detailstrueの場合、ラベルの背景色。
labels.description文字列with_labels_detailstrueの場合、ラベルのdescriptionテキスト。nullの場合、ラベルにdescriptionはありません。
labels.description_html文字列with_labels_detailstrueの場合、ラベルのHTMLでレンダリングされたdescription。nullの場合、ラベルにdescriptionはありません。
labels.id整数with_labels_detailstrueの場合、ラベルの一意のID。
labels.name文字列with_labels_detailstrueの場合、ラベルの名前。
labels.text_color文字列with_labels_detailstrueの場合、ラベルのテキストカラー。
latest_build_finished_at日時マージリクエストの最新ビルドが完了した時点のタイムスタンプ。
latest_build_started_at日時マージリクエストの最新ビルドが開始された時点のタイムスタンプ。
merge_after日時設定されている場合、マージリクエストをマージできるタイムスタンプ。GitLab 17.8で導入されました。
merge_commit_sha文字列設定されている場合、マージリクエストコミットのSHA。マージされるまでnullを返します。
merge_error文字列設定されている場合、マージが失敗した場合に表示されるエラーメッセージ。マージ可能性を確認するには、代わりにdetailed_merge_statusを使用します。
merge_status文字列マージリクエストの状態。すべての潜在的なステータスを考慮する代わりに、detailed_merge_statusを使用してください。has_conflictsプロパティに影響します。レスポンスデータに関する重要な注意点については、単一マージリクエストのレスポンスに関する注意点を参照してください。GitLab 15.6で非推奨になりました。
merge_user[]オブジェクトこのマージリクエストをマージしたユーザー、自動マージに設定したユーザー、またはnull
merge_when_pipeline_succeedsブール値trueの場合、マージリクエストは自動マージに設定されています。
merged_at日時マージリクエストがマージされた時点のタイムスタンプ。
merged_by[]オブジェクトこのマージリクエストをマージしたユーザー、または自動マージに設定したユーザー。GitLab 14.7で非推奨となり、APIバージョン5で削除される予定です。代わりにmerge_userを使用してください。
milestone[]オブジェクトマージリクエストに割り当てられたマイルストーンに関する情報を含むオブジェクト。
milestone.created_at日時マイルストーンが作成されたときのタイムスタンプ。
milestone.description文字列マイルストーンのdescriptionテキスト。nullの場合、マイルストーンにdescriptionはありません。
milestone.due_date日付マイルストーンの期日。nullの場合、マイルストーンに期日はありません。
milestone.expiredブール値trueの場合、マイルストーンは期限切れになっています。
milestone.group_id整数マイルストーンが属するグループのID。マイルストーンがグループマイルストーンである場合にのみ含まれます。
milestone.id整数マイルストーンの一意のID。
milestone.iid整数プロジェクトまたはグループ内のマイルストーンの内部ID。
milestone.project_id整数マイルストーンが属するプロジェクトのID。マイルストーンがプロジェクトマイルストーンである場合にのみ含まれます。
milestone.start_date日付マイルストーンの開始日。nullの場合、マイルストーンに開始日はありません
milestone.state文字列activeclosedなど、マイルストーンの現在の状態。
milestone.title文字列マイルストーンのタイトル。
milestone.updated_at日時マイルストーンが最後に更新されたときのタイムスタンプ。
milestone.web_url文字列マイルストーンを表示するための完全なWeb URL。
pipeline[]オブジェクトマージリクエストのブランチHEADで実行されているパイプライン。head_pipelineにはより多くの情報が含まれているため、代わりとして使用することを検討してください。
prepared_at日時マージリクエストが準備されたときのタイムスタンプ。このフィールドは、すべての準備手順が完了した後に1回だけ入力され、それ以上の変更が加えられても更新されません。
project_id整数マージリクエストを含むプロジェクトのID。
rebase_in_progressブール値trueの場合、Sidekiqはこのブランチでリベース操作を実行しています。
reference文字列非推奨。代わりにreferencesを使用してください。GitLab 12.7で非推奨となり、APIバージョン5で削除される予定です。代わりにreferencesを使用してください。
references[]オブジェクトマージリクエストのすべての内部参照を含むオブジェクト。
references.full文字列gitlab-org/gitlab!123のような、完全なプロジェクトパスを含む、マージリクエストへの完全な参照。グループまたはプロジェクト全体でリクエストされた場合、references.relativeと同一です。
references.relative文字列特定のプロジェクトまたはグループに対する相対参照: 現在のプロジェクトのマージリクエストの場合は!123、同じグループ内の別のプロジェクトの場合はother-project!123
references.short文字列!123のような、マージリクエストへの可能な限り短い参照。マージリクエストのプロジェクトからフェッチされた場合、references.relativeと同一です。
reviewers[]配列マージリクエストのレビュアー。
reviewers.avatar_url文字列レビュアーのアバターイメージへのフルURL。
reviewers.id整数レビュアーの一意のID。
reviewers.lockedブール値trueの場合、認証の試行に失敗したため、レビュアーのアカウントはロックされており、ロックが解除されるか、管理者がアカウントのロックを解除するまでサインインできません。
reviewers.name文字列レビュアーの表示名。現在のユーザーの権限に基づいて削除済みになる可能性があります。
reviewers.public_email文字列レビュアーの公開メールアドレス。
reviewers.state文字列レビュアーのユーザーアカウントの現在の状態。使用可能な値: activeblocked、またはdeactivated
reviewers.username文字列マージリクエストのレビュアーのユーザー名。
reviewers.web_url文字列レビュアーのプロファイルページへのフルURL。
sha文字列ソースブランチ内のHEADコミットのSHA。
should_remove_source_branchブール値trueの場合、マージ後にソースブランチは削除されます。
source_branch文字列ソースブランチの名前。
source_project_id整数ソースブランチのID。
squashブール値trueの場合、マージ時にコミットをスカッシュします。
squash_commit_sha文字列設定されている場合、スカッシュコミットのSHA。マージされるまで空です。
squash_on_mergeブール値trueの場合、コミットはマージ時にスカッシュされます。
state文字列マージリクエストの現在の状態。使用可能な値: openedclosedmerged、またはlocked
subscribedブール値trueの場合、現在の認証済みユーザーはこのマージリクエストをサブスクライブします。
target_branch文字列ターゲットブランチの名前。
target_project_id整数ターゲットプロジェクトのID(数値)。
task_completion_status[]オブジェクトタスクリスト完了ステータスに関する情報を含むオブジェクト。
task_completion_status.completed_count整数マージリクエストdescriptionで完了したタスクリスト項目の数。マージリクエストにdescriptionまたはタスクリスト項目がない場合、0を返します。
task_completion_status.count整数マージリクエストdescriptionで見つかったタスクリスト項目の総数。マージリクエストにdescriptionまたはタスクリスト項目がない場合、0を返します。
time_stats[]オブジェクトこのマージリクエストのタイムトラッキングに関する情報を含むオブジェクト。
time_stats.human_time_estimate文字列time_stats.time_estimateの人間が読める形式(3h 30mなど)。
time_stats.human_total_time_spent文字列time_stats.total_time_spentの人間が読める形式(3h 30mなど)。
time_stats.time_estimate整数マージリクエストを完了するまでの推定時間(秒)。
time_stats.total_time_spent整数マージリクエストの作業に費やした合計時間(秒単位)。
title文字列マージリクエストのタイトル。
updated_at日時マージリクエストの最終更新時のタイムスタンプ。
upvotes整数マージリクエストへの同意数。
user[]オブジェクトマージリクエストに対してリクエストされたユーザーの権限。
user.can_mergeブール値trueの場合、現在の認証済みユーザーはこのマージリクエストをマージできます。
user_notes_count整数ユーザーコメントの数。
web_url文字列マージリクエストを表示するためのWeb URL。
work_in_progressブール値非推奨。代わりにdraftを使用してください。

レスポンス例:

{
  "id": 155016530,
  "iid": 133,
  "project_id": 15513260,
  "title": "Manual job rules",
  "description": "",
  "state": "opened",
  "imported": false,
  "imported_from": "none",
  "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,
  "merge_after": "2018-09-07T11:16:00.000Z",
  "prepared_at": "2018-09-04T11:16:17.520Z",
  "closed_by": null,
  "closed_at": null,
  "target_branch": "main",
  "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"
    },
    "archived": false
  },
  "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
  },
}

単一のマージリクエストのレスポンスに関する注記

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

マージの状態

表示される可能性があるすべてのステータスを考慮するために、merge_statusの代わりにdetailed_merge_statusを使用してください。

  • detailed_merge_statusフィールドには、マージリクエストに関連する次のいずれかの値を指定できます:
    • approvals_syncing: マージリクエストの承認を同期しています。
    • checking: Gitは有効なマージが可能かどうかをテストしています。
    • ci_must_pass: マージする前にCI/CDパイプラインが成功する必要があります。
    • ci_still_running: CI/CDパイプラインがまだ実行中です。
    • commits_status: ソースブランチが存在し、コミットが含まれている必要があります。
    • conflict: ソースブランチとターゲットブランチの間に競合があります。
    • discussions_not_resolved: マージリクエストをマージする前に、すべてのディスカッションを解決する必要があります。
    • draft_status: マージリクエストがドラフトであるため、マージできません。
    • jira_association_missing: タイトルまたは説明でJiraのイシューを参照する必要があります。設定については、マージリクエストをマージするために、関連付けられたJiraのイシューを要求するを参照してください。
    • mergeable: ブランチは、ターゲットブランチに問題なくマージできます。
    • merge_request_blocked: 別のマージリクエストによってブロックされています。
    • merge_time: 指定された時刻を経過するまでマージできません。
    • need_rebase: マージリクエストをリベースする必要があります。
    • not_approved: マージする前に承認が必要です。
    • not_open: マージする前に、マージリクエストを開く必要があります。
    • preparing: マージリクエストの差分を作成しています。
    • requested_changes: マージリクエストには、変更をリクエストしたレビュアーがいます。
    • security_policy_violations: すべてのセキュリティポリシーを満たす必要があります。
    • status_checks_must_pass: マージする前に、すべての状態チェックに合格する必要があります。
    • unchecked: Gitは、有効なマージが可能かどうかをまだテストしていません。
    • locked_paths: デフォルトブランチにマージする前に、他のユーザーによってロックされているパスをロック解除する必要があります。
    • locked_lfs_files: マージする前に、他のユーザーによってロックされているLFSファイルをロック解除する必要があります。
    • title_regex: プロジェクト設定で設定されている場合、タイトルが予期される正規表現に一致するかどうかを確認します。

準備手順

prepared_atフィールドは、以下の手順が完了した後に1回だけ入力された状態になります:

  • 差分を作成する。
  • パイプラインを作成する。
  • マージ可能性を確認する。
  • すべてのGit LFSオブジェクトをリンクする。
  • 通知を送信する。

マージリクエストにさらに変更が加えられた場合、prepared_atフィールドは更新されません。

単一のマージリクエストの参加者を取得する

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

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。

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

属性説明
commitsオブジェクト配列マージリクエスト内のコミット。
commits[].id文字列コミットのID。
commits[].short_id文字列コミットの短いID。
commits[].created_at日時committed_dateフィールドと同一です。
commits[].parent_ids配列親コミットのID。
commits[].title文字列コミットタイトル。
commits[].message文字列コミットメッセージ。
commits[].author_name文字列コミット作成者の名前。
commits[].author_email文字列コミット作成者のメールアドレス。
commits[].authored_date日時コミットの作成日。
commits[].committer_name文字列コミッターの名前。
commits[].committer_email文字列コミッターのメールアドレス。
commits[].committed_date日時コミット日。
commits[].trailersオブジェクトコミットについて解析されたGitトレーラー。重複するキーには最後の値のみが含まれます。
commits[].extended_trailersオブジェクトコミットについて解析されたGitトレーラー。
commits[].web_url文字列マージリクエストのWeb URL。

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/commits"

レスポンス例:

[
  {
    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
    "short_id": "ed899a2f4b5",
    "title": "Replace sanitize with escape once",
    "author_name": "Example User",
    "author_email": "user@example.com",
    "authored_date": "2012-09-20T11:50:22+03:00",
    "committer_name": "Example User",
    "committer_email": "user@example.com",
    "committed_date": "2012-09-20T11:50:22+03:00",
    "created_at": "2012-09-20T11:50:22+03:00",
    "message": "Replace sanitize with escape once",
    "trailers": {},
    "extended_trailers": {},
    "web_url": "https://gitlab.example.com/project/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
  },
  {
    "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
    "short_id": "6104942438c",
    "title": "Sanitize for network graph",
    "author_name": "Example User",
    "author_email": "user@example.com",
    "authored_date": "2012-09-20T09:06:12+03:00",
    "committer_name": "Example User",
    "committer_email": "user@example.com",
    "committed_date": "2012-09-20T09:06:12+03:00",
    "created_at": "2012-09-20T09:06:12+03:00",
    "message": "Sanitize for network graph",
    "trailers": {},
    "extended_trailers": {},
    "web_url": "https://gitlab.example.com/project/-/commit/6104942438c14ec7bd21c6cd5bd995272b3faff6"
  }
]

マージリクエストの依存関係を取得する

マージする前に解決する必要があるマージリクエストの依存関係に関する情報を示します。

ユーザーがブロックしているマージリクエストにアクセスできない場合、blocking_merge_request属性は返されません。

GET /projects/:id/merge_requests/:merge_request_iid/blocks

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/blocks"

レスポンス例:

[
  {
    "id": 1,
    "blocking_merge_request": {
      "id": 145,
      "iid": 12,
      "project_id": 7,
      "title": "Interesting MR",
      "description": "Does interesting things.",
      "state": "opened",
      "created_at": "2024-07-05T21:29:11.172Z",
      "updated_at": "2024-07-05T21:29:11.172Z",
      "merged_by": null,
      "merge_user": null,
      "merged_at": null,
      "merge_after": "2018-09-07T11:16:00.000Z",
      "closed_by": null,
      "closed_at": null,
      "target_branch": "master",
      "source_branch": "v2.x",
      "user_notes_count": 0,
      "upvotes": 0,
      "downvotes": 0,
      "author": {
        "id": 2,
        "username": "aiguy123",
        "name": "AI GUY",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "https://localhost/aiguy123"
      },
      "assignees": [
        {
          "id": 2,
          "username": "aiguy123",
          "name": "AI GUY",
          "state": "active",
          "locked": false,
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "https://localhost/aiguy123"
        }
      ],
      "assignee": {
        "id": 2,
        "username": "aiguy123",
        "name": "AI GUY",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "https://localhost/aiguy123"
      },
      "reviewers": [
        {
          "id": 2,
          "username": "aiguy123",
          "name": "AI GUY",
          "state": "active",
          "locked": false,
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "https://localhost/aiguy123"
        },
        {
          "id": 1,
          "username": "root",
          "name": "Administrator",
          "state": "active",
          "locked": false,
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "https://localhost/root"
        }
      ],
      "source_project_id": 7,
      "target_project_id": 7,
      "labels": [],
      "draft": false,
      "imported": false,
      "imported_from": "none",
      "work_in_progress": false,
      "milestone": null,
      "merge_when_pipeline_succeeds": false,
      "merge_status": "unchecked",
      "detailed_merge_status": "unchecked",
      "sha": "ce7e4f2d0ce13cb07479bb39dc10ee3b861c08a6",
      "merge_commit_sha": null,
      "squash_commit_sha": null,
      "discussion_locked": null,
      "should_remove_source_branch": null,
      "force_remove_source_branch": true,
      "prepared_at": null,
      "reference": "!12",
      "references": {
        "short": "!12",
        "relative": "!12",
        "full": "my-group/my-project!12"
      },
      "web_url": "https://localhost/my-group/my-project/-/merge_requests/12",
      "time_stats": {
        "time_estimate": 0,
        "total_time_spent": 0,
        "human_time_estimate": null,
        "human_total_time_spent": null
      },
      "squash": false,
      "squash_on_merge": false,
      "task_completion_status": {
        "count": 0,
        "completed_count": 0
      },
      "has_conflicts": false,
      "blocking_discussions_resolved": true,
      "approvals_before_merge": null
    },
    "blocked_merge_request": {
      "id": 146,
      "iid": 13,
      "project_id": 7,
      "title": "Really cool MR",
      "description": "Adds some stuff",
      "state": "opened",
      "created_at": "2024-07-05T21:31:34.811Z",
      "updated_at": "2024-07-27T02:57:08.054Z",
      "merged_by": null,
      "merge_user": null,
      "merged_at": null,
      "merge_after": "2018-09-07T11:16:00.000Z",
      "closed_by": null,
      "closed_at": null,
      "target_branch": "master",
      "source_branch": "remove-from",
      "user_notes_count": 0,
      "upvotes": 1,
      "downvotes": 0,
      "author": {
        "id": 2,
        "username": "aiguy123",
        "name": "AI GUY",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "https://localhost/aiguy123"
      },
      "assignees": [
        {
          "id": 2,
          "username": "aiguy123",
          "name": "AI GUY",
          "state": "active",
          "locked": false,
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "https://localhose/aiguy123"
        }
      ],
      "assignee": {
        "id": 2,
        "username": "aiguy123",
        "name": "AI GUY",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "https://localhost/aiguy123"
      },
      "reviewers": [
        {
          "id": 1,
          "username": "root",
          "name": "Administrator",
          "state": "active",
          "locked": false,
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "https://localhost/root"
        }
      ],
      "source_project_id": 7,
      "target_project_id": 7,
      "labels": [],
      "draft": false,
      "imported": false,
      "imported_from": "none",
      "work_in_progress": false,
      "milestone": {
        "id": 59,
        "iid": 6,
        "project_id": 7,
        "title": "Sprint 1718897375",
        "description": "Accusantium omnis iusto a animi.",
        "state": "active",
        "created_at": "2024-06-20T15:29:35.739Z",
        "updated_at": "2024-06-20T15:29:35.739Z",
        "due_date": null,
        "start_date": null,
        "expired": false,
        "web_url": "https://localhost/my-group/my-project/-/milestones/6"
      },
      "merge_when_pipeline_succeeds": false,
      "merge_status": "cannot_be_merged",
      "detailed_merge_status": "not_approved",
      "sha": "daa75b9b17918f51f43866ff533987fda71375ea",
      "merge_commit_sha": null,
      "squash_commit_sha": null,
      "discussion_locked": null,
      "should_remove_source_branch": null,
      "force_remove_source_branch": true,
      "prepared_at": "2024-07-11T18:50:46.215Z",
      "reference": "!13",
      "references": {
        "short": "!13",
        "relative": "!13",
        "full": "my-group/my-project!12"
      },
      "web_url": "https://localhost/my-group/my-project/-/merge_requests/13",
      "time_stats": {
        "time_estimate": 0,
        "total_time_spent": 0,
        "human_time_estimate": null,
        "human_total_time_spent": null
      },
      "squash": false,
      "squash_on_merge": false,
      "task_completion_status": {
        "count": 0,
        "completed_count": 0
      },
      "has_conflicts": true,
      "blocking_discussions_resolved": true,
      "approvals_before_merge": null
    },
    "project_id": 7
  }
]

マージリクエストの依存関係を削除する

マージリクエストの依存関係を削除します。

DELETE /projects/:id/merge_requests/:merge_request_iid/blocks/:block_id

サポートされている属性:

属性必須説明
id整数または文字列認証されたユーザーが所有しているプロジェクトのIDまたはエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。
block_id整数ブロックのID。

リクエストの例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/blocks/1"

戻り値:

  • 依存関係が正常に削除された場合は、204 No Content
  • マージリクエストを更新するための権限がユーザーにない場合は、403 Forbidden
  • ブロックしているマージリクエストを読むための権限がユーザーにない場合は、403 Forbidden

マージリクエストの依存関係を作成する

マージリクエストの依存関係を作成します。

POST /projects/:id/merge_requests/:merge_request_iid/blocks

サポートされている属性:

属性必須説明
id整数または文字列認証されたユーザーが所有しているプロジェクトのIDまたはエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。
blocking_merge_request_id整数ブロックしているマージリクエストの内部ID。

リクエストの例:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/blocks?blocking_merge_request_id=2"

戻り値:

  • 依存関係が正常に作成された場合は201 Created
  • ブロックしているマージリクエストの保存に失敗した場合は、400 Bad request
  • ブロックしているマージリクエストを読むための権限がユーザーにない場合は、403 Forbidden
  • ブロックしているマージリクエストが見つからない場合は、404 Not found
  • ブロックがすでに存在する場合は、409 Conflict

レスポンス例:

{
  "id": 1,
  "blocking_merge_request": {
    "id": 145,
    "iid": 12,
    "project_id": 7,
    "title": "Interesting MR",
    "description": "Does interesting things.",
    "state": "opened",
    "created_at": "2024-07-05T21:29:11.172Z",
    "updated_at": "2024-07-05T21:29:11.172Z",
    "merged_by": null,
    "merge_user": null,
    "merged_at": null,
    "merge_after": "2018-09-07T11:16:00.000Z",
    "closed_by": null,
    "closed_at": null,
    "target_branch": "master",
    "source_branch": "v2.x",
    "user_notes_count": 0,
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "id": 2,
      "username": "aiguy123",
      "name": "AI GUY",
      "state": "active",
      "locked": false,
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "https://localhost/aiguy123"
    },
    "assignees": [
      {
        "id": 2,
        "username": "aiguy123",
        "name": "AI GUY",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "https://localhost/aiguy123"
      }
    ],
    "assignee": {
      "id": 2,
      "username": "aiguy123",
      "name": "AI GUY",
      "state": "active",
      "locked": false,
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "https://localhost/aiguy123"
    },
    "reviewers": [
      {
        "id": 2,
        "username": "aiguy123",
        "name": "AI GUY",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "https://localhost/aiguy123"
      },
      {
        "id": 1,
        "username": "root",
        "name": "Administrator",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "https://localhost/root"
      }
    ],
    "source_project_id": 7,
    "target_project_id": 7,
    "labels": [],
    "draft": false,
    "imported": false,
    "imported_from": "none",
    "work_in_progress": false,
    "milestone": null,
    "merge_when_pipeline_succeeds": false,
    "merge_status": "unchecked",
    "detailed_merge_status": "unchecked",
    "sha": "ce7e4f2d0ce13cb07479bb39dc10ee3b861c08a6",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "discussion_locked": null,
    "should_remove_source_branch": null,
    "force_remove_source_branch": true,
    "prepared_at": null,
    "reference": "!12",
    "references": {
      "short": "!12",
      "relative": "!12",
      "full": "my-group/my-project!12"
    },
    "web_url": "https://localhost/my-group/my-project/-/merge_requests/12",
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    },
    "squash": false,
    "squash_on_merge": false,
    "task_completion_status": {
      "count": 0,
      "completed_count": 0
    },
    "has_conflicts": false,
    "blocking_discussions_resolved": true,
    "approvals_before_merge": null
  },
  "project_id": 7
}

マージリクエストでブロックされたMRを取得する

現在のマージリクエストがブロックしているマージリクエストに関する情報を示します。

GET /projects/:id/merge_requests/:merge_request_iid/blockees

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/blockees"

レスポンス例:

[
  {
    "id": 18,
    "blocking_merge_request": {
      "id": 71,
      "iid": 10,
      "project_id": 7,
      "title": "At quaerat occaecati voluptate ex explicabo nisi.",
      "description": "Aliquid distinctio officia corrupti ad nemo natus ipsum culpa.",
      "state": "merged",
      "created_at": "2024-07-05T19:44:14.023Z",
      "updated_at": "2024-07-05T19:44:14.023Z",
      "merged_by": {
        "id": 40,
        "username": "i-user-0-1720208283",
        "name": "I User0",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/8325417f0f7919e3724957543b4414fdeca612cade1e4c0be45685fdaa2be0e2?s=80&d=identicon",
        "web_url": "http://127.0.0.1:3000/i-user-0-1720208283"
      },
      "merge_user": {
        "id": 40,
        "username": "i-user-0-1720208283",
        "name": "I User0",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/8325417f0f7919e3724957543b4414fdeca612cade1e4c0be45685fdaa2be0e2?s=80&d=identicon",
        "web_url": "http://127.0.0.1:3000/i-user-0-1720208283"
      },
      "merged_at": "2024-06-26T19:44:14.123Z",
      "closed_by": null,
      "closed_at": null,
      "target_branch": "master",
      "source_branch": "Brickwood-Brunefunc-417",
      "user_notes_count": 0,
      "upvotes": 0,
      "downvotes": 0,
      "author": {
        "id": 40,
        "username": "i-user-0-1720208283",
        "name": "I User0",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/8325417f0f7919e3724957543b4414fdeca612cade1e4c0be45685fdaa2be0e2?s=80&d=identicon",
        "web_url": "http://127.0.0.1:3000/i-user-0-1720208283"
      },
      "assignees": [],
      "assignee": null,
      "reviewers": [],
      "source_project_id": 7,
      "target_project_id": 7,
      "labels": [],
      "draft": false,
      "imported": false,
      "imported_from": "none",
      "work_in_progress": false,
      "milestone": null,
      "merge_when_pipeline_succeeds": false,
      "merge_status": "can_be_merged",
      "detailed_merge_status": "not_open",
      "merge_after": null,
      "sha": null,
      "merge_commit_sha": null,
      "squash_commit_sha": null,
      "discussion_locked": null,
      "should_remove_source_branch": null,
      "force_remove_source_branch": null,
      "prepared_at": null,
      "reference": "!10",
      "references": {
        "short": "!10",
        "relative": "!10",
        "full": "flightjs/Flight!10"
      },
      "web_url": "http://127.0.0.1:3000/flightjs/Flight/-/merge_requests/10",
      "time_stats": {
        "time_estimate": 0,
        "total_time_spent": 0,
        "human_time_estimate": null,
        "human_total_time_spent": null
      },
      "squash": false,
      "squash_on_merge": false,
      "task_completion_status": {
        "count": 0,
        "completed_count": 0
      },
      "has_conflicts": false,
      "blocking_discussions_resolved": true,
      "approvals_before_merge": null
    },
    "blocked_merge_request": {
      "id": 176,
      "iid": 14,
      "project_id": 7,
      "title": "second_mr",
      "description": "Signed-off-by: Lucas Zampieri <lzampier@redhat.com>",
      "state": "opened",
      "created_at": "2024-07-08T19:12:29.089Z",
      "updated_at": "2024-08-27T19:27:17.045Z",
      "merged_by": null,
      "merge_user": null,
      "merged_at": null,
      "closed_by": null,
      "closed_at": null,
      "target_branch": "master",
      "source_branch": "second_mr",
      "user_notes_count": 0,
      "upvotes": 0,
      "downvotes": 0,
      "author": {
        "id": 1,
        "username": "root",
        "name": "Administrator",
        "state": "active",
        "locked": false,
        "avatar_url": "https://www.gravatar.com/avatar/fc3634394c590e212d964e8e0a34c4d9b8c17c992f4d6d145d75f9c21c1c3b6e?s=80&d=identicon",
        "web_url": "http://127.0.0.1:3000/root"
      },
      "assignees": [],
      "assignee": null,
      "reviewers": [],
      "source_project_id": 7,
      "target_project_id": 7,
      "labels": [],
      "draft": false,
      "imported": false,
      "imported_from": "none",
      "work_in_progress": false,
      "milestone": null,
      "merge_when_pipeline_succeeds": false,
      "merge_status": "cannot_be_merged",
      "detailed_merge_status": "commits_status",
      "merge_after": null,
      "sha": "3a576801e528db79a75fbfea463673054ff224fb",
      "merge_commit_sha": null,
      "squash_commit_sha": null,
      "discussion_locked": null,
      "should_remove_source_branch": null,
      "force_remove_source_branch": true,
      "prepared_at": null,
      "reference": "!14",
      "references": {
        "short": "!14",
        "relative": "!14",
        "full": "flightjs/Flight!14"
      },
      "web_url": "http://127.0.0.1:3000/flightjs/Flight/-/merge_requests/14",
      "time_stats": {
        "time_estimate": 0,
        "total_time_spent": 0,
        "human_time_estimate": null,
        "human_total_time_spent": null
      },
      "squash": false,
      "squash_on_merge": false,
      "task_completion_status": {
        "count": 0,
        "completed_count": 0
      },
      "has_conflicts": true,
      "blocking_discussions_resolved": true,
      "approvals_before_merge": null
    },
    "project_id": 7
  }
]

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

このエンドポイントはGitLab 15.7で非推奨になり、API v5で削除される予定です。代わりにマージリクエストの差分のリストを取得するエンドポイントを使用してください。

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

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

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。
access_raw_diffsブール値いいえGitaly経由で変更差分を取得します。
unidiffブール値いいえunified diff形式で変更差分を表示します。デフォルトはfalseです。GitLab 16.5で導入されました。

一連の変更に関連付けられた差分には、APIによって返される他の差分、またはUIで表示される他の差分と同じサイズの制限が適用されます。これらの制限が結果に影響する場合、overflowフィールドには値trueが含まれます。このような制限なしで差分データを取得するには、access_raw_diffsパラメータを追加します。これにより、データベースからではなく、Gitalyから直接差分にアクセスします。このアプローチは一般に時間がかかり、リソースを大量に消費しますが、データベースを基盤とする差分に適用されるサイズ制限の対象にはなりません。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
}

マージリクエストの差分のリストを取得する

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

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

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。
page整数いいえ返される結果のページ。デフォルトは1です。
per_page整数いいえページあたりの結果数。デフォルトは20です。
unidiffブール値いいえunified diff形式で差分を表示します。デフォルトはfalseです。GitLab 16.5で導入されました。

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

属性説明
a_mode文字列ファイルの古いファイルモード。
b_mode文字列ファイルの新しいファイルモード。
collapsedブール値ファイルの差分は除外されていますが、リクエストに応じてフェッチできます。
deleted_fileブール値ファイルは削除されました。
diff文字列ファイルに加えられた変更の差分の表現。
generated_fileブール値ファイルは生成されたものとしてマークされています。
new_fileブール値ファイルが追加されました。
new_path文字列ファイルの新しいパス。
old_path文字列ファイルの古いパス。
renamed_fileブール値ファイルの名前が変更されました。
too_largeブール値ファイルの差分は除外されており、取得できません。

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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",
    "collapsed": false,
    "too_large": false,
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false,
    "generated_file": false
  },
  {
    "old_path": "VERSION",
    "new_path": "VERSION",
    "a_mode": "100644",
    "b_mode": "100644",
    "diff": "@@\ -1.9.7\ +1.9.8",
    "collapsed": false,
    "too_large": false,
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false,
    "generated_file": false
  }
]

このエンドポイントは、マージリクエストの差分制限の対象となります。差分制限を超えるマージリクエストは、結果が制限されて返されます。

マージリクエストのraw diffを表示する

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

GET /projects/:id/merge_requests/:merge_request_iid/raw_diffs

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。

成功した場合、200 OKと、プログラムで使用するraw difレスポンスを返します:

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/merge_requests/1/raw_diffs"

レスポンス例:

        diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 31525ad523553c8d7eff163db3e539058efd6d3a..f30e36d6fdf4cd4fa25f62e08ecdbf4a7b169681 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -944,6 +944,10 @@ def send_git_blob(repository, blob)
       body ''
     end

+    def send_git_diff(repository, diff_refs)
+      header(*Gitlab::Workhorse.send_git_diff(repository, diff_refs))
+    end
+
     def send_git_archive(repository, **kwargs)
       header(*Gitlab::Workhorse.send_git_archive(repository, **kwargs))

diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index e02d9eea1852f19fe5311acda6aa17465eeb422e..f32b38585398a18fea75c11d7b8ebb730eeb3fab 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -6,6 +6,8 @@ class MergeRequests < ::API::Base
     include PaginationParams
     include Helpers::Unidiff

+    helpers ::API::Helpers::HeadersHelpers
+
     CONTEXT_COMMITS_POST_LIMIT = 20

     before { authenticate_non_get! }

このエンドポイントは、マージリクエストの差分制限の対象となります。差分制限を超えるマージリクエストは、結果が制限されて返されます。

マージリクエストパイプラインのリストを取得する

マージリクエストパイプラインのリストを取得します。

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

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。

マージリクエストパイプラインのリストを制限するには、ページネーションパラメータpageper_pageを使用します。

レスポンス例:

[
  {
    "id": 77,
    "sha": "959e04d7c7a30600c894bd3c0cd0e1ce7f42c11d",
    "ref": "main",
    "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"
  },
  "archived": false
}

MRを作成する

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

POST /projects/:id/merge_requests
属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
source_branch文字列ソースブランチ。
target_branch文字列ターゲットブランチ。
title文字列MRのタイトル。
allow_collaborationブール値いいえターゲットブランチにマージできるメンバーからのコミットを許可します。
approvals_before_merge整数いいえこのマージリクエストをマージする前に必要な承認の数(下記参照)。承認ルールを設定するには、マージリクエスト承認APIを参照してください。GitLab 16.0で非推奨になりました。PremiumおよびUltimateのみです。
allow_maintainer_to_pushブール値いいえallow_collaborationのエイリアス。
assignee_id整数いいえ担当者のユーザーID。
assignee_ids整数の配列いいえマージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0に設定するか、空の値を指定します。
description文字列いいえマージリクエストの説明。1,048,576文字に制限されています。
labels文字列いいえマージリクエストのラベル(カンマ区切りのリスト)。ラベルがまだ存在しない場合は、新しいプロジェクトラベルが作成され、マージリクエストに割り当てられます。
merge_after文字列いいえマージリクエストをマージできるようになる日付。GitLab 17.8で導入されました。
milestone_id整数いいえマイルストーンのグローバルID。
remove_source_branchブール値いいえマージ時にマージリクエストがソースブランチを削除するかどうかを示すフラグ。
reviewer_ids整数の配列いいえマージリクエストにレビュアーとして追加されたユーザーのID。すべてのレビュアーの設定を解除するには、値を0に設定するか、空のままにすると、レビュアーは追加されません。
squashブール値いいえtrueの場合、マージ時にすべてのコミットを単一のコミットにスカッシュします。プロジェクト設定によって、この値がオーバーライドされる可能性があります。
target_project_id整数いいえターゲットプロジェクトのID(数値)。

レスポンス例:

{
  "id": 1,
  "iid": 1,
  "project_id": 3,
  "title": "test1",
  "description": "fixed login page css paddings",
  "state": "merged",
  "imported": false,
  "imported_from": "none",
  "created_at": "2017-04-29T08:46:00Z",
  "updated_at": "2017-04-29T08:46:00Z",
  "target_branch": "main",
  "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",
  "merge_after": "2018-09-07T11:16:00.000Z",
  "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ブール値いいえターゲットブランチにマージできるメンバーからのコミットを許可します。
allow_maintainer_to_pushブール値いいえallow_collaborationのエイリアス。
assignee_id整数いいえマージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0に設定するか、空の値を指定します。
assignee_ids整数の配列いいえマージリクエストを割り当てるユーザーのID。すべての担当者の割り当てを解除するには、0に設定するか、空の値を指定します。
description文字列いいえマージリクエストの説明。1,048,576文字に制限されています。
discussion_lockedブール値いいえマージリクエストのディスカッションがロックされているかどうかを示すフラグ。ロックされているディスカッションでは、プロジェクトメンバーのみがコメントを追加、編集、または解決できます。
labels文字列いいえマージリクエストのラベル名のカンマ区切りリスト。すべてのラベルの割り当てを解除するには、空の文字列に設定します。ラベルがまだ存在しない場合は、新しいプロジェクトラベルが作成され、マージリクエストに割り当てられます。
merge_after文字列いいえマージリクエストをマージできるようになる日付。GitLab 17.8で導入されました。
milestone_id整数いいえマージリクエストを割り当てるマイルストーンのグローバルID。マイルストーンの割り当てを解除するには、0に設定するか、空の値を指定します。
remove_labels文字列いいえマージリクエストから削除するラベル名のカンマ区切りリスト。
remove_source_branchブール値いいえマージ時にマージリクエストがソースブランチを削除するかどうかを示すフラグ。
reviewer_ids整数の配列いいえマージリクエストにレビュアーとして設定されたユーザーのID。すべてのレビュアーの設定を解除するには、値を0に設定するか、空の値を指定します。
squashブール値いいえtrueの場合、マージ時にすべてのコミットを単一のコミットにスカッシュします。プロジェクト設定によって、この値がオーバーライドされる可能性があります。
state_event文字列いいえ新しい状態(close/reopen)。
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": "main",
  "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",
  "merge_after": "2018-09-07T11:16:00.000Z",
  "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>" \
  --url "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。
auto_mergeブール値いいえtrueの場合、パイプラインが成功すると、マージリクエストがマージされます。
merge_commit_message文字列いいえカスタムGitLab Duoマージコミットメッセージ。
merge_when_pipeline_succeedsブール値いいえGitLab 17.11で非推奨になりました。代わりにauto_mergeを使用してください。
sha文字列いいえ存在する場合、このSHAはソースブランチのHEADと一致している必要があります。一致しない場合、マージは失敗します。
should_remove_source_branchブール値いいえtrueの場合、ソースブランチを削除します。
squash_commit_message文字列いいえカスタムスカッシュコミットメッセージ。
squashブール値いいえtrueの場合、マージ時にすべてのコミットを単一のコミットにスカッシュします。

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

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

レスポンスデータに関する重要な注意点については、単一マージリクエストのレスポンスに関する注意点を参照してください。

レスポンス例:

{
  "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": "main",
  "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",
  "merge_after": "2018-09-07T11:16:00.000Z",
  "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
  }
}

デフォルトのマージrefパスへマージする

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

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

このref(refs/merge-requests/:iid/merge)は、このAPIにリクエストを送信するときに必ずしも上書きされるわけではありませんが、refに可能な限り最新の状態が含まれるようにします。

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

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。

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

HTTPステータスメッセージ理由
200(なし)成功。refs/merge-requests/:iid/mergeのHEADコミットを返します。
400Merge request is not mergeableマージリクエストに競合があります。
400Merge ref cannot be updated
400Unsupported operationGitLabデータベースは読み取り専用モードです。

レスポンス例:

{
  "commit_id": "854a3a7a17acbcc0bbbea170986df1eb60435f34"
}

パイプライン成功時にマージをキャンセルする

POST /projects/:id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds

サポートされている属性:

属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。

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

HTTPステータスメッセージ理由
201(なし)成功、またはマージリクエストがすでにマージされています。
406Can't cancel the automatic mergeマージリクエストは完了されています。

レスポンスデータに関する重要な注意点については、単一マージリクエストのレスポンスに関する注意点を参照してください。

レスポンス例:

{
  "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": "main",
  "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",
  "merge_after": "2018-09-07T11:16:00.000Z",
  "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
  }
}

マージリクエストをリベースする

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

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

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

HTTPステータスメッセージ理由
202(メッセージなし)正常にキューに追加されました。
403Cannot push to source branchマージリクエストのソースブランチにプッシュする権限がありません。
403Source branch does not existマージリクエストのソースブランチにプッシュする権限がありません。
403Source branch is protected from force pushマージリクエストのソースブランチにプッシュする権限がありません。
409Failed to enqueue the rebase operation長時間実行されるトランザクションによってリクエストがブロックされた可能性があります。

リクエストがキューに正常に追加された場合、レスポンスには以下の内容が含まれます:

{
  "rebase_in_progress": true
}

非同期リクエストの状態を確認するには、include_rebase_in_progressパラメータを指定して単一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。

成功した場合、200 OKを返します。GitLabイシュートラッカーを使用すると、次のレスポンス属性が返されます:

属性説明
[].assigneeオブジェクトイシューの最初の担当者。
[].assignees配列イシューの担当者。
[].authorオブジェクトこのイシューを作成したユーザー。
[].blocking_issues_count整数このイシューがブロックしているイシューの数。
[].closed_at日時イシューがクローズされた時点のタイムスタンプ。
[].closed_byオブジェクトこのイシューをクローズしたユーザー。
[].confidentialブール値イシューが非公開であるかどうかを示します。
[].created_at日時イシューが作成された時点のタイムスタンプ。
[].description文字列イシューの説明。
[].discussion_lockedブール値イシューのコメントがメンバーのみにロックされているかどうかを示します。
[].downvotes整数イシューが受け取った「同意しない」の数。
[].due_date日時イシューの期限。
[].id整数イシューのID。
[].iid整数イシューの内部ID。
[].issue_type文字列イシューのタイプ。issueincidenttest_caserequirementtaskのいずれかです。
[].labels配列イシューのラベル。
[].merge_requests_count整数マージ時にイシューをクローズするマージリクエストの数。
[].milestoneオブジェクトイシューのマイルストーン。
[].project_id整数イシュープロジェクトのID。
[].state文字列イシューの状態。openedまたはclosedを指定できます。
[].task_completion_statusオブジェクトcountcompleted_countが含まれます。
[].time_statsオブジェクトイシューの時間統計。time_estimatetotal_time_spenthuman_time_estimate、およびhuman_total_time_spentが含まれます。
[].title文字列イシューのタイトル。
[].type文字列イシューのタイプ。issue_typeと同じですが、大文字です。
[].updated_at日時イシューが更新された時点のタイムスタンプ。
[].upvotes整数イシューが受け取った同意するの数。
[].user_notes_count整数イシューのユーザーノート数。
[].web_url文字列イシューのWeb URL。
[].weight整数イシューのウェイト。

成功した場合、200 OKと、Jiraなどの外部イシュートラッカーを使用する場合の次のレスポンス属性を返します:

属性説明
[].id整数イシューのID。
[].title文字列イシューのタイトル。

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/76/merge_requests/1/closes_issues"

GitLabイシュートラッカーを使用する場合のレスポンス例:

[
  {
    "id": 76,
    "iid": 6,
    "project_id": 1,
    "title": "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
    "description": "Ratione dolores corrupti mollitia soluta quia.",
    "state": "opened",
    "created_at": "2024-09-06T10:58:49.002Z",
    "updated_at": "2024-09-06T11:01:40.710Z",
    "closed_at": null,
    "closed_by": null,
    "labels": [
      "label"
    ],
    "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"
    },
    "assignees": [
      {
        "id": 1,
        "username": "root",
        "name": "Administrator",
        "state": "active",
        "locked": false,
        "avatar_url": null,
        "web_url": "https://gitlab.example.com/root"
      }
    ],
    "author": {
      "id": 18,
      "username": "eileen.lowe",
      "name": "Alexandra Bashirian",
      "state": "active",
      "locked": false,
      "avatar_url": null,
      "web_url": "https://gitlab.example.com/eileen.lowe"
    },
    "type": "ISSUE",
    "assignee": {
      "id": 1,
      "username": "root",
      "name": "Administrator",
      "state": "active",
      "locked": false,
      "avatar_url": null,
      "web_url": "https://gitlab.example.com/root"
    },
    "user_notes_count": 1,
    "merge_requests_count": 1,
    "upvotes": 0,
    "downvotes": 0,
    "due_date": null,
    "confidential": false,
    "discussion_locked": null,
    "issue_type": "issue",
    "web_url": "https://gitlab.example.com/my-group/my-project/-/issues/6",
    "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
    },
    "weight": null,
    "blocking_issues_count": 0
 }
]

Jiraなどの外部イシュートラッカーを使用する場合のレスポンス例:

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

マージリクエストのタイトル、説明、コミットメッセージ、コメント、ディスカッションから、関連するすべてのイシューを取得します。

GET /projects/:id/merge_requests/:merge_request_iid/related_issues
属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/76/merge_requests/1/related_issues"

GitLabイシュートラッカーを使用する場合のレスポンス例:

[
   {
      "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"
   }
]

マージリクエストにサブスクライブする

認証済みユーザーが通知を受信できるように、マージリクエストにサブスクライブさせます。

POST /projects/:id/merge_requests/:merge_request_iid/subscribe
属性必須説明
id整数または文字列プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数マージリクエストの内部ID。

ユーザーがすでにマージリクエストをサブスクライブしている場合、エンドポイントはステータスコードHTTP 304 Not Modifiedを返します。

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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": "main",
  "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",
  "merge_after": "2018-09-07T11:16:00.000Z",
  "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
  }
}

レスポンスデータに関する重要な注意点については、単一マージリクエストのレスポンスに関する注意点を参照してください。

マージリクエストのサブスクライブを解除する

認証済みのユーザーをマージリクエストからサブスクライブ解除し、そのマージリクエストからのマージリクエスト通知の配信を止めます。

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>" \
  --url "https://gitlab.example.com/api/v4/projects/5/merge_requests/17/unsubscribe"

ユーザーがマージリクエストをサブスクライブしていない場合、エンドポイントはステータスコードHTTP 304 Not Modifiedを返します。

レスポンス例:

{
  "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": "main",
  "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",
  "merge_after": "2018-09-07T11:16:00.000Z",
  "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アイテムを作成する

マージリクエストに関する現在のユーザーのTo Doアイテムを手動で作成します。そのマージリクエストに関するユーザーのTo Doアイテムがすでに存在している場合、このエンドポイントはステータスコード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>" \
  --url "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"
}

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

マージリクエストの差分バージョンのリストを取得します。

GET /projects/:id/merge_requests/:merge_request_iid/versions
属性必須説明
id文字列プロジェクトのID。
merge_request_iid整数マージリクエストの内部ID。

レスポンス内のSHAの説明については、API応答内のSHAを参照してください。

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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この差分バージョンが作成された時点でのターゲットブランチのHEADコミットSHA。

単一のマージリクエスト差分バージョンを取得する

単一のマージリクエストの差分バージョンを取得します。

GET /projects/:id/merge_requests/:merge_request_iid/versions/:version_id

サポートされている属性:

属性必須説明
id文字列プロジェクトのID。
merge_request_iid整数マージリクエストの内部ID。
version_id整数マージリクエストの差分バージョンのID。
unidiffブール値いいえunified diff形式で差分を表示します。デフォルトはfalseです。GitLab 16.5で導入されました。

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

属性説明
id整数マージリクエストの差分バージョンのID。
base_commit_sha文字列ソースブランチとターゲットブランチ間のマージベースコミットSHA。
commitsオブジェクト配列マージリクエスト差分のコミット。
commits[].id文字列コミットのID。
commits[].short_id文字列コミットの短いID。
commits[].created_at日時committed_dateフィールドと同一です。
commits[].parent_ids配列親コミットのID。
commits[].title文字列コミットタイトル。
commits[].message文字列コミットメッセージ。
commits[].author_name文字列コミット作成者の名前。
commits[].author_email文字列コミット作成者のメールアドレス。
commits[].authored_date日時コミットの作成日。
commits[].committer_name文字列コミッターの名前。
commits[].committer_email文字列コミッターのメールアドレス。
commits[].committed_date日時コミット日。
commits[].trailersオブジェクトコミットについて解析されたGitトレーラー。重複するキーには最後の値のみが含まれます。
commits[].extended_trailersオブジェクトコミットについて解析されたGitトレーラー。
commits[].web_url文字列マージリクエストのWeb URL。
created_at日時マージリクエストの作成日時。
diffsオブジェクト配列マージリクエスト差分バージョンでの差分。
diffs[].a_mode文字列ファイルの古いファイルモード。
diffs[].b_mode文字列ファイルの新しいファイルモード。
diffs[].collapsedブール値ファイルの差分は除外されていますが、リクエストに応じてフェッチできます。
diffs[].deleted_fileブール値ファイルは削除されました。
diffs[].diff文字列差分の内容。
diffs[].generated_fileブール値ファイルは生成されたものとしてマークされています。
diffs[].new_fileブール値ファイルが追加されました。
diffs[].new_path文字列ファイルの新しいパス。
diffs[].old_path文字列ファイルの古いパス。
diffs[].renamed_fileブール値ファイルの名前が変更されました。
diffs[].too_largeブール値ファイルの差分は除外されており、取得できません。
head_commit_sha文字列ソースブランチのHEADコミット。
merge_request_id整数マージリクエストのID。
patch_id_sha文字列マージリクエスト差分のパッチID
real_size文字列マージリクエスト差分の変更の数。
start_commit_sha文字列この差分バージョンが作成された時点でのターゲットブランチのHEADコミットSHA。
state文字列マージリクエスト差分の状態。collectedoverflowwithout_filesのいずれかです。非推奨の値はtimeoutoverflow_commits_safe_sizeoverflow_diff_files_limitoverflow_diff_lines_limitです。

リクエストの例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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",
    "parent_ids": [],
    "title": "Change year to 2018",
    "author_name": "Administrator",
    "author_email": "admin@example.com",
    "authored_date": "2016-07-26T17:44:29.000+03:00",
    "committer_name": "Administrator",
    "committer_email": "admin@example.com",
    "committed_date": "2016-07-26T17:44:29.000+03:00",
    "created_at": "2016-07-26T17:44:29.000+03:00",
    "message": "Change year to 2018",
    "trailers": {},
    "extended_trailers": {},
    "web_url": "https://gitlab.example.com/project/-/commit/33e2ee8579fda5bc36accc9c6fbd0b4fefda9e30"
  }, {
    "id": "aa24655de48b36335556ac8a3cd8bb521f977cbd",
    "short_id": "aa24655d",
    "parent_ids": [],
    "title": "Update LICENSE",
    "author_name": "Administrator",
    "author_email": "admin@example.com",
    "authored_date": "2016-07-25T17:21:53.000+03:00",
    "committer_name": "Administrator",
    "committer_email": "admin@example.com",
    "committed_date": "2016-07-25T17:21:53.000+03:00",
    "created_at": "2016-07-25T17:21:53.000+03:00",
    "message": "Update LICENSE",
    "trailers": {},
    "extended_trailers": {},
    "web_url": "https://gitlab.example.com/project/-/commit/aa24655de48b36335556ac8a3cd8bb521f977cbd"
  }, {
    "id": "3eed087b29835c48015768f839d76e5ea8f07a24",
    "short_id": "3eed087b",
    "parent_ids": [],
    "title": "Add license",
    "author_name": "Administrator",
    "author_email": "admin@example.com",
    "authored_date": "2016-07-25T17:21:20.000+03:00",
    "committer_name": "Administrator",
    "committer_email": "admin@example.com",
    "committed_date": "2016-07-25T17:21:20.000+03:00",
    "created_at": "2016-07-25T17:21:20.000+03:00",
    "message": "Add license",
    "trailers": {},
    "extended_trailers": {},
    "web_url": "https://gitlab.example.com/project/-/commit/3eed087b29835c48015768f839d76e5ea8f07a24"
  }],
  "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",
    "collapsed": false,
    "too_large": false,
    "new_file": true,
    "renamed_file": false,
    "deleted_file": false,
    "generated_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>" \
  --url "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>" \
  --url "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>" \
  --url "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>" \
  --url "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>" \
  --url "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フィールドは最初は空になります。これらのフィールドは、マージリクエストの作成後に非同期的に入力されます。詳細については、イシュー386562とGitLabフォーラムの関連するディスカッションを参照してください。