マージリクエスト承認者API
プロジェクト内のすべてのマージリクエストの承認者設定。すべてのエンドポイントで認証されている必要があります。
プロジェクトレベルの MR 承認者
設定の取得
- 13.9でGitLab Premiumに移行しました。
approvers
とapprover_groups
フィールドは GitLab 12.3 で非推奨となり、常に空文字列を返すようになりました。この情報にアクセスするには、プロジェクトレベルの承認ルールを使用してください。
プロジェクトの承認設定に関する情報は、以下のエンドポイントを使ってリクエストできます:
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
}
設定の変更
13.9でGitLab Premiumに移行しました。
許可されている場合は、以下のエンドポイントを使用して承認者設定を変更できます:
POST /projects/:id/approvals
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approvals_before_merge (非推奨) | 整数。 | なし | マージリクエストをマージする前に必要な承認者の数。GitLab 12.3では非推奨。代わりに承認者ルールを使用してください。 |
disable_overriding_approvers_per_merge_request | boolean | なし | マージリクエストごとに承認者を上書きすることを許可または禁止します。 |
merge_requests_author_approval | boolean | なし | 作成者がマージリクエストを自己承認することを許可または禁止します。true は作成者が自己承認できることを意味します。 |
merge_requests_disable_committers_approval | boolean | なし | コミッターによるマージリクエストの自己承認を許可または禁止します。 |
require_password_to_approve | boolean | なし | 承認を追加する前に、承認者にパスワードの入力を要求します。 |
reset_approvals_on_push | boolean | なし | 新しいプッシュで承認者をリセットします。 |
selective_code_owner_removals | boolean | なし | コードオーナーのファイルが変更された場合、承認者をリセットします。reset_approvals_on_push が無効の場合のみ有効にできます。 |
{
"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": false,
"merge_requests_disable_committers_approval": false,
"require_password_to_approve": true
}
プロジェクトレベルのルールを取得
プロジェクトの承認ルールに関する情報は、以下のエンドポイントを使ってリクエストできます:
GET /projects/:id/approval_rules
page
およびper_page
ページ分割パラメーターを使用して、承認ルールのリストを制限します。
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
[
{
"id": 1,
"name": "security",
"rule_type": "regular",
"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": "master",
"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",
"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": "master",
"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
}
プロジェクトレベルのルール作成
次のエンドポイントを使ってプロジェクトの承認者ルールを作成することができます:
POST /projects/:id/approval_rules
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approvals_required | 整数。 | はい | この規則に必要な承認者の数。 |
name | 文字列です。 | はい | 承認規則の名前。 |
applies_to_all_protected_branches | boolean | なし | ルールをすべての保護ブランチに適用するかどうかを指定します。true に設定すると、protected_branch_ids の値は無視されます。デフォルトはfalse 。 GitLab 15.3で導入されました。 |
group_ids | 配列 | なし | 承認者としてのグループのID。 |
protected_branch_ids | 配列 | なし | ルールをスコープする保護ブランチのID。ID を特定するには、API を使用してください。 |
report_type | 文字列です。 | なし | ルールタイプがreport_approver の場合に必要なレポートタイプ。サポートされているレポートタイプはlicense_scanning (GitLab 15.9 で非推奨)とcode_coverage です。 |
rule_type | 文字列です。 | なし | ルールの種類。any_approver は設定済みのデフォルトルールで、approvals_required は0 。その他のルールはregular とreport_approver です。 |
user_ids | 配列 | なし | 承認者としてのユーザーのID。user_ids とusernames の両方を指定すると、両方のユーザーリストが追加されます。 |
usernames | 文字列配列 | なし | このルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids 。とusernames のuser_ids 両方を指定 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": "master",
"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}'
別の例として、ユーザー固有のルールを作成することもできます:
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]}' \
https://gitlab.example.com/api/v4/projects/<project_id>/approval_rules
プロジェクトレベルのルールの更新
プロジェクトの承認ルールを更新するには、以下のエンドポイントを使います:
PUT /projects/:id/approval_rules/:approval_rule_id
users
またはgroups
パラメーターにない非表示グループを除く)が削除されます。非表示グループとは、ユーザーに表示権限がない非公開グループです。デフォルトでは、remove_hidden_groups
パラメータがtrue
でない限り、非表示グループは削除されません。これにより、ユーザーが承認ルールを更新したときに、非表示グループが意図せずに削除されることがなくなります。サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approvals_required | 整数。 | はい | この規則に必要な承認者の数。 |
approval_rule_id | 整数。 | はい | 承認規則の ID。 |
name | 文字列です。 | はい | 承認規則の名前。 |
applies_to_all_protected_branches | boolean | なし | ルールをすべての保護ブランチに適用するかどうかを指定します。true に設定すると、protected_branch_ids の値は無視されます。デフォルトはfalse 。 GitLab 15.3で導入されました。 |
group_ids | 配列 | なし | 承認者としてのグループのID。 |
protected_branch_ids | 配列 | なし | ルールをスコープする保護ブランチのID。ID を特定するには、API を使用してください。 |
remove_hidden_groups | boolean | なし | 非表示グループを承認ルールから削除するかどうか。 |
user_ids | 配列 | なし | 承認者としてのユーザーのID。user_ids とusernames の両方を指定すると、両方のユーザーリストが追加されます。 |
usernames | 文字列配列 | なし | このルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids 。とusernames のuser_ids 両方を指定 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": "master",
"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
}
プロジェクトレベルのルールを削除します。
13.9でGitLab Premiumに移行しました。
プロジェクトの承認者ルールを削除するには、以下のエンドポイントを使用します:
DELETE /projects/:id/approval_rules/:approval_rule_id
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数。 | はい | 承認規則の ID。 |
リクエストレベルの MR 承認者をマージします。
特定のマージリクエストに対する承認者の設定。すべてのエンドポイントで認証されている必要があります。
設定の取得
13.9でGitLab Premiumに移行しました。
マージリクエストの承認状況については、以下のエンドポイントを使用して情報をリクエストできます:
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"
}
}
]
}
承認者設定の変更 (削除)
POST /projects/:id/merge_requests/:merge_request_iid/approvals
エンドポイントはGitLab 12.3で非推奨となり、GitLab 16.0で削除されました。マージリクエストに必要な承認者を変更するには、このページのマージリクエストレベルルールの作成で説明されている/approval_rules
エンドポイントを使用してください。
マージリクエストの承認者の状態を取得します。
13.9でGitLab Premiumに移行しました。
マージリクエストの承認状況に関する情報をリクエストするには、以下のエンドポイントを使用します:
GET /projects/:id/merge_requests/:merge_request_iid/approval_state
マージ・リクエストに対してマージ・リクエスト・レベル・ルールが作成されている場合、approval_rules_overwritten
はtrue
です。何もない場合はfalse
です。
これには、すでに承認したユーザー (approved_by
) や、ルールがすでに承認されているかどうか (approved
) に関する追加情報が含まれます。
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
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
}
]
}
マージリクエストレベルルールの取得
マージリクエストの承認ルールに関する情報は、次のエンドポイントを使ってリクエストできます:
GET /projects/:id/merge_requests/:merge_request_iid/approval_rules
page
およびper_page
ページ分割パラメーターを使用して、承認ルールのリストを制限します。
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数。 | はい | マージリクエストの IID。 |
[
{
"id": 1,
"name": "security",
"rule_type": "regular",
"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
}
]
単一のマージ・リクエスト・レベルのルールを取得します。
GitLab 14.10で導入されました。
単一のマージリクエスト承認ルールに関する情報を、次のエンドポイントを使ってリクエストすることができます:
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",
"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
}
マージリクエストレベルルールの作成
13.9でGitLab Premiumに移行しました。
マージリクエストの承認ルールは、以下のエンドポイントを使用して作成できます:
POST /projects/:id/merge_requests/:merge_request_iid/approval_rules
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス |
approvals_required | 整数。 | はい | この規則に必要な承認者の数。 |
merge_request_iid | 整数。 | はい | マージリクエストの IID。 |
name | 文字列です。 | はい | 承認規則の名前。 |
approval_project_rule_id | 整数。 | なし | プロジェクトレベルの承認規則のID。 |
group_ids | 配列 | なし | 承認者としてのグループのID。 |
user_ids | 配列 | なし | 承認者としてのユーザーのID。user_ids とusernames の両方を指定すると、両方のユーザーリストが追加されます。 |
usernames | 文字列配列 | なし | このルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids 。とusernames のuser_ids 両方を指定 user_ids すると、両方のユーザーリストが追加されます。 |
重要:approval_project_rule_id
を設定すると、プロジェクト レベル ルールのname
、users
、groups
がコピーされます。指定されたapprovals_required
が使用されます。
{
"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
}
マージリクエストレベルルールの更新
13.9でGitLab Premiumに移行しました。
マージリクエストの承認ルールは、以下のエンドポイントを使用して更新できます:
PUT /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id
重要: users
/groups
パラメーターにない承認者とグループは削除されます。
重要: report_approver
またはcode_owner
ルールを更新することはできません。これらはシステムが生成したルールです。
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数。 | はい | 承認規則の ID。 |
merge_request_iid | 整数。 | はい | マージリクエストの IID。 |
approvals_required | 整数。 | なし | この規則に必要な承認者の数。 |
group_ids | 配列 | なし | 承認者としてのグループのID。 |
name | 文字列です。 | なし | 承認規則の名前。 |
remove_hidden_groups | boolean | なし | 非表示グループを削除するかどうか。 |
user_ids | 配列 | なし | 承認者としてのユーザーのID。user_ids とusernames の両方を指定すると、両方のユーザーリストが追加されます。 |
usernames | 文字列配列 | なし | このルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids 。とusernames のuser_ids 両方を指定 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
}
マージリクエストレベルルールの削除
13.9でGitLab Premiumに移行しました。
マージリクエストの承認者ルールを削除するには、以下のエンドポイントを使用します:
DELETE /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id
インポート:重要:report_approver
またはcode_owner
ルールの削除は許可されていません。これらはシステムが生成したルールです。
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_rule_id | 整数。 | はい | 承認規則の ID。 |
merge_request_iid | 整数。 | はい | マージリクエストの IID。 |
マージリクエストを承認します。
13.9でGitLab Premiumに移行しました。
許可されていれば、以下のエンドポイントを使ってマージリクエストを承認することができます:
POST /projects/:id/merge_requests/:merge_request_iid/approve
サポートされる属性:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
approval_password | 文字列です。 | なし | 現在のユーザーのパスワード。必要な場合 プロジェクト設定でRequire user password to approveがプロジェクト設定で有効になっている場合は必要です。 |
merge_request_iid | 整数。 | はい | マージリクエストの IID。 |
sha | 文字列です。 | なし | マージリクエストのHEAD 。 |
sha
パラメータはマージリクエストを承認するときと同じように動作します: パラメータが渡された場合、承認が追加されるためにはマージリクエストの現在の HEAD と一致しなければなりません。一致しない場合、応答コードは409
です。
{
"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"
}
},
{
"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"
}
}
]
}
マージリクエストの承認取り消し
13.9でGitLab Premiumに移行しました。
マージリクエストを承認した場合は、次のエンドポイントを使って承認を取り消すことができます:
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>" "https://gitlab.example.com/api/v4/projects/76/merge_requests/1/reset_approvals"