# Merge request approvals API

> 原文：[https://docs.gitlab.com/ee/api/merge_request_approvals.html](https://docs.gitlab.com/ee/api/merge_request_approvals.html)

*   [Project-level MR approvals](#project-level-mr-approvals)
    *   [Get Configuration](#get-configuration)
    *   [Change configuration](#change-configuration)
    *   [Get project-level rules](#get-project-level-rules)
    *   [Create project-level rule](#create-project-level-rule)
    *   [Update project-level rule](#update-project-level-rule)
    *   [Delete project-level rule](#delete-project-level-rule)
    *   [Change allowed approvers](#change-allowed-approvers)
*   [Merge Request-level MR approvals](#merge-request-level-mr-approvals)
    *   [Get Configuration](#get-configuration-1)
    *   [Change approval configuration](#change-approval-configuration)
    *   [Change allowed approvers for Merge Request](#change-allowed-approvers-for-merge-request)
    *   [Get the approval state of merge requests](#get-the-approval-state-of-merge-requests)
    *   [Get merge request level rules](#get-merge-request-level-rules)
    *   [Create merge request level rule](#create-merge-request-level-rule)
    *   [Update merge request level rule](#update-merge-request-level-rule)
    *   [Delete merge request level rule](#delete-merge-request-level-rule)
*   [Approve Merge Request](#approve-merge-request)
*   [Unapprove Merge Request](#unapprove-merge-request)

# Merge request approvals API[](#merge-request-approvals-api-starter "Permalink")

配置项目中所有合并请求（MR）的批准. 必须对所有端点进行身份验证.

## Project-level MR approvals[](#project-level-mr-approvals "Permalink")

### Get Configuration[](#get-configuration "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.

您可以使用以下端点请求有关项目批准配置的信息：

```
GET /projects/:id/approvals 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |

```
{  "approvals_before_merge":  2,  "reset_approvals_on_push":  true,  "disable_overriding_approvers_per_merge_request":  false,  "merge_requests_author_approval":  true,  "merge_requests_disable_committers_approval":  false,  "require_password_to_approve":  true  } 
```

### Change configuration[](#change-configuration "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.

如果允许，则可以使用以下端点更改批准配置：

```
POST /projects/:id/approvals 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `approvals_before_merge` | integer | no | MR 可以合并之前需要多少批准. 在 12.0 中已弃用，以支持批准规则 API. |
| `reset_approvals_on_push` | boolean | no | 重置批准以进行新的推送 |
| `disable_overriding_approvers_per_merge_request` | boolean | no | 允许/禁止每个 MR 的替代批准者 |
| `merge_requests_author_approval` | boolean | no | 允许/禁止作者自行批准合并请求； `true`表示作者可以自行批准 |
| `merge_requests_disable_committers_approval` | boolean | no | 允许/禁止提交者自我批准合并请求 |
| `require_password_to_approve` | boolean | no | 在添加批准之前，需要批准者输入密码才能进行身份验证 |

```
{  "approvals_before_merge":  2,  "reset_approvals_on_push":  true,  "disable_overriding_approvers_per_merge_request":  false,  "merge_requests_author_approval":  false,  "merge_requests_disable_committers_approval":  false,  "require_password_to_approve":  true  } 
```

### Get project-level rules[](#get-project-level-rules "Permalink")

版本历史

*   在[GitLab Starter](https://about.gitlab.com/pricing/) 12.3 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) .
*   [GitLab Premium](https://about.gitlab.com/pricing/) 12.7 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/460)了`protected_branches`属性.

您可以使用以下端点请求有关项目批准规则的信息：

```
GET /projects/:id/approval_rules 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 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  }  ],  "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  }  ] 
```

### Create project-level rule[](#create-project-level-rule "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点创建项目批准规则：

```
POST /projects/:id/approval_rules 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `name` | string | yes | 批准规则的名称 |
| `approvals_required` | integer | yes | 此规则所需的批准数量 |
| `user_ids` | Array | no | 批准者的用户 ID |
| `group_ids` | Array | no | 小组的 ID 为批准者 |
| `protected_branch_ids` | Array | no | 受保护分支的 ID 范围 |

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

### Update project-level rule[](#update-project-level-rule "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点更新项目批准规则：

```
PUT /projects/:id/approval_rules/:approval_rule_id 
```

**重要提示：**不在`users` / `groups`参数中的批准者和组将被**删除**

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `approval_rule_id` | integer | yes | 批准规则的 ID |
| `name` | string | yes | 批准规则的名称 |
| `approvals_required` | integer | yes | 此规则所需的批准数量 |
| `user_ids` | Array | no | The ids of users as approvers |
| `group_ids` | Array | no | 小组的 ID 为批准者 |
| `protected_branch_ids` | Array | no | 受保护分支的 ID 范围 |

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

### Delete project-level rule[](#delete-project-level-rule "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点删除项目批准规则：

```
DELETE /projects/:id/approval_rules/:approval_rule_id 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `approval_rule_id` | integer | yes | 批准规则的 ID |

### Change allowed approvers[](#change-allowed-approvers "Permalink")

**注意：**此 API 端点已被弃用. 请改用批准规则 API. 在[GitLab Starter](https://about.gitlab.com/pricing/) 10.6 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/183) .

如果允许，则可以使用以下端点更改批准者和批准者组：

```
PUT /projects/:id/approvers 
```

**重要提示：**不在请求中的批准者和组将被**删除**

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `approver_ids` | Array | yes | 可以批准 MR 的用户 ID 数组 |
| `approver_group_ids` | Array | yes | 一组可以批准 MR 的组 ID |

```
{  "approvers":  [  {  "user":  {  "id":  5,  "name":  "John Doe6",  "username":  "user5",  "state":"active","avatar_url":"https://www.gravatar.com/avatar/4aea8cf834ed91844a2da4ff7ae6b491?s=80\u0026d=identicon","web_url":"http://localhost/user5"  }  }  ],  "approver_groups":  [  {  "group":  {  "id":  1,  "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  }  }  ],  "approvals_before_merge":  2,  "reset_approvals_on_push":  true,  "disable_overriding_approvers_per_merge_request":  false,  "merge_requests_author_approval":  true,  "merge_requests_disable_committers_approval":  false,  "require_password_to_approve":  true  } 
```

## Merge Request-level MR approvals[](#merge-request-level-mr-approvals "Permalink")

配置特定合并请求的批准. 必须对所有端点进行身份验证.

### Get Configuration[](#get-configuration-1 "Permalink")

在[GitLab Starter](https://about.gitlab.com/pricing/) 8.9 中引入.

您可以使用以下端点来请求有关合并请求的批准状态的信息：

```
GET /projects/:id/merge_requests/:merge_request_iid/approvals 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 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"  }  }  ],  } 
```

### Change approval configuration[](#change-approval-configuration "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.

如果你被允许，你可以改变`approvals_required`使用以下端点：

```
POST /projects/:id/merge_requests/:merge_request_iid/approvals 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 IID |
| `approvals_required` | integer | yes | 可以合并 MR 之前需要获得批准. 在 12.0 中已弃用，以支持批准规则 API. |

```
{  "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":  2,  "approved_by":  []  } 
```

### Change allowed approvers for Merge Request[](#change-allowed-approvers-for-merge-request "Permalink")

**注意：**此 API 端点已被弃用. 请改用批准规则 API. 在[GitLab Starter](https://about.gitlab.com/pricing/) 10.6 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/183) .

如果允许，则可以使用以下端点更改批准者和批准者组：

```
PUT /projects/:id/merge_requests/:merge_request_iid/approvers 
```

**重要提示：**不在请求中的批准者和组将被**删除**

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 IID |
| `approver_ids` | Array | yes | 可以批准 MR 的用户 ID 数组 |
| `approver_group_ids` | Array | yes | 一组可以批准 MR 的组 ID |

```
{  "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":  2,  "approved_by":  [],  "approvers":  [  {  "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"  }  }  ],  "approver_groups":  [  {  "group":  {  "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  }  }  ]  } 
```

### Get the approval state of merge requests[](#get-the-approval-state-of-merge-requests "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13712) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点来请求有关合并请求的批准状态的信息：

```
GET /projects/:id/merge_requests/:merge_request_iid/approval_state 
```

如果为合并请求创建了合并请求级别规则，则`approval_rules_overwritten`将为`true` . 如果不存在，则为`false` .

这包括有关已经批准的用户的更多信息（ `approved_by` ），以及规则是否已经批准的（ `approved` ）.

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 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 merge request level rules[](#get-merge-request-level-rules "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13712) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点来请求有关合并请求的批准规则的信息：

```
GET /projects/:id/merge_requests/:merge_request_iid/approval_rules 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 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  }  ] 
```

### Create merge request level rule[](#create-merge-request-level-rule "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点创建合并请求批准规则：

```
POST /projects/:id/merge_requests/:merge_request_iid/approval_rules 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 IID |
| `name` | string | yes | 批准规则的名称 |
| `approvals_required` | integer | yes | 此规则所需的批准数量 |
| `approval_project_rule_id` | integer | no | 项目级批准规则的 ID |
| `user_ids` | Array | no | 批准者的用户 ID |
| `group_ids` | Array | no | 小组的 ID 为批准者 |

**重要提示：**当`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  } 
```

### Update merge request level rule[](#update-merge-request-level-rule "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点更新合并请求批准规则：

```
PUT /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id 
```

**重要提示：**不在`users` / `groups`参数中的批准者和组将被**删除**

**重要提示：**不允许更新`report_approver`或`code_owner`规则. 这些是系统生成的规则.

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 ID |
| `approval_rule_id` | integer | yes | 批准规则的 ID |
| `name` | string | yes | 批准规则的名称 |
| `approvals_required` | integer | yes | 此规则所需的批准数量 |
| `user_ids` | Array | no | 批准者的用户 ID |
| `group_ids` | Array | no | 小组的 ID 为批准者 |

```
{  "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 merge request level rule[](#delete-merge-request-level-rule "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.

您可以使用以下端点删除合并请求批准规则：

```
DELETE /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id 
```

**重要提示：**不允许删除`report_approver`或`code_owner`规则. 这些是系统生成的规则.

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 ID |
| `approval_rule_id` | integer | yes | 批准规则的 ID |

## Approve Merge Request[](#approve-merge-request "Permalink")

在[GitLab Starter](https://about.gitlab.com/pricing/) 8.9 中引入.

如果允许，则可以使用以下端点批准合并请求：

```
POST /projects/:id/merge_requests/:merge_request_iid/approve 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 IID |
| `sha` | string | no | MR 的头 |
| `approval_password` | string | no | 当前用户的密码. 如果在项目设置中启用了" [**需要用户密码批准"，**](../user/project/merge_requests/merge_request_approvals.html#require-authentication-when-approving-a-merge-request)则为必需. |

`sha`参数的工作方式与[接受合并请求](merge_requests.html#accept-mr)时的工作方式相同：如果传递了它，则它必须与合并请求的当前 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"  }  }  ],  } 
```

## Unapprove Merge Request[](#unapprove-merge-request "Permalink")

在[GitLab Starter](https://about.gitlab.com/pricing/) 9.0 中引入.

如果您确实批准了合并请求，则可以使用以下端点取消批准它：

```
POST /projects/:id/merge_requests/:merge_request_iid/unapprove 
```

**Parameters:**

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 项目 ID |
| `merge_request_iid` | integer | yes | MR 的 IID |