成员角色 API

  • Tier: Ultimate
  • Offering: JihuLab.com, 私有化部署
History
    • 在极狐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 的标志。默认禁用。
    • 在极狐GitLab 16.5 中移除了功能标志 admin_merge_request
    • 在极狐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 中引入了管理组访问令牌。
    • 在极狐GitLab 16.8 中引入了管理员 Terraform 状态。
    • 在极狐GitLab 16.9 中允许在极狐GitLab私有化部署上创建和删除实例范围的自定义角色引入。
    • 在极狐GitLab 17.9 中引入了管理员安全测试,使用名为 custom_ability_admin_security_testing功能标志。默认禁用。

使用此 API 来和 JihuLab.com 群组或整个极狐GitLab 私有化部署实例的成员角色交互。

管理实例成员角色#

  • Tier: 旗舰版
  • Offering: 私有化部署

先决条件:

获取所有实例成员角色#

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

plaintext
GET /member_roles

示例请求:

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

示例响应:

json
1[ 2 { 3 "id": 2, 4 "name": "Instance custom role", 5 "description": "Custom guest that can read code", 6 "group_id": null, 7 "base_access_level": 10, 8 "admin_cicd_variables": false, 9 "admin_compliance_framework": false, 10 "admin_group_member": false, 11 "admin_merge_request": false, 12 "admin_push_rules": false, 13 "admin_terraform_state": false, 14 "admin_vulnerability": false, 15 "admin_web_hook": false, 16 "archive_project": false, 17 "manage_deploy_tokens": false, 18 "manage_group_access_tokens": false, 19 "manage_merge_request_settings": false, 20 "manage_project_access_tokens": false, 21 "manage_security_policy_link": false, 22 "read_code": true, 23 "read_runners": false, 24 "read_dependency": false, 25 "read_vulnerability": false, 26 "remove_group": false, 27 "remove_project": false 28 } 29]

创建一个实例成员角色#

创建一个全局范围的成员角色。

plaintext
POST /member_roles

支持的属性:

属性类型必需描述
namestring成员角色的名称。
descriptionstring成员角色的描述。
base_access_levelinteger配置角色的基本访问级别。有效值为 10 (访客), 15 (规划者), 20 (报告者), 30 (开发者), 40 (维护者), 或 50 (所有者)。
admin_cicd_variablesboolean创建、读取、更新和删除 CI/CD 变量的权限。
admin_compliance_frameworkboolean管理合规框架的权限。
admin_group_memberboolean添加、删除和分配群组成员的权限。
admin_merge_requestboolean审批合并请求的权限。
admin_push_rulesboolean在群组或项目级别配置推送规则的权限。
admin_terraform_stateboolean管理项目 terraform 状态的权限。
admin_vulnerabilityboolean编辑漏洞对象的权限,包括状态和链接议题。
admin_web_hookboolean管理 web hooks 的权限。
archive_projectboolean归档项目的权限。
manage_deploy_tokensboolean管理部署令牌的权限。
manage_group_access_tokensboolean管理群组访问令牌的权限。
manage_merge_request_settingsboolean配置合并请求设置的权限。
manage_project_access_tokensboolean管理项目访问令牌的权限。
manage_security_policy_linkboolean链接安全策略项目的权限。
read_codeboolean读取项目代码的权限。
read_runnersboolean查看项目 runner 的权限。
read_dependencyboolean读取项目依赖的权限。
read_vulnerabilityboolean读取项目漏洞的权限。
remove_groupboolean删除或恢复群组的权限。
remove_projectboolean删除项目的权限。

有关可用权限的更多信息,请参阅自定义权限

示例请求:

shell
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"

示例响应:

json
1{ 2 "id": 3, 3 "name": "Custom guest (instance)", 4 "group_id": null, 5 "description": null, 6 "base_access_level": 10, 7 "admin_cicd_variables": false, 8 "admin_compliance_framework": false, 9 "admin_group_member": false, 10 "admin_merge_request": false, 11 "admin_push_rules": false, 12 "admin_terraform_state": false, 13 "admin_vulnerability": false, 14 "admin_web_hook": false, 15 "archive_project": false, 16 "manage_deploy_tokens": false, 17 "manage_group_access_tokens": false, 18 "manage_merge_request_settings": false, 19 "manage_project_access_tokens": false, 20 "manage_security_policy_link": false, 21 "read_code": true, 22 "read_runners": false, 23 "read_dependency": false, 24 "read_vulnerability": false, 25 "remove_group": false, 26 "remove_project": false 27}

删除一个实例成员角色#

从实例中删除成员角色。

plaintext
DELETE /member_roles/:member_role_id

支持的属性:

属性类型必需描述
member_role_idinteger成员角色的 ID。

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

示例请求:

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

管理群组成员角色#

  • Tier: Ultimate
  • Offering: JihuLab.com

