成员角色 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: 私有化部署
先决条件:
- 授权您自己作为 管理员。
获取所有实例成员角色
获取实例中的所有成员角色。
plaintextGET /member_roles
示例请求:
shellcurl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles"
示例响应:
json1[ 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]
创建一个实例成员角色
创建一个全局范围的成员角色。
plaintextPOST /member_roles
支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| name | string | 是 | 成员角色的名称。 |
| description | string | 否 | 成员角色的描述。 |
| base_access_level | integer | 是 | 配置角色的基本访问级别。有效值为 10 (访客), 15 (规划者), 20 (报告者), 30 (开发者), 40 (维护者), 或 50 (所有者)。 |
| admin_cicd_variables | boolean | 否 | 创建、读取、更新和删除 CI/CD 变量的权限。 |
| admin_compliance_framework | boolean | 否 | 管理合规框架的权限。 |
| admin_group_member | boolean | 否 | 添加、删除和分配群组成员的权限。 |
| admin_merge_request | boolean | 否 | 审批合并请求的权限。 |
| admin_push_rules | boolean | 否 | 在群组或项目级别配置推送规则的权限。 |
| admin_terraform_state | boolean | 否 | 管理项目 terraform 状态的权限。 |
| admin_vulnerability | boolean | 否 | 编辑漏洞对象的权限,包括状态和链接议题。 |
| admin_web_hook | boolean | 否 | 管理 web hooks 的权限。 |
| archive_project | boolean | 否 | 归档项目的权限。 |
| manage_deploy_tokens | boolean | 否 | 管理部署令牌的权限。 |
| manage_group_access_tokens | boolean | 否 | 管理群组访问令牌的权限。 |
| manage_merge_request_settings | boolean | 否 | 配置合并请求设置的权限。 |
| manage_project_access_tokens | boolean | 否 | 管理项目访问令牌的权限。 |
| manage_security_policy_link | boolean | 否 | 链接安全策略项目的权限。 |
| read_code | boolean | 否 | 读取项目代码的权限。 |
| read_runners | boolean | 否 | 查看项目 runner 的权限。 |
| read_dependency | boolean | 否 | 读取项目依赖的权限。 |
| read_vulnerability | boolean | 否 | 读取项目漏洞的权限。 |
| remove_group | boolean | 否 | 删除或恢复群组的权限。 |
| remove_project | boolean | 否 | 删除项目的权限。 |
有关可用权限的更多信息,请参阅自定义权限。
示例请求:
shellcurl --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"
示例响应:
json1{ 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}
删除一个实例成员角色
从实例中删除成员角色。
plaintextDELETE /member_roles/:member_role_id
支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| member_role_id | integer | 是 | 成员角色的 ID。 |
如果成功,返回 204 和一个空响应。
示例请求:
shellcurl --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
先决条件:
- 你必须拥有该群组的所有者角色。
获取所有群组成员角色
plaintextGET /groups/:id/member_roles
支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或 URL 编码路径 |
示例请求:
shellcurl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles"
示例响应:
json1[ 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。
将成员角色添加到群组。你只能在群组的根级别添加成员角色。
plaintextPOST /groups/:id/member_roles
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或 URL 编码路径 |
| admin_cicd_variables | boolean | 否 | 创建、读取、更新和删除 CI/CD 变量的权限。 |
| admin_compliance_framework | boolean | 否 | 管理合规框架的权限。 |
| admin_group_member | boolean | 否 | 添加、删除和分配群组成员的权限。 |
| admin_merge_request | boolean | 否 | 审批合并请求的权限。 |
| admin_push_rules | boolean | 否 | 在群组或项目级别配置推送规则的权限。 |
| admin_terraform_state | boolean | 否 | 管理项目 terraform 状态的权限。 |
| admin_vulnerability | boolean | 否 | 管理项目漏洞的权限。 |
| admin_web_hook | boolean | 否 | 管理 web hooks 的权限。 |
| archive_project | boolean | 否 | 归档项目的权限。 |
| manage_deploy_tokens | boolean | 否 | 管理部署令牌的权限。 |
| manage_group_access_tokens | boolean | 否 | 管理群组访问令牌的权限。 |
| manage_merge_request_settings | boolean | 否 | 配置合并请求设置的权限。 |
| manage_project_access_tokens | boolean | 否 | 管理项目访问令牌的权限。 |
| manage_security_policy_link | boolean | 否 | 链接安全策略项目的权限。 |
| read_code | boolean | 否 | 读取项目代码的权限。 |
| read_runners | boolean | 否 | 查看项目 runner 的权限。 |
| read_dependency | boolean | 否 | 读取项目依赖的权限。 |
| read_vulnerability | boolean | 否 | 读取项目漏洞的权限。 |
| remove_group | boolean | 否 | 删除或恢复群组的权限。 |
| remove_project | boolean | 否 | 删除项目的权限。 |
示例请求:
shellcurl --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"
示例响应:
json1{ 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:
- 添加名称(必需)和描述(可选)当你创建一个新的自定义角色。
- 更新现有自定义角色的名称和描述。
删除群组的成员角色
删除群组的成员角色。
plaintextDELETE /groups/:id/member_roles/:member_role_id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或 URL 编码路径 |
| member_role_id | integer | 是 | 成员角色的 ID。 |
如果成功,返回 204 和一个空响应。
示例请求:
shellcurl --request DELETE --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles/1"