成员角色 API

  • 引入于极狐GitLab 15.4。部署在 customizable_roles 功能标志后,默认禁用。
  • 默认启用于极狐GitLab 15.9。
  • 读取漏洞添加于极狐GitLab 16.0。
  • 管理漏洞添加于极狐GitLab 16.1。
  • 读取依赖项添加于极狐GitLab 16.3。
  • 名称和描述字段添加于极狐GitLab 16.3。
  • 管理合并请求引入于极狐GitLab 16.4,功能标志admin_merge_request。默认禁用。
  • 功能标志 admin_merge_request 在极狐GitLab 16.5 中被移除。
  • 管理群组成员引入于极狐GitLab 16.5,使用名为 admin_group_member功能标志。默认禁用。该功能标志在极狐GitLab 16.6 中被移除。
  • 管理项目访问令牌引入于极狐GitLab 16.5,使用名为 manage_project_access_tokens功能标志。默认禁用。
  • 归档项目引入于极狐GitLab 16.7。
  • 删除项目引入于极狐GitLab 16.8。
  • 管理群组访问令牌引入于极狐GitLab 16.8。
  • 管理Terraform状态引入于极狐GitLab 16.8。
  • 在极狐GitLab 私有化部署实例上创建和移除示例级别的自定义角色引入于极狐GitLab 16.9。

管理实例成员角色

先决条件:

您可以获取、创建和删除实例范围内的成员角色。

获取所有的实例成员角色

获取实例上的所有成员角色。

GET /member_roles

示例请求:

curl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles"

示例响应:

[
  {
    "id": 2,
    "name": "Instance custom role",
    "description": "Custom guest that can read code",
    "group_id": null,
    "base_access_level": 10,
    "admin_cicd_variables": false,
    "admin_compliance_framework": false,
    "admin_group_member": false,
    "admin_merge_request": false,
    "admin_push_rules": false,
    "admin_terraform_state": false,
    "admin_vulnerability": false,
    "admin_web_hook": false,
    "archive_project": false,
    "manage_deploy_tokens": false,
    "manage_group_access_tokens": false,
    "manage_merge_request_settings": false,
    "manage_project_access_tokens": false,
    "manage_security_policy_link": false,
    "read_code": true,
    "read_runners": false,
    "read_dependency": false,
    "read_vulnerability": false,
    "remove_group": false,
    "remove_project": false
  }
]

创建实例成员角色

创建实例级别的成员角色。

POST /member_roles

支持的属性。

Attribute Type Required Description
name string yes 成员角色的名称。
description string no 成员角色的描述。
base_access_level integer yes 配置角色的基础访问级别。有效值为 10(访客)、 15(计划者)、 20(报告者)、 30(开发者)、 40(维护者) 或 50 (拥有者)。
admin_cicd_variables boolean no 创建、读、更新和删除 CI/CD 变量的权限。
admin_compliance_framework boolean no 管理合规框架的权限。
admin_group_member boolean no 在群组中添加、移除和分派成员的权限。
admin_merge_request boolean no 审核合并请求的权限。
admin_push_rules boolean no 在群组或项目级别配置仓库推送规则的权限。
admin_terraform_state boolean no 管理项目 terraform 状态的权限。
admin_vulnerability boolean no 编辑漏洞对象的权限,包括状态和链接的议题。
admin_web_hook boolean no 管理 webhook 的权限。
archive_project boolean no 归档项目的权限。
manage_deploy_tokens boolean no 管理部署令牌的权限。
manage_group_access_tokens boolean no 管理群组访问令牌的权限。
manage_merge_request_settings boolean no 配置合并请求设置的权限。
manage_project_access_tokens boolean no 配置项目访问令牌的权限。
manage_security_policy_link boolean no 链接安全策略项目的权限。
read_code boolean no 阅读项目代码的权限。
read_runners boolean no 查看项目 runner 的权限。
read_dependency boolean no 阅读项目依赖的权限。
read_vulnerability boolean no 阅读项目漏洞的权限。
remove_group boolean no 删除或恢复群组的权限。
remove_project boolean no 删除项目的权限。

更多可用权限的信息,可查看自定义权限

示例请求:

 curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"name" : "Custom guest (instance)", "base_access_level" : 10, "read_code" : true}' "https://gitlab.example.com/api/v4/member_roles"

示例响应:

{
  "id": 3,
  "name": "Custom guest (instance)",
  "group_id": null,
  "description": null,
  "base_access_level": 10,
  "admin_cicd_variables": false,
  "admin_compliance_framework": false,
  "admin_group_member": false,
  "admin_merge_request": false,
  "admin_push_rules": false,
  "admin_terraform_state": false,
  "admin_vulnerability": false,
  "admin_web_hook": false,
  "archive_project": false,
  "manage_deploy_tokens": false,
  "manage_group_access_tokens": false,
  "manage_merge_request_settings": false,
  "manage_project_access_tokens": false,
  "manage_security_policy_link": false,
  "read_code": true,
  "read_runners": false,
  "read_dependency": false,
  "read_vulnerability": false,
  "remove_group": false,
  "remove_project": false
}