先决条件:

  • 你必须拥有该群组的所有者角色。

获取所有群组成员角色#

plaintext
GET /groups/:id/member_roles

支持的属性:

属性类型必需描述
idinteger/string群组的 ID 或 URL 编码路径

示例请求:

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

示例响应:

json
1[ 2 { 3 "id": 2, 4 "name": "Guest + read code", 5 "description": "Custom guest that can read code", 6 "group_id": 84, 7 "base_access_level": 10, 8 "admin_cicd_variables": false, 9 "admin_compliance_framework": false, 10 "admin_group_member": false, 11 "admin_merge_request": false, 12 "admin_push_rules": false, 13 "admin_terraform_state": false, 14 "admin_vulnerability": false, 15 "admin_web_hook": false, 16 "archive_project": false, 17 "manage_deploy_tokens": false, 18 "manage_group_access_tokens": false, 19 "manage_merge_request_settings": false, 20 "manage_project_access_tokens": false, 21 "manage_security_policy_link": false, 22 "read_code": true, 23 "read_runners": false, 24 "read_dependency": false, 25 "read_vulnerability": false, 26 "remove_group": false, 27 "remove_project": false 28 }, 29 { 30 "id": 3, 31 "name": "Guest + security", 32 "description": "Custom guest that read and admin security entities", 33 "group_id": 84, 34 "base_access_level": 10, 35 "admin_cicd_variables": false, 36 "admin_compliance_framework": false, 37 "admin_group_member": false, 38 "admin_merge_request": false, 39 "admin_push_rules": false, 40 "admin_terraform_state": false, 41 "admin_vulnerability": true, 42 "admin_web_hook": false, 43 "archive_project": false, 44 "manage_deploy_tokens": false, 45 "manage_group_access_tokens": false, 46 "manage_merge_request_settings": false, 47 "manage_project_access_tokens": false, 48 "manage_security_policy_link": false, 49 "read_code": true, 50 "read_runners": false, 51 "read_dependency": true, 52 "read_vulnerability": true, 53 "remove_group": false, 54 "remove_project": false 55 } 56]

添加一个成员角色到群组#

History
    • 当创建自定义角色的时候新增名称和描述的能力引入于极狐GitLab 16.3。

将成员角色添加到群组。你只能在群组的根级别添加成员角色。

plaintext
POST /groups/:id/member_roles

参数:

属性类型必需描述
idinteger/string群组的 ID 或 URL 编码路径
admin_cicd_variablesboolean创建、读取、更新和删除 CI/CD 变量的权限。
admin_compliance_frameworkboolean管理合规框架的权限。
admin_group_memberboolean添加、删除和分配群组成员的权限。
admin_merge_requestboolean审批合并请求的权限。
admin_push_rulesboolean在群组或项目级别配置推送规则的权限。
admin_terraform_stateboolean管理项目 terraform 状态的权限。
admin_vulnerabilityboolean管理项目漏洞的权限。
admin_web_hookboolean管理 web hooks 的权限。
archive_projectboolean归档项目的权限。
manage_deploy_tokensboolean管理部署令牌的权限。
manage_group_access_tokensboolean管理群组访问令牌的权限。
manage_merge_request_settingsboolean配置合并请求设置的权限。
manage_project_access_tokensboolean管理项目访问令牌的权限。
manage_security_policy_linkboolean链接安全策略项目的权限。
read_codeboolean读取项目代码的权限。
read_runnersboolean查看项目 runner 的权限。
read_dependencyboolean读取项目依赖的权限。
read_vulnerabilityboolean读取项目漏洞的权限。
remove_groupboolean删除或恢复群组的权限。
remove_projectboolean删除项目的权限。

示例请求:

shell
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"

示例响应:

json
1{ 2 "id": 3, 3 "name": "Custom guest", 4 "description": null, 5 "group_id": 84, 6 "base_access_level": 10, 7 "admin_cicd_variables": false, 8 "admin_compliance_framework": false, 9 "admin_group_member": false, 10 "admin_merge_request": false, 11 "admin_push_rules": false, 12 "admin_terraform_state": false, 13 "admin_vulnerability": false, 14 "admin_web_hook": false, 15 "archive_project": false, 16 "manage_deploy_tokens": false, 17 "manage_group_access_tokens": false, 18 "manage_merge_request_settings": false, 19 "manage_project_access_tokens": false, 20 "manage_security_policy_link": false, 21 "read_code": true, 22 "read_runners": false, 23 "read_dependency": false, 24 "read_vulnerability": false, 25 "remove_group": false, 26 "remove_project": false 27}

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

删除群组的成员角色#

删除群组的成员角色。

plaintext
DELETE /groups/:id/member_roles/:member_role_id
属性类型必需描述
idinteger/string群组的 ID 或 URL 编码路径
member_role_idinteger成员角色的 ID。

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

示例请求:

shell
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"