群组和项目成员 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 属性仅对群组的 企业用户 的群组拥有者可见。

列出群组或项目的所有成员#

获取经过身份验证的用户可查看的群组或项目成员列表。仅返回直接成员,不包括通过祖先群组继承的成员。

此函数接受分页参数 pageper_page 来限制用户列表。

plaintext
GET /groups/:id/members GET /projects/:id/members
属性类型必需描述
id整数或字符串项目或群组的 ID 或 URL 编码路径
query字符串根据给定的名称、电子邮件或用户名过滤结果。使用部分值来扩大查询范围。
user_ids整数数组根据给定的用户 ID 过滤结果。
skip_users整数数组从结果中过滤掉跳过的用户。
show_seat_info布尔值显示用户的座位信息。
shell
curl --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"

示例响应:

json
1[ 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 的成员资格。这代表了用户的有效权限。

如果满足以下条件之一,则返回来自受邀群组的成员:

  • 受邀群组是公开的。
  • 请求者也是受邀群组的成员。
  • 请求者是共享群组或项目的成员。
受邀群组成员在共享群组或项目中具有共享成员资格。这意味着如果请求者是共享群组或项目的成员,但不是受邀私有群组的成员,那么使用此端点,请求者可以获取所有共享群组或项目成员,包括受邀私有群组成员。

此函数接受分页参数 pageper_page 来限制用户列表。

plaintext
GET /groups/:id/members/all GET /projects/:id/members/all
属性类型必需描述
id整数或字符串项目或群组的 ID 或 URL 编码路径
query字符串根据给定的名称、电子邮件或用户名过滤结果。使用部分值来扩大查询范围。
user_ids整数数组根据给定的用户 ID 过滤结果。
show_seat_info布尔值显示用户的座位信息。
state字符串按成员状态过滤结果,awaitingactive 之一。专业版和旗舰版专用。
shell
curl --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"

示例响应:

json
1[ 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]

获取群组或项目的成员#

获取群组或项目的成员。仅返回直接成员,不包括通过祖先群组继承的成员。

plaintext
GET /groups/:id/members/:user_id GET /projects/:id/members/:user_id
属性类型必需描述
id整数或字符串项目或群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
shell
curl --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"

示例响应:

json
1{ 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 中已移除。默认显示受邀群组成员。

获取群组或项目的成员,包括通过祖先群组继承或邀请的成员。有关详细信息,请参阅对应的 端点以列出所有继承的成员

受邀群组成员在共享群组或项目中具有共享成员资格。这意味着如果请求者是共享群组或项目的成员,但不是受邀私有群组的成员,那么使用此端点,请求者可以获取所有共享群组或项目成员,包括受邀私有群组成员。
plaintext
GET /groups/:id/members/all/:user_id GET /projects/:id/members/all/:user_id
属性类型必需描述
id整数或字符串项目或群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
shell
curl --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"

示例响应:

json
1{ 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 端点仅在顶级群组上工作。它不适用于子群组。

此函数接受 分页 参数 pageper_page 来限制用户列表。

使用 search 参数按名称搜索计费群组成员,使用 sort 参数对结果进行排序。

plaintext
GET /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最近活动日期,降序
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/billable_members"

示例响应:

json
1[ 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 端点接受 分页 参数 pageper_page 来限制成员资格列表。

plaintext
GET /groups/:id/billable_members/:user_id/memberships
属性类型必需描述
id整数或字符串群组的 ID 或 URL 编码路径
user_id整数计费成员的用户 ID。
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/memberships"

示例响应:

json
1[ 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 端点接受 分页 参数 pageper_page 来限制成员资格列表。

plaintext
GET /groups/:id/billable_members/:user_id/indirect
属性类型必需描述
id整数或字符串群组的 ID 或 URL 编码路径
user_id整数计费成员的用户 ID。
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/indirect"

示例响应:

json
1[ 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 将其移除。

成员移除是异步处理的,因此更改在几分钟内完成。
plaintext
DELETE /groups/:id/billable_members/:user_id
属性类型必需描述
id整数或字符串群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
shell
curl --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 中引入。

更改群组中用户的成员状态。

当用户超过基础版用户限制时,更改其群组或项目的成员状态为 awaitingactive 可以允许他们访问该群组或项目。更改适用于所有子群组和项目。

plaintext
PUT /groups/:id/members/:user_id/state
属性类型必需描述
id整数或字符串群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
state字符串用户的新状态。状态为 awaitingactive
shell
curl --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 }

添加成员到群组或项目#

向群组或项目添加成员。

plaintext
POST /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。旗舰版专用。
shell
curl --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
1{ 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}
如果[管理员批准角色提升](../administration/settings/sign_up_restrictions.md#turn-on-administrator-approval-for-role-promotions)已开启,提升现有用户到计费角色的成员请求需要管理员批准。

要启用 管理非计费角色提升, 您必须首先启用 enable_member_promotion_management 应用设置。

队列单个用户的示例:

shell
curl --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." } }

队列多个用户的示例:

shell
curl --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"
json
1{ 2 "queued_users": { 3 "username_1": "Request queued for administrator approval.", 4 "username_2": "Request queued for administrator approval." 5 }, 6 "status": "success" 7}

编辑群组或项目的成员#

更新群组或项目的成员。

plaintext
PUT /groups/:id/members/:user_id PUT /projects/:id/members/:user_id
属性类型必需描述
id整数或字符串项目或群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
access_level整数有效的访问级别
expires_at字符串格式为 YEAR-MONTH-DAY 的日期字符串。
member_role_id整数成员角色的 ID。旗舰版专用。
shell
curl --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"

示例响应:

json
1{ 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}
如果[管理员批准角色提升](../administration/settings/sign_up_restrictions.md#turn-on-administrator-approval-for-role-promotions)已开启,提升现有用户到计费角色的成员请求需要管理员批准。

要启用 管理非计费角色提升, 您必须首先启用 enable_member_promotion_management 应用设置。

示例响应:

json
{ "message":{ "username_1":"Request queued for administrator approval." } }

设置群组成员的覆盖标志#

默认情况下,LDAP 群组成员的访问级别设置为 LDAP 通过群组同步指定的值。您可以通过调用此端点允许访问级别覆盖。

plaintext
POST /groups/:id/members/:user_id/override
属性类型必需描述
id整数或字符串群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"

示例响应:

json
1{ 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 规定的值。

plaintext
DELETE /groups/:id/members/:user_id/override
属性类型必需描述
id整数或字符串群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
shell
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"

示例响应:

json
1{ 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 将其移除。请参阅 从群组中移除计费成员 以获取替代方法。

plaintext
DELETE /groups/:id/members/:user_id DELETE /projects/:id/members/:user_id
属性类型是否必需描述
id整数或字符串项目或群组的 ID 或 URL 编码路径
user_id整数成员的用户 ID。
skip_subresources布尔值是否跳过删除被移除成员在子群组和项目中的直接成员资格。默认为 false
unassign_issuables布尔值是否将被移除成员从给定群组或项目中的任何议题或合并请求中取消分配。默认为 false

示例请求:

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

批准群组成员#

批准一个群组及其子群组和项目的待定用户。

plaintext
PUT /groups/:id/members/:member_id/approve
属性类型是否必需描述
id整数或字符串ID 或 顶级群组的 URL 编码路径
member_id整数成员的 ID

示例请求:

shell
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/members/:member_id/approve"

批准群组的所有待定成员#

批准一个群组及其子群组和项目的所有待定用户。

plaintext
POST /groups/:id/members/approve_all
属性类型是否必需描述
id整数或字符串ID 或 顶级群组的 URL 编码路径.

示例请求:

shell
curl --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 端点接受 分页 参数 pageper_page 以限制成员列表。

plaintext
GET /groups/:id/pending_members
属性类型是否必需描述
id整数或字符串ID 或群组的 URL 编码路径
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/groups/:id/pending_members"

示例响应:

json
1[ 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]

授予群组项目访问权限#

请参阅和群组共享项目