删除实例成员角色

从实例删除成员角色。

DELETE /member_roles/:member_role_id

支持的属性:

属性 类型 是否必需 描述
member_role_id integer yes 成员角色的 ID。

如果成功,则返回 204 和空响应。

示例请求:

curl --request DELETE --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles/1"

管理群组成员角色

先决条件:

  • 您必须具有群组的拥有者角色。

使用此 API 来管理群组成员角色。您只能在群组的根级别创建成员角色。

获取所有的群组成员角色

GET /groups/:id/member_roles

| 参数 | 类型 | 是否必需 | 描述 | |——|—————-|——|———————————————————————————————————-| | id | integer/string | yes | 经过身份验证的用户拥有的群组的 ID 或 URL 编码的路径 | Example request:

curl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles"

示例请求:

[
  {
    "id": 2,
    "name": "Guest + read code",
    "description": "Custom guest that can read code",
    "group_id": 84,
    "base_access_level": 10,
    "admin_cicd_variables": false,
    "admin_compliance_framework": false,
    "admin_group_member": false,
    "admin_merge_request": false,
    "admin_push_rules": false,
    "admin_terraform_state": false,
    "admin_vulnerability": false,
    "admin_web_hook": false,
    "archive_project": false,
    "manage_deploy_tokens": false,
    "manage_group_access_tokens": false,
    "manage_merge_request_settings": false,
    "manage_project_access_tokens": false,
    "manage_security_policy_link": false,
    "read_code": true,
    "read_runners": false,
    "read_dependency": false,
    "read_vulnerability": false,
    "remove_group": false,
    "remove_project": false
  },
  {
    "id": 3,
    "name": "Guest + security",
    "description": "Custom guest that read and admin security entities",
    "group_id": 84,
    "base_access_level": 10,
    "admin_cicd_variables": false,
    "admin_compliance_framework": false,
    "admin_group_member": false,
    "admin_merge_request": false,
    "admin_push_rules": false,
    "admin_terraform_state": false,
    "admin_vulnerability": true,
    "admin_web_hook": false,
    "archive_project": false,
    "manage_deploy_tokens": false,
    "manage_group_access_tokens": false,
    "manage_merge_request_settings": false,
    "manage_project_access_tokens": false,
    "manage_security_policy_link": false,
    "read_code": true,
    "read_runners": false,
    "read_dependency": true,
    "read_vulnerability": true,
    "remove_group": false,
    "remove_project": false
  }
]

向群组添加成员角色

  • 创建自定义角色时添加名称和描述的功能引入于极狐GitLab 16.3。

向群组添加成员角色

POST /groups/:id/member_roles

要向群组添加成员角色,该群组必须处于 root 级别(没有父群组)。

属性 类型 是否必需 描述
id integer/string yes ID 或 群组的 URL 编码群组路径
admin_cicd_variables boolean no 创建、阅读、更新和删除 CI/CD 变量的权限。
admin_compliance_framework boolean no 管理合规框架的权限。
admin_group_member boolean no 在群组中添加、移除和分配成员的权限。
admin_merge_request boolean no 审核合并请求的权限。
admin_push_rules boolean no 在群组或项目级别为仓库配置推送规则的权限。
admin_terraform_state boolean no 管理项目 terraform 状态的权限。
admin_vulnerability boolean no 管理项目漏洞的权限。
admin_web_hook boolean no 管理 webhook 的权限。
archive_project boolean no 归档项目的权限。
manage_deploy_tokens boolean no 管理部署令牌的权限。
manage_group_access_tokens boolean no 管理群组访问令牌的权限。
manage_merge_request_settings boolean no 配置合并请求设置的权限。
manage_project_access_tokens boolean no 管理项目访问令牌的权限。
manage_security_policy_link boolean no 链接安全策略项目的权限。
read_code boolean no 阅读项目代码的权限。
read_runners boolean no 查看项目 runner 的权限。
read_dependency boolean no 阅读项目依赖的权限。
read_vulnerability boolean no 阅读项目漏洞的权限。
remove_group boolean no 删除或恢复群组的权限。
remove_project boolean no 删除项目的权限。

请求示例:

 curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"name" : "Custom guest", "base_access_level" : 10, "read_code" : true}' "https://gitlab.example.com/api/v4/groups/84/member_roles"

响应示例:

{
  "id": 3,
  "name": "Custom guest",
  "description": null,
  "group_id": 84,
  "base_access_level": 10,
  "admin_merge_requests": false,
  "admin_vulnerability": false,
  "read_code": true,
  "read_dependency": false,
  "read_vulnerability": false
}

In GitLab 16.3 and later, you can use the API to:

在 GitLab 16.3 及更高版本中,您可以使用 API:

移除群组的成员角色

移除群组的成员角色。

DELETE /groups/:id/member_roles/:member_role_id
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的群组的 ID 或 URL 编码的路径
member_role_id integer yes 成员角色的 ID

如果成功,则返回 204 及空响应。

请求示例:

curl --request DELETE --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles/1"