群组和项目成员 API
- Tier: 基础版,专业版,旗舰版
- Offering: JihuLab.com,私有化部署
使用此 API 与群组和项目成员进行交互。
角色
角色 分配给用户或群组在 Gitlab::Access 模块中定义为 access_level。
- 无访问权限 (0)
- 最小访问权限 (5)
- 客人 (10)
- 计划者 (15)
- 报告者 (20)
- 开发者 (30)
- 维护者 (40)
- 拥有者 (50)
- 管理员 (60)
已知问题
- group_saml_identity 属性仅对 启用 SSO 的群组 的群组拥有者可见。
- 当发送 API 请求到群组本身或该群组的子群组或项目时,email 属性仅对群组的 企业用户 的群组拥有者可见。
列出群组或项目的所有成员
获取经过身份验证的用户可查看的群组或项目成员列表。仅返回直接成员,不包括通过祖先群组继承的成员。
此函数接受分页参数 page 和 per_page 来限制用户列表。
plaintextGET /groups/:id/members GET /projects/:id/members
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目或群组的 ID 或 URL 编码路径。 |
| query | 字符串 | 否 | 根据给定的名称、电子邮件或用户名过滤结果。使用部分值来扩大查询范围。 |
| user_ids | 整数数组 | 否 | 根据给定的用户 ID 过滤结果。 |
| skip_users | 整数数组 | 否 | 从结果中过滤掉跳过的用户。 |
| show_seat_info | 布尔值 | 否 | 显示用户的座位信息。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members" curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/:id/members"
示例响应:
json1[ 2 { 3 "id": 1, 4 "username": "raymond_smith", 5 "name": "Raymond Smith", 6 "state": "active", 7 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 8 "web_url": "http://192.168.1.8:3000/root", 9 "created_at": "2012-09-22T14:13:35Z", 10 "created_by": { 11 "id": 2, 12 "username": "john_doe", 13 "name": "John Doe", 14 "state": "active", 15 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 16 "web_url": "http://192.168.1.8:3000/root" 17 }, 18 "expires_at": "2012-10-22", 19 "access_level": 30, 20 "group_saml_identity": null 21 }, 22 { 23 "id": 2, 24 "username": "john_doe", 25 "name": "John Doe", 26 "state": "active", 27 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 28 "web_url": "http://192.168.1.8:3000/root", 29 "created_at": "2012-09-22T14:13:35Z", 30 "created_by": { 31 "id": 1, 32 "username": "raymond_smith", 33 "name": "Raymond Smith", 34 "state": "active", 35 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 36 "web_url": "http://192.168.1.8:3000/root" 37 }, 38 "expires_at": "2012-10-22", 39 "access_level": 30, 40 "email": "john@example.com", 41 "group_saml_identity": { 42 "extern_uid":"ABC-1234567890", 43 "provider": "group_saml", 44 "saml_provider_id": 10 45 } 46 } 47]
列出群组或项目的所有成员,包括继承和邀请的成员
History
- 在极狐GitLab 16.10 中,如果当前用户是共享群组或项目的成员,更改为返回受邀私有群组的成员。使用名 webui_members_inherited_users 的功能标志。默认禁用。
- 功能标志 webui_members_inherited_users 在极狐GitLab 17.0 中已为 JihuLab.com 和极狐GitLab 私有化部署启用。
- 功能标志 webui_members_inherited_users 在极狐GitLab 17.4 中已移除。默认显示受邀群组成员。
获取经过身份验证的用户可查看的群组或项目成员列表,包括继承的成员、邀请的用户,以及通过祖先群组的权限。
如果用户是此群组或项目的成员,并且也是一个或多个祖先群组的成员,则仅返回其具有最高 access_level 的成员资格。这代表了用户的有效权限。
如果满足以下条件之一,则返回来自受邀群组的成员:
- 受邀群组是公开的。
- 请求者也是受邀群组的成员。
- 请求者是共享群组或项目的成员。
此函数接受分页参数 page 和 per_page 来限制用户列表。
plaintextGET /groups/:id/members/all GET /projects/:id/members/all
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目或群组的 ID 或 URL 编码路径。 |
| query | 字符串 | 否 | 根据给定的名称、电子邮件或用户名过滤结果。使用部分值来扩大查询范围。 |
| user_ids | 整数数组 | 否 | 根据给定的用户 ID 过滤结果。 |
| show_seat_info | 布尔值 | 否 | 显示用户的座位信息。 |
| state | 字符串 | 否 | 按成员状态过滤结果,awaiting 或 active 之一。专业版和旗舰版专用。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/all" curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/:id/members/all"
示例响应:
json1[ 2 { 3 "id": 1, 4 "username": "raymond_smith", 5 "name": "Raymond Smith", 6 "state": "active", 7 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 8 "web_url": "http://192.168.1.8:3000/root", 9 "created_at": "2012-09-22T14:13:35Z", 10 "created_by": { 11 "id": 2, 12 "username": "john_doe", 13 "name": "John Doe", 14 "state": "active", 15 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 16 "web_url": "http://192.168.1.8:3000/root" 17 }, 18 "expires_at": "2012-10-22", 19 "access_level": 30, 20 "group_saml_identity": null 21 }, 22 { 23 "id": 2, 24 "username": "john_doe", 25 "name": "John Doe", 26 "state": "active", 27 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 28 "web_url": "http://192.168.1.8:3000/root", 29 "created_at": "2012-09-22T14:13:35Z", 30 "created_by": { 31 "id": 1, 32 "username": "raymond_smith", 33 "name": "Raymond Smith", 34 "state": "active", 35 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 36 "web_url": "http://192.168.1.8:3000/root" 37 }, 38 "expires_at": "2012-10-22", 39 "access_level": 30, 40 "email": "john@example.com", 41 "group_saml_identity": { 42 "extern_uid":"ABC-1234567890", 43 "provider": "group_saml", 44 "saml_provider_id": 10 45 } 46 }, 47 { 48 "id": 3, 49 "username": "foo_bar", 50 "name": "Foo bar", 51 "state": "active", 52 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 53 "web_url": "http://192.168.1.8:3000/root", 54 "created_at": "2012-10-22T14:13:35Z", 55 "created_by": { 56 "id": 2, 57 "username": "john_doe", 58 "name": "John Doe", 59 "state": "active", 60 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 61 "web_url": "http://192.168.1.8:3000/root" 62 }, 63 "expires_at": "2012-11-22", 64 "access_level": 30, 65 "group_saml_identity": null 66 } 67]
获取群组或项目的成员
获取群组或项目的成员。仅返回直接成员,不包括通过祖先群组继承的成员。
plaintextGET /groups/:id/members/:user_id GET /projects/:id/members/:user_id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目或群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 成员的用户 ID。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id" curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/:id/members/:user_id"
示例响应:
json1{ 2 "id": 1, 3 "username": "raymond_smith", 4 "name": "Raymond Smith", 5 "state": "active", 6 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 7 "web_url": "http://192.168.1.8:3000/root", 8 "access_level": 30, 9 "email": "john@example.com", 10 "created_at": "2012-10-22T14:13:35Z", 11 "created_by": { 12 "id": 2, 13 "username": "john_doe", 14 "name": "John Doe", 15 "state": "active", 16 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 17 "web_url": "http://192.168.1.8:3000/root" 18 }, 19 "expires_at": null, 20 "group_saml_identity": null 21}
获取群组或项目的成员,包括继承和邀请的成员
History
- 在极狐GitLab 12.4 中引入。
- 在极狐GitLab 16.10 中,如果当前用户是共享群组或项目的成员,则返回受邀私有群组的成员。使用名为 webui_members_inherited_users d的功能标志。默认禁用。
- JihuLab.com 和极狐GitLab 私有化部署在 17.0 中启用。
- 功能标志 webui_members_inherited_users 在极狐GitLab 17.4 中已移除。默认显示受邀群组成员。
获取群组或项目的成员,包括通过祖先群组继承或邀请的成员。有关详细信息,请参阅对应的 端点以列出所有继承的成员。
plaintextGET /groups/:id/members/all/:user_id GET /projects/:id/members/all/:user_id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目或群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 成员的用户 ID。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/all/:user_id" curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/:id/members/all/:user_id"
示例响应:
json1{ 2 "id": 1, 3 "username": "raymond_smith", 4 "name": "Raymond Smith", 5 "state": "active", 6 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 7 "web_url": "http://192.168.1.8:3000/root", 8 "access_level": 30, 9 "created_at": "2012-10-22T14:13:35Z", 10 "created_by": { 11 "id": 2, 12 "username": "john_doe", 13 "name": "John Doe", 14 "state": "active", 15 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 16 "web_url": "http://192.168.1.8:3000/root" 17 }, 18 "email": "john@example.com", 19 "expires_at": null, 20 "group_saml_identity": null 21}
列出群组的所有计费成员
获取计费成员的群组成员列表。该列表包括子群组和项目中的成员。
前提条件:
- 您必须具有拥有者角色才能访问用于计费权限的 API 端点,如 计费权限 中所示。
- 此 API 端点仅在顶级群组上工作。它不适用于子群组。
此函数接受 分页 参数 page 和 per_page 来限制用户列表。
使用 search 参数按名称搜索计费群组成员,使用 sort 参数对结果进行排序。
plaintextGET /groups/:id/billable_members
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 群组的 ID 或 URL 编码路径。 |
| search | 字符串 | 否 | 一个查询字符串,用于按名称、用户名或公开电子邮件搜索群组成员。 |
| sort | 字符串 | 否 | 包含指定排序属性和顺序的查询字符串。请参阅下面的支持值。 |
sort 属性的支持值为:
| 值 | 描述 |
|---|---|
| access_level_asc | 访问级别,升序 |
| access_level_desc | 访问级别,降序 |
| last_joined | 最近加入 |
| name_asc | 名称,升序 |
| name_desc | 名称,降序 |
| oldest_joined | 最早加入 |
| oldest_sign_in | 最早登录 |
| recent_sign_in | 最近登录 |
| last_activity_on_asc | 最近活动日期,升序 |
| last_activity_on_desc | 最近活动日期,降序 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/billable_members"
示例响应:
json1[ 2 { 3 "id": 1, 4 "username": "raymond_smith", 5 "name": "Raymond Smith", 6 "state": "active", 7 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 8 "web_url": "http://192.168.1.8:3000/root", 9 "last_activity_on": "2021-01-27", 10 "membership_type": "group_member", 11 "removable": true, 12 "created_at": "2021-01-03T12:16:02.000Z", 13 "last_login_at": "2022-10-09T01:33:06.000Z" 14 }, 15 { 16 "id": 2, 17 "username": "john_doe", 18 "name": "John Doe", 19 "state": "active", 20 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 21 "web_url": "http://192.168.1.8:3000/root", 22 "email": "john@example.com", 23 "last_activity_on": "2021-01-25", 24 "membership_type": "group_member", 25 "removable": true, 26 "created_at": "2021-01-04T18:46:42.000Z", 27 "last_login_at": "2022-09-29T22:18:46.000Z" 28 }, 29 { 30 "id": 3, 31 "username": "foo_bar", 32 "name": "Foo bar", 33 "state": "active", 34 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 35 "web_url": "http://192.168.1.8:3000/root", 36 "last_activity_on": "2021-01-20", 37 "membership_type": "group_invite", 38 "removable": false, 39 "created_at": "2021-01-09T07:12:31.000Z", 40 "last_login_at": "2022-10-10T07:28:56.000Z" 41 } 42]
列出群组的计费成员的成员资格
获取群组的计费成员的成员资格列表。
前提条件:
- 响应仅表示直接成员资格。不包括继承成员资格。
- 此 API 端点仅在顶级群组上工作。它不适用于子群组。
- 此 API 端点需要权限来管理群组的成员资格。
列出用户是成员的所有项目和群组。仅包括群组层级中的项目和群组。例如,如果请求的群组是 顶级群组,请求的用户是 顶级群组 / 子群组一 和 其他群组 / 子群组二 的直接成员,则仅返回 顶级群组 / 子群组一,因为 其他群组 / 子群组二 不在 顶级群组 层级中。
此 API 端点接受 分页 参数 page 和 per_page 来限制成员资格列表。
plaintextGET /groups/:id/billable_members/:user_id/memberships
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 计费成员的用户 ID。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/memberships"
示例响应:
json1[ 2 { 3 "id": 168, 4 "source_id": 131, 5 "source_full_name": "顶级群组 / 子群组一", 6 "source_members_url": "https://gitlab.example.com/groups/root-group/sub-group-one/-/group_members", 7 "created_at": "2021-03-31T17:28:44.812Z", 8 "expires_at": "2022-03-21", 9 "access_level": { 10 "string_value": "Developer", 11 "integer_value": 30 12 } 13 }, 14 { 15 "id": 169, 16 "source_id": 63, 17 "source_full_name": "顶级群组 / 子群组一 / 我的项目", 18 "source_members_url": "https://gitlab.example.com/root-group/sub-group-one/my-project/-/project_members", 19 "created_at": "2021-03-31T17:29:14.934Z", 20 "expires_at": null, 21 "access_level": { 22 "string_value": "Maintainer", 23 "integer_value": 40 24 } 25 } 26]
列出群组的计费成员的间接成员资格
- 状态:实验
History
- 在极狐GitLab 16.11 中引入。
获取群组的计费成员的间接成员资格列表。
前提条件:
- 此 API 端点仅在顶级群组上工作。它不适用于子群组。
- 此 API 端点需要权限来管理群组的成员资格。
列出用户是成员的所有项目和群组,这些项目和群组已被邀请到请求的顶级群组。例如,如果请求的群组是 顶级群组,请求的用户是 其他群组 / 子群组二 的直接成员,该群组被邀请到 顶级群组,则仅返回 其他群组 / 子群组二。
响应仅列出间接成员资格。不包括直接成员资格。
此 API 端点接受 分页 参数 page 和 per_page 来限制成员资格列表。
plaintextGET /groups/:id/billable_members/:user_id/indirect
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 计费成员的用户 ID。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/indirect"
示例响应:
json1[ 2 { 3 "id": 168, 4 "source_id": 132, 5 "source_full_name": "受邀群组 / 子群组一", 6 "source_members_url": "https://gitlab.example.com/groups/invited-group/sub-group-one/-/group_members", 7 "created_at": "2021-03-31T17:28:44.812Z", 8 "expires_at": "2022-03-21", 9 "access_level": { 10 "string_value": "Developer", 11 "integer_value": 30 12 } 13 } 14]
从群组中移除计费成员
History
- 在极狐GitLab 13.10 中引入。
从群组及其子群组和项目中移除计费成员。
用户不需要是群组成员即可符合移除条件。例如,如果用户直接添加到群组中的某个项目,您仍然可以使用此 API 将其移除。
plaintextDELETE /groups/:id/billable_members/:user_id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 成员的用户 ID。 |
shellcurl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id"
更改群组中用户的成员状态
History
- 在极狐GitLab 15.0 中引入。
更改群组中用户的成员状态。
当用户超过基础版用户限制时,更改其群组或项目的成员状态为 awaiting 或 active 可以允许他们访问该群组或项目。更改适用于所有子群组和项目。
plaintextPUT /groups/:id/members/:user_id/state
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 成员的用户 ID。 |
| state | 字符串 | 是 | 用户的新状态。状态为 awaiting 或 active。 |
shellcurl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/state?state=active"
示例响应:
json{ "success":true }
添加成员到群组或项目
向群组或项目添加成员。
plaintextPOST /groups/:id/members POST /projects/:id/members
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目或群组的 ID 或 URL 编码路径。 |
| user_id | 整数或字符串 | 是,如果未提供 username | 新成员的用户 ID 或多个用逗号分隔的 ID。 |
| username | 字符串 | 是,如果未提供 user_id | 新成员的用户名或多个用逗号分隔的用户名。 |
| access_level | 整数 | 是 | 有效的访问级别。 |
| expires_at | 字符串 | 否 | 格式为 YEAR-MONTH-DAY 的日期字符串。 |
| invite_source | 字符串 | 否 | 启动成员创建过程的邀请来源。极狐GitLab 团队成员可以在此保密议题中查看更多信息:https://gitlab.com/gitlab-org/gitlab/-/issues/327120>。 |
| member_role_id | 整数 | 否 | 成员角色的 ID。旗舰版专用。 |
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members" curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/projects/:id/members"
示例响应:
json1{ 2 "id": 1, 3 "username": "raymond_smith", 4 "name": "Raymond Smith", 5 "state": "active", 6 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 7 "web_url": "http://192.168.1.8:3000/root", 8 "created_at": "2012-10-22T14:13:35Z", 9 "created_by": { 10 "id": 2, 11 "username": "john_doe", 12 "name": "John Doe", 13 "state": "active", 14 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 15 "web_url": "http://192.168.1.8:3000/root" 16 }, 17 "expires_at": "2012-10-22", 18 "access_level": 30, 19 "email": "john@example.com", 20 "group_saml_identity": null 21}
要启用 管理非计费角色提升, 您必须首先启用 enable_member_promotion_management 应用设置。
队列单个用户的示例:
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members" curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/projects/:id/members"
json{ "message":{ "username_1":"Request queued for administrator approval." } }
队列多个用户的示例:
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --data "user_id=1,2&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members" curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --data "user_id=1,2&access_level=30" "https://gitlab.example.com/api/v4/projects/:id/members"
json1{ 2 "queued_users": { 3 "username_1": "Request queued for administrator approval.", 4 "username_2": "Request queued for administrator approval." 5 }, 6 "status": "success" 7}
编辑群组或项目的成员
更新群组或项目的成员。
plaintextPUT /groups/:id/members/:user_id PUT /projects/:id/members/:user_id
shellcurl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id?access_level=40" curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/:id/members/:user_id?access_level=40"
示例响应:
json1{ 2 "id": 1, 3 "username": "raymond_smith", 4 "name": "Raymond Smith", 5 "state": "active", 6 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 7 "web_url": "http://192.168.1.8:3000/root", 8 "created_at": "2012-10-22T14:13:35Z", 9 "created_by": { 10 "id": 2, 11 "username": "john_doe", 12 "name": "John Doe", 13 "state": "active", 14 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 15 "web_url": "http://192.168.1.8:3000/root" 16 }, 17 "expires_at": "2012-10-22", 18 "access_level": 40, 19 "email": "john@example.com", 20 "group_saml_identity": null 21}
要启用 管理非计费角色提升, 您必须首先启用 enable_member_promotion_management 应用设置。
示例响应:
json{ "message":{ "username_1":"Request queued for administrator approval." } }
设置群组成员的覆盖标志
默认情况下,LDAP 群组成员的访问级别设置为 LDAP 通过群组同步指定的值。您可以通过调用此端点允许访问级别覆盖。
plaintextPOST /groups/:id/members/:user_id/override
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 成员的用户 ID。 |
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"
示例响应:
json1{ 2 "id": 1, 3 "username": "raymond_smith", 4 "name": "Raymond Smith", 5 "state": "active", 6 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 7 "web_url": "http://192.168.1.8:3000/root", 8 "created_at": "2012-10-22T14:13:35Z", 9 "created_by": { 10 "id": 2, 11 "username": "john_doe", 12 "name": "John Doe", 13 "state": "active", 14 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 15 "web_url": "http://192.168.1.8:3000/root" 16 }, 17 "expires_at": "2012-10-22", 18 "access_level": 40, 19 "email": "john@example.com", 20 "override": true 21}
移除群组成员的覆盖标志
将覆盖标志设置为 false,并允许 LDAP 群组同步重置访问级别为 LDAP 规定的值。
plaintextDELETE /groups/:id/members/:user_id/override
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 成员的用户 ID。 |
shellcurl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"
示例响应:
json1{ 2 "id": 1, 3 "username": "raymond_smith", 4 "name": "Raymond Smith", 5 "state": "active", 6 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 7 "web_url": "http://192.168.1.8:3000/root", 8 "created_at": "2012-10-22T14:13:35Z", 9 "created_by": { 10 "id": 2, 11 "username": "john_doe", 12 "name": "John Doe", 13 "state": "active", 14 "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", 15 "web_url": "http://192.168.1.8:3000/root" 16 }, 17 "expires_at": "2012-10-22", 18 "access_level": 40, 19 "email": "john@example.com", 20 "override": false 21}
从群组或项目中移除成员
从用户被显式分配角色的群组或项目中移除用户。
用户需要是群组成员才能符合移除条件。例如,如果用户直接添加到群组中的某个项目,但不是此群组的成员,您不能使用此 API 将其移除。请参阅 从群组中移除计费成员 以获取替代方法。
plaintextDELETE /groups/:id/members/:user_id DELETE /projects/:id/members/:user_id
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目或群组的 ID 或 URL 编码路径。 |
| user_id | 整数 | 是 | 成员的用户 ID。 |
| skip_subresources | 布尔值 | 否 | 是否跳过删除被移除成员在子群组和项目中的直接成员资格。默认为 false。 |
| unassign_issuables | 布尔值 | 否 | 是否将被移除成员从给定群组或项目中的任何议题或合并请求中取消分配。默认为 false。 |
示例请求:
shellcurl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id" curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/:id/members/:user_id"
批准群组成员
批准一个群组及其子群组和项目的待定用户。
plaintextPUT /groups/:id/members/:member_id/approve
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | ID 或 顶级群组的 URL 编码路径 |
| member_id | 整数 | 是 | 成员的 ID |
示例请求:
shellcurl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:member_id/approve"
批准群组的所有待定成员
批准一个群组及其子群组和项目的所有待定用户。
plaintextPOST /groups/:id/members/approve_all
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | ID 或 顶级群组的 URL 编码路径. |
示例请求:
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/approve_all"
列出群组及其子群组和项目的待定成员
对于一个群组及其子群组和项目,获取所有处于 等待 状态的成员列表以及那些被邀请但没有极狐GitLab账号的成员。
先决条件:
- 此 API 端点仅适用于顶级群组。不适用于子群组。
- 此 API 端点需要有权限管理群组的成员。
此请求返回顶级群组层次结构中所有群组和项目的所有匹配群组和项目成员。
当成员是尚未注册极狐GitLab账号的受邀用户时,返回受邀的电子邮件地址。
此 API 端点接受 分页 参数 page 和 per_page 以限制成员列表。
plaintextGET /groups/:id/pending_members
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | ID 或群组的 URL 编码路径。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/pending_members"
示例响应:
json1[ 2 { 3 "id": 168, 4 "name": "Alex Garcia", 5 "username": "alex_garcia", 6 "email": "alex@example.com", 7 "avatar_url": "http://example.com/uploads/user/avatar/1/cd8.jpeg", 8 "web_url": "http://example.com/alex_garcia", 9 "approved": false, 10 "invited": false 11 }, 12 { 13 "id": 169, 14 "email": "sidney@example.com", 15 "avatar_url": "http://gravatar.com/../e346561cd8.jpeg", 16 "approved": false, 17 "invited": true 18 }, 19 { 20 "id": 170, 21 "email": "zhang@example.com", 22 "avatar_url": "http://gravatar.com/../e32131cd8.jpeg", 23 "approved": true, 24 "invited": true 25 } 26]
授予群组项目访问权限
请参阅和群组共享项目