マージリクエスト承認API
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、マージリクエスト承認を管理します。
すべてのエンドポイントで認証が必要です。
マージリクエストを承認する
指定されたマージリクエストを承認します。現在認証済みユーザーは、承認が可能な承認者である必要があります。
shaパラメータは、マージリクエストの現在のバージョンを承認していることを保証します。定義されている場合、値はマージリクエストのHEADコミットSHAと一致する必要があります。不一致があると、409 Conflict応答が返されます。これは、マージリクエストの承認の動作と一致します。
POST /projects/:id/merge_requests/:merge_request_iid/approveサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_password | 文字列 | いいえ | 現在のユーザーのパスワード。プロジェクトの設定で、Require user re-authentication to approve(承認するにはユーザーの再認証を要求する)が有効になっている場合は、必須です。グループまたはGitLab Self-ManagedインスタンスがSAML認証を強制するように設定されている場合、常に失敗します。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
sha | 文字列 | いいえ | マージリクエストのHEAD。 |
{
"id": 5,
"iid": 5,
"project_id": 1,
"title": "Approvals API",
"description": "Test",
"state": "opened",
"created_at": "2016-06-08T00:19:52.638Z",
"updated_at": "2016-06-09T21:32:14.105Z",
"merge_status": "can_be_merged",
"approvals_required": 2,
"approvals_left": 0,
"approved_by": [
{
"user": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url": "http://localhost:3000/root"
},
"approved_at": "2016-06-10T04:21:41.050Z"
},
{
"user": {
"name": "Nico Cartwright",
"username": "ryley",
"id": 2,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/cf7ad14b34162a76d593e3affca2adca?s=80\u0026d=identicon",
"web_url": "http://localhost:3000/ryley"
},
"approved_at": "2016-06-10T09:17:13.520Z"
}
]
}自動化されたマージリクエストの承認
APIを使用してマージリクエストを作成し、すぐに承認すると、自動化によってコミットが完全に処理される前に、マージリクエストが承認される可能性があります。デフォルトでは、新しいコミットをマージリクエストに追加すると、既存のすべての承認がリセットされます。この場合、アクティビティー領域には、次のような一連のメッセージがマージリクエストに表示されます:
(botname)が5分前にこのマージリクエストを承認しました(botname)が5分前に1件のコミットを追加しました(botname)が5分前にブランチにプッシュすることにより、(botname)から承認をリセットしました
コミットの処理が完了する前に自動承認が適用されないようにするには、自動化で次のようになるまで待機(またはsleep)関数を追加する必要があります:
detailed_merge_status属性が、checkingまたはapprovals_syncingのいずれの状態にもありません。- マージリクエストの差分にNULLではない
patch_id_shaが含まれています。
マージリクエストを却下する
指定されたマージリクエストから、現在認証済みユーザーの承認を削除します。
POST /projects/:id/merge_requests/:merge_request_iid/unapproveサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
マージリクエストの承認をリセットする
指定されたマージリクエストのすべての承認をリセットします。
有効なプロジェクトまたはグループトークンを持つボットユーザーのみが利用できます。一般ユーザーには、401 Unauthorized応答が返されます。
PUT /projects/:id/merge_requests/:merge_request_iid/reset_approvals| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数 | はい | マージリクエストの内部ID。 |
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/76/merge_requests/1/reset_approvals"グループの承認ルール
これらのエンドポイントは、プロジェクトとその承認ルールに適用されます。すべてのエンドポイントで認証が必要です。
プロジェクトの承認設定を取得します
プロジェクトの承認設定を取得します。
GET /projects/:id/approvalsサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
{
"approvers": [], // Deprecated in GitLab 12.3, always returns empty
"approver_groups": [], // Deprecated in GitLab 12.3, always returns empty
"approvals_before_merge": 2, // Deprecated in GitLab 12.3, use Approval Rules instead
"reset_approvals_on_push": true,
"selective_code_owner_removals": false,
"disable_overriding_approvers_per_merge_request": false,
"merge_requests_author_approval": true,
"merge_requests_disable_committers_approval": false,
"require_password_to_approve": true, // Deprecated in 16.9, use require_reauthentication_to_approve instead
"require_reauthentication_to_approve": true
}プロジェクトの承認設定を更新する
プロジェクトの承認設定を更新します。現在認証済みユーザーは、承認が可能な承認者である必要があります。
POST /projects/:id/approvalsサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approvals_before_merge(非推奨) | 整数 | いいえ | マージリクエストをマージするために必要な承認の数。GitLab 12.3で非推奨になりました。代わりに、承認ルールを作成します。 |
disable_overriding_approvers_per_merge_request | ブール値 | いいえ | trueの場合、マージリクエスト内の承認者のオーバーライドを防ぎます。 |
merge_requests_author_approval | ブール値 | いいえ | trueの場合、作成者は自分のマージリクエストを自己承認できます。 |
merge_requests_disable_committers_approval | ブール値 | いいえ | trueの場合、マージリクエストでコミットするユーザーは、それを承認できません。 |
require_password_to_approve(非推奨) | ブール値 | いいえ | trueの場合、承認者は、承認を追加する前にパスワードで認証する必要があります。GitLab 16.9で非推奨になりました。代わりにrequire_reauthentication_to_approveを使用してください。 |
require_reauthentication_to_approve | ブール値 | いいえ | trueの場合、承認を追加する前に承認者の認証が必須になります。GitLab 17.1で導入されました。 |
reset_approvals_on_push | ブール値 | いいえ | trueの場合、プッシュ時に承認がリセットされます。 |
selective_code_owner_removals | ブール値 | いいえ | trueの場合、コードの所有者のファイルが変更されると、コードの所有者からの承認がリセットされます。このフィールドを使用するには、reset_approvals_on_pushがfalseである必要があります。 |
{
"approvals_before_merge": 2, // Use Approval Rules instead
"reset_approvals_on_push": true,
"selective_code_owner_removals": false,
"disable_overriding_approvers_per_merge_request": false,
"merge_requests_author_approval": false,
"merge_requests_disable_committers_approval": false,
"require_password_to_approve": true,
"require_reauthentication_to_approve": true
}プロジェクトのすべての承認ルールをリストする
指定されたプロジェクトのすべての承認ルールと、関連する詳細をリストします。
GET /projects/:id/approval_rules承認ルールのリストを制限するには、pageおよびper_pageページネーションパラメータを使用します。
サポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
[
{
"id": 1,
"name": "security",
"rule_type": "regular",
"report_type": null,
"eligible_approvers": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 3,
"users": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"applies_to_all_protected_branches": false,
"protected_branches": [
{
"id": 1,
"name": "main",
"push_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"code_owner_approval_required": "false"
}
],
"contains_hidden_groups": false,
},
{
"id": 2,
"name": "Coverage-Check",
"rule_type": "report_approver",
"report_type": "code_coverage",
"eligible_approvers": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 3,
"users": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"applies_to_all_protected_branches": false,
"protected_branches": [
{
"id": 1,
"name": "main",
"push_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"code_owner_approval_required": "false"
}
],
"contains_hidden_groups": false,
}
]プロジェクトの承認ルールを取得する
プロジェクトの指定された承認ルールに関する情報を取得します。
GET /projects/:id/approval_rules/:approval_rule_idサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数 | はい | 承認ルールのID。 |
{
"id": 1,
"name": "security",
"rule_type": "regular",
"report_type": null,
"eligible_approvers": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 3,
"users": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"applies_to_all_protected_branches": false,
"protected_branches": [
{
"id": 1,
"name": "main",
"push_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"code_owner_approval_required": "false"
}
],
"contains_hidden_groups": false
}プロジェクトの承認ルールを作成する
プロジェクトの承認ルールを作成します。
rule_typeフィールドは、次のルールタイプをサポートします:
any_approver:approvals_requiredが0に設定された、事前設定済みのデフォルトルール。regular: 通常のマージリクエストの承認ルールに使用されます。report_approver: フィールドは、設定され有効になっているマージリクエスト承認ポリシーからGitLabが承認ルールを作成する際に使用されます。このAPIで承認ルールを作成するときは、この値を使用しないでください。
POST /projects/:id/approval_rulesサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approvals_required | 整数 | はい | このルールに必要な承認の数。 |
name | 文字列 | はい | 承認ルールの名前。1024文字に制限されています。 |
applies_to_all_protected_branches | ブール値 | いいえ | trueの場合、ルールはすべての保護ブランチに適用され、protected_branch_ids属性は無視されます。 |
group_ids | 配列 | いいえ | 承認者としてのグループのID。 |
protected_branch_ids | 配列 | いいえ | ルールの範囲を指定する保護ブランチのID。IDを識別するには、保護されたブランチをリスト APIを使用します。 |
report_type | 文字列 | いいえ | レポートタイプ。ルールタイプがreport_approverの場合に必須。サポートされているレポートタイプは、license_scanning(GitLab 15.9で非推奨になりました)とcode_coverageです。 |
rule_type | 文字列 | いいえ | ルールタイプ。any_approver、regular、およびreport_approverを含む、サポートされている値。 |
user_ids | 配列 | いいえ | 承認者としてのユーザーのID。usernamesと併用すると、ユーザーのリストが両方とも追加されます。 |
usernames | 文字列配列 | いいえ | 承認者のユーザー名。user_idsと併用すると、ユーザーのリストが両方とも追加されます。 |
{
"id": 1,
"name": "security",
"rule_type": "regular",
"eligible_approvers": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 1,
"users": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"applies_to_all_protected_branches": false,
"protected_branches": [
{
"id": 1,
"name": "main",
"push_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"code_owner_approval_required": "false"
}
],
"contains_hidden_groups": false
}必要な承認者のデフォルト数を0から増やすには、次のようにします:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header 'Content-Type: application/json' \
--data '{"name": "Any name", "rule_type": "any_approver", "approvals_required": 2}' \
--url "https://gitlab.example.com/api/v4/projects/<project_id>/approval_rules"別の例として、ユーザー固有のルールを作成する方法を次に示します:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header 'Content-Type: application/json' \
--data '{"name": "Name of your rule", "approvals_required": 3, "user_ids": [123, 456, 789]}' \
--url "https://gitlab.example.com/api/v4/projects/<project_id>/approval_rules"プロジェクトの承認ルールを更新する
プロジェクトの指定された承認ルールを更新します。このエンドポイントは、group_ids、user_ids、またはusernames属性で定義されていない承認者とグループを削除します。
usersまたはgroupsパラメータに含まれていない隠しグループ(ユーザーに表示する権限がないプライベートグループ)は、デフォルトで保持されます。それらを削除するには、remove_hidden_groupsをtrueに設定します。これにより、ユーザーが承認ルールを更新するときに、非表示のグループが誤って削除されなくなります。
PUT /projects/:id/approval_rules/:approval_rule_idサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
approval_rule_id | 整数 | はい | 承認ルールのID。 |
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
applies_to_all_protected_branches | ブール値 | いいえ | trueの場合、ルールはすべての保護ブランチに適用され、protected_branch_ids属性は無視されます。 |
approvals_required | 整数 | いいえ | このルールに必要な承認の数。 |
group_ids | 配列 | いいえ | 承認者としてのグループのID。 |
name | 文字列 | いいえ | 承認ルールの名前。1024文字に制限されています。 |
protected_branch_ids | 配列 | いいえ | ルールの範囲を指定する保護ブランチのID。IDを識別するには、保護されたブランチをリスト APIを使用します。 |
remove_hidden_groups | ブール値 | いいえ | trueの場合、承認ルールから隠しグループが削除されます。 |
user_ids | 配列 | いいえ | 承認者としてのユーザーのID。usernamesと併用すると、ユーザーのリストが両方とも追加されます。 |
usernames | 文字列配列 | いいえ | 承認者のユーザー名。user_idsと併用すると、ユーザーのリストが両方とも追加されます。 |
{
"id": 1,
"name": "security",
"rule_type": "regular",
"eligible_approvers": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 1,
"users": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"applies_to_all_protected_branches": false,
"protected_branches": [
{
"id": 1,
"name": "main",
"push_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"code_owner_approval_required": "false"
}
],
"contains_hidden_groups": false
}プロジェクトの承認ルールを削除する
指定されたプロジェクトの承認ルールを削除します。
DELETE /projects/:id/approval_rules/:approval_rule_idサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数 | はい | 承認ルールのID。 |
マージリクエストの承認ルール
これらのエンドポイントは、個々のマージリクエストに適用されます。すべてのエンドポイントで認証が必要です。
マージリクエストの承認状態を取得する
指定されたマージリクエストの承認状態を取得します。
応答では、approved_byには、承認が承認ルールを満たしているかどうかに関係なく、マージリクエストのすべての承認者に関する情報が含まれています。マージリクエストの承認ルールに関する詳細情報、および受信した承認がそれらのルールを満たしているかどうかについては、/approval_stateエンドポイントを参照してください。
GET /projects/:id/merge_requests/:merge_request_iid/approvalsサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
{
"id": 5,
"iid": 5,
"project_id": 1,
"title": "Approvals API",
"description": "Test",
"state": "opened",
"created_at": "2016-06-08T00:19:52.638Z",
"updated_at": "2016-06-08T21:20:42.470Z",
"merge_status": "cannot_be_merged",
"approvals_required": 2,
"approvals_left": 1,
"approved_by": [
{
"user": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url": "http://localhost:3000/root"
},
"approved_at": "2016-06-09T01:45:21.720Z"
}
]
}マージリクエストの承認の詳細を取得する
指定されたマージリクエストの承認の詳細を取得します。
ユーザーがマージリクエストの承認ルールを変更した場合、応答には以下が含まれます:
approval_rules_overwritten:trueの場合、デフォルトの承認ルールが変更されたことを示します。approved:trueの場合、関連付けられた承認ルールが承認されたことを示します。approved_by: 定義されている場合は、関連付けられた承認ルールを承認したユーザーの詳細を示します。承認ルールに一致しないユーザーは返されません。すべての承認ユーザーを返すには、/approvalsエンドポイントを参照してください。
GET /projects/:id/merge_requests/:merge_request_iid/approval_stateサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
{
"approval_rules_overwritten": true,
"rules": [
{
"id": 1,
"name": "Ruby",
"rule_type": "regular",
"eligible_approvers": [
{
"id": 4,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"approvals_required": 2,
"users": [
{
"id": 4,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [],
"contains_hidden_groups": false,
"approved_by": [
{
"id": 4,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"source_rule": null,
"approved": true,
"overridden": false
}
]
}マージリクエストのすべての承認ルールをリストする
指定されたマージリクエストのすべての承認ルールと、関連する詳細をリストします。
pageおよびper_pageページネーションパラメータを使用して、承認ルールのリストを制限します。
GET /projects/:id/merge_requests/:merge_request_iid/approval_rulesサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
[
{
"id": 1,
"name": "security",
"rule_type": "regular",
"report_type": null,
"eligible_approvers": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 3,
"source_rule": null,
"users": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"contains_hidden_groups": false,
"overridden": false
},
{
"id": 2,
"name": "Coverage-Check",
"rule_type": "report_approver",
"report_type": "code_coverage",
"eligible_approvers": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 3,
"source_rule": null,
"users": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"contains_hidden_groups": false,
"overridden": false
}
]特定のマージリクエストの承認ルールを取得する
特定のマージリクエストの承認ルールに関する情報を取得します。
GET /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_idサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数 | はい | 承認ルールのID。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
{
"id": 1,
"name": "security",
"rule_type": "regular",
"report_type": null,
"eligible_approvers": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 3,
"source_rule": null,
"users": [
{
"id": 5,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"contains_hidden_groups": false,
"overridden": false
}マージリクエストの承認ルールを作成する
特定のマージリクエストの承認ルールを作成します。approval_project_rule_idがプロジェクトからの既存の承認ルールのIDで設定されている場合、このエンドポイントは次のようになります:
- プロジェクトのルールから、
name、users、およびgroupsの値をコピーします。 - 指定した
approvals_required値を使用します。
POST /projects/:id/merge_requests/:merge_request_iid/approval_rulesサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approvals_required | 整数 | はい | このルールに必要な承認の数。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
name | 文字列 | はい | 承認ルールの名前。1024文字に制限されています。 |
approval_project_rule_id | 整数 | いいえ | プロジェクトの承認ルールのID。 |
group_ids | 配列 | いいえ | 承認者としてのグループのID。 |
user_ids | 配列 | いいえ | 承認者としてのユーザーのID。usernamesと併用すると、ユーザーのリストが両方とも追加されます。 |
usernames | 文字列配列 | いいえ | 承認者のユーザー名。user_idsと併用すると、ユーザーのリストが両方とも追加されます。 |
{
"id": 1,
"name": "security",
"rule_type": "regular",
"eligible_approvers": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 1,
"source_rule": null,
"users": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"contains_hidden_groups": false,
"overridden": false
}マージリクエストの承認ルールを更新する
マージリクエストの指定された承認ルールを更新します。このエンドポイントは、group_ids、user_ids、またはusernames属性に含まれていない承認者とグループを削除します。
report_approverまたはcode_ownerのルールはシステムによって生成されるため、編集できません。
PUT /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_idサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数 | はい | 承認ルールのID。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
approvals_required | 整数 | いいえ | このルールに必要な承認の数。 |
group_ids | 配列 | いいえ | 承認者としてのグループのID。 |
name | 文字列 | いいえ | 承認ルールの名前。1024文字に制限されています。 |
remove_hidden_groups | ブール値 | いいえ | trueの場合、隠しグループを削除します。 |
user_ids | 配列 | いいえ | 承認者としてのユーザーのID。usernamesと併用すると、ユーザーのリストが両方とも追加されます。 |
usernames | 文字列配列 | いいえ | 承認者のユーザー名。user_idsと併用すると、ユーザーのリストが両方とも追加されます。 |
{
"id": 1,
"name": "security",
"rule_type": "regular",
"eligible_approvers": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
},
{
"id": 50,
"name": "Group Member 1",
"username": "group_member_1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/group_member_1"
}
],
"approvals_required": 1,
"source_rule": null,
"users": [
{
"id": 2,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [
{
"id": 5,
"name": "group1",
"path": "group1",
"description": "",
"visibility": "public",
"lfs_enabled": false,
"avatar_url": null,
"web_url": "http://localhost/groups/group1",
"request_access_enabled": false,
"full_name": "group1",
"full_path": "group1",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
],
"contains_hidden_groups": false,
"overridden": false
}マージリクエストの承認ルールを削除する
指定されたマージリクエストの承認ルールを削除します。
DELETE /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_idreport_approverまたはcode_ownerのルールはシステムによって生成されるため、編集できません。
サポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数 | はい | 承認ルールのID。 |
merge_request_iid | 整数 | はい | マージリクエストのIID。 |
グループの承認ルール
- ステータス: 実験的機能
GitLab Self-Managedでは、デフォルトでこの機能は使用できません。管理者がapproval_group_rulesという名前の機能フラグを有効にすると、この機能を使用できるようになります。GitLab.comとGitLab Dedicatedでは、この機能は使用できません。この機能は本番環境での使用には対応していません。
グループ承認ルールは、グループに属するプロジェクトのすべての保護ブランチに適用されます。
グループのすべての承認ルールをリストする
指定されたグループのすべての承認ルールと、関連する詳細をリストします。グループ管理者に制限されています。
pageおよびper_pageページネーションパラメータを使用して、承認ルールのリストを制限します。
GET /groups/:id/approval_rulesサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
リクエスト例:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/29/approval_rules"レスポンス例:
[
{
"id": 2,
"name": "rule1",
"rule_type": "any_approver",
"report_type": null,
"eligible_approvers": [],
"approvals_required": 3,
"users": [],
"groups": [],
"contains_hidden_groups": false,
"protected_branches": [],
"applies_to_all_protected_branches": true
},
{
"id": 3,
"name": "rule2",
"rule_type": "code_owner",
"report_type": null,
"eligible_approvers": [],
"approvals_required": 2,
"users": [],
"groups": [],
"contains_hidden_groups": false,
"protected_branches": [],
"applies_to_all_protected_branches": true
},
{
"id": 4,
"name": "rule2",
"rule_type": "report_approver",
"report_type": "code_coverage",
"eligible_approvers": [],
"approvals_required": 2,
"users": [],
"groups": [],
"contains_hidden_groups": false,
"protected_branches": [],
"applies_to_all_protected_branches": true
}
]グループの承認ルールを作成する
グループの承認ルールを作成します。グループ管理者に制限されています。
APIから承認ルールをビルドするときは、rule_typeフィールドを使用しないでください。フィールドは、次のルールタイプをサポートします:
any_approver:approvals_requiredが0に設定された、事前設定済みのデフォルトルール。regular: 通常のマージリクエストの承認ルールに使用されます。report_approver: フィールドは、設定され有効になっているマージリクエスト承認ポリシーからGitLabが承認ルールを作成する際に使用されます。
POST /groups/:id/approval_rulesサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | グループのIDまたはURLエンコードされたパス。 |
approvals_required | 整数 | はい | このルールに必要な承認の数。 |
name | 文字列 | はい | 承認ルールの名前。1024文字に制限されています。 |
group_ids | 配列 | いいえ | 承認者としてのグループのID。 |
rule_type | 文字列 | いいえ | ルールタイプ。any_approver、regular、およびreport_approverを含む、サポートされている値。 |
user_ids | 配列 | いいえ | 承認者としてのユーザーのID。 |
リクエスト例:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/29/approval_rules?name=security&approvals_required=2"レスポンス例:
{
"id": 5,
"name": "security",
"rule_type": "any_approver",
"eligible_approvers": [],
"approvals_required": 2,
"users": [],
"groups": [],
"contains_hidden_groups": false,
"protected_branches": [
{
"id": 5,
"name": "master",
"push_access_levels": [
{
"id": 5,
"access_level": 40,
"access_level_description": "Maintainers",
"deploy_key_id": null,
"user_id": null,
"group_id": null
}
],
"merge_access_levels": [
{
"id": 5,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
],
"allow_force_push": false,
"unprotect_access_levels": [],
"code_owner_approval_required": false,
"inherited": false
}
],
"applies_to_all_protected_branches": true
}グループの承認ルールを更新する
グループの承認ルールを更新します。グループ管理者に制限されています。
APIから承認ルールをビルドするときは、rule_typeフィールドを使用しないでください。フィールドは、次のルールタイプをサポートします:
any_approver:approvals_requiredが0に設定された、事前設定済みのデフォルトルール。regular: 通常のマージリクエストの承認ルールに使用されます。report_approver: フィールドは、設定され有効になっているマージリクエスト承認ポリシーからGitLabが承認ルールを作成する際に使用されます。
PUT /groups/:id/approval_rules/:approval_rule_idサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
approval_rule_id | 整数 | はい | 承認ルールのID。 |
id | 整数または文字列 | はい | グループのIDまたはURLエンコードされたパス。 |
approvals_required | 文字列 | いいえ | このルールに必要な承認の数。 |
group_ids | 整数 | いいえ | 承認者としてのユーザーのID。 |
name | 文字列 | いいえ | 承認ルールの名前。1024文字に制限されています。 |
rule_type | 配列 | いいえ | ルールタイプ。any_approver、regular、およびreport_approverを含む、サポートされている値。 |
user_ids | 配列 | いいえ | 承認者としてのグループのID。 |
リクエスト例:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/29/approval_rules/5?name=security2&approvals_required=1"レスポンス例:
{
"id": 5,
"name": "security2",
"rule_type": "any_approver",
"eligible_approvers": [],
"approvals_required": 1,
"users": [],
"groups": [],
"contains_hidden_groups": false,
"protected_branches": [
{
"id": 5,
"name": "master",
"push_access_levels": [
{
"id": 5,
"access_level": 40,
"access_level_description": "Maintainers",
"deploy_key_id": null,
"user_id": null,
"group_id": null
}
],
"merge_access_levels": [
{
"id": 5,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
],
"allow_force_push": false,
"unprotect_access_levels": [],
"code_owner_approval_required": false,
"inherited": false
}
],
"applies_to_all_protected_branches": true
}