组和项目成员 API
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
使用此 API 管理组和项目成员。
角色
分配给用户或组的角色在 Gitlab::Access 模块中定义为 access_level。
- 无访问权限 (
0) - 最小访问权限 (
5) - 访客 (
10) - 计划员 (
15) - 报告者 (
20) - 开发者 (
30) - 维护者 (
40) - 所有者 (
50) - 管理员 (
60)
已知问题
group_saml_identity和group_scim_identity属性仅对启用 SSO 的组的所有者可见。- 当向组本身或其子组/项目发送 API 请求时,
email属性仅对组的企业用户的所有者可见。
列出组或项目的所有成员
获取认证用户可见的组或项目成员列表。仅返回直接成员,不包含通过上级组继承的成员。
此函数支持分页参数 page 和 per_page 来限制用户列表。
GET /groups/:id/members
GET /projects/:id/members| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 项目或组的 ID 或 URL 编码路径。 |
query |
字符串 | 否 | 根据给定名称、邮箱或用户名过滤结果。使用部分值可扩大查询范围。 |
user_ids |
整数数组 | 否 | 根据给定用户 ID 过滤结果。 |
skip_users |
整数数组 | 否 | 从结果中排除指定用户。 |
show_seat_info |
布尔值 | 否 | 显示用户的席位信息。 |
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"示例响应:
[
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"group_saml_identity": null
},
{
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"email": "john@example.com",
"group_saml_identity": {
"extern_uid":"ABC-1234567890",
"provider": "group_saml",
"saml_provider_id": 10
}
}
]列出组或项目的所有成员(包括继承和受邀成员)
获取认证用户可见的组或项目成员列表,包括通过上级组继承的成员、受邀用户及其权限。
若用户同时是当前组/项目及其一个或多个上级组的成员,仅返回其 access_level 最高的成员身份。这代表用户的实际权限。
在以下情况下返回受邀组成员:
- 受邀组是公开的。
- 请求者也是受邀组的成员。
- 请求者是共享组或项目的成员。
受邀组成员在共享组或项目中拥有共享成员身份。这意味着若请求者是共享组或项目的成员,但不是受邀私有组的成员,则使用此端点可获取所有共享组或项目成员(包括受邀私有组成员)。
此函数支持分页参数 page 和 per_page 来限制用户列表。
GET /groups/:id/members/all
GET /projects/:id/members/all| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 项目或组的 ID 或 URL 编码路径。 |
query |
字符串 | 否 | 根据给定名称、邮箱或用户名过滤结果。使用部分值可扩大查询范围。 |
user_ids |
整数数组 | 否 | 根据给定用户 ID 过滤结果。 |
show_seat_info |
布尔值 | 否 | 显示用户的席位信息。 |
state |
字符串 | 否 | 按成员状态过滤结果,可选 awaiting 或 active。仅限 Premium 和 Ultimate 版本。 |
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"示例响应:
[
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"group_saml_identity": null
},
{
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"email": "john@example.com",
"group_saml_identity": {
"extern_uid":"ABC-1234567890",
"provider": "group_saml",
"saml_provider_id": 10
}
},
{
"id": 3,
"username": "foo_bar",
"name": "Foo bar",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-11-22",
"access_level": 30,
"group_saml_identity": null
}
]获取组或项目的成员
获取组或项目的成员。仅返回直接成员,不包含通过上级组继承的成员。
GET /groups/:id/members/:user_id
GET /projects/:id/members/:user_id| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 项目或组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 成员的用户 ID。 |
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"要更新或移除组成员的自定义角色,请传递空的 member_role_id 值:
# 更新项目成员身份
curl --request PUT --header "Content-Type: application/json" \
--header "Authorization: Bearer <your_access_token>" \
--data '{"member_role_id": null, "access_level": 10}' "https://gitlab.example.com/api/v4/projects/<project_id>/members/<user_id>"
# 更新组成员身份
curl --request PUT --header "Content-Type: application/json" \
--header "Authorization: Bearer <your_access_token>" \
--data '{"member_role_id": null, "access_level": 10}' "https://gitlab.example.com/api/v4/groups/<group_id>/members/<user_id>"示例响应:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"access_level": 30,
"email": "john@example.com",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": null,
"group_saml_identity": null
}获取组或项目的成员(包括继承和受邀成员)
获取组或项目的成员,包括通过上级组继承或受邀的成员。详情请参阅对应的列出所有继承成员端点。
受邀组成员在共享组或项目中拥有共享成员身份。这意味着若请求者是共享组或项目的成员,但不是受邀私有组的成员,则使用此端点可获取所有共享组或项目成员(包括受邀私有组成员)。
GET /groups/:id/members/all/:user_id
GET /projects/:id/members/all/:user_id| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 项目或组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 成员的用户 ID。 |
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"示例响应:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"access_level": 30,
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"email": "john@example.com",
"expires_at": null,
"group_saml_identity": null
}列出组的所有可计费成员
获取计入可计费的组成员列表。列表包含子组和项目中的成员。
前提条件:
- 您必须拥有所有者角色才能访问计费权限的 API 端点,如计费权限所述。
- 此 API 端点仅适用于顶级组,不适用于子组。
此函数支持分页参数 page 和 per_page 来限制用户列表。
使用 search 参数按名称搜索可计费组成员,使用 sort 参数对结果排序。
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 |
最后活跃日期降序 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members"示例响应:
[
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"last_activity_on": "2021-01-27",
"membership_type": "group_member",
"removable": true,
"created_at": "2021-01-03T12:16:02.000Z",
"last_login_at": "2022-10-09T01:33:06.000Z"
},
{
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"email": "john@example.com",
"last_activity_on": "2021-01-25",
"membership_type": "group_member",
"removable": true,
"created_at": "2021-01-04T18:46:42.000Z",
"last_login_at": "2022-09-29T22:18:46.000Z"
},
{
"id": 3,
"username": "foo_bar",
"name": "Foo bar",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"last_activity_on": "2021-01-20",
"membership_type": "group_invite",
"removable": false,
"created_at": "2021-01-09T07:12:31.000Z",
"last_login_at": "2022-10-10T07:28:56.000Z"
}
]列出组可计费成员的成员身份
获取组可计费成员的成员身份列表。
前提条件:
- 响应仅包含直接成员身份,不包含继承的成员身份。
- 此 API 端点仅适用于顶级组,不适用于子组。
- 此 API 端点需要管理组成员身份的权限。
列出用户所属的所有项目和组。仅包含组层级内的项目和组。例如,若请求的组是 顶级组,且请求用户同时是 顶级组 / 子组一 和 其他组 / 子组二 的直接成员,则仅返回 顶级组 / 子组一,因为 其他组 / 子组二 不在 顶级组 层级内。
此 API 端点支持分页参数 page 和 per_page 来限制成员身份列表。
GET /groups/:id/billable_members/:user_id/memberships| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 可计费成员的用户 ID。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/memberships"示例响应:
[
{
"id": 168,
"source_id": 131,
"source_full_name": "Top-Level Group / Subgroup One",
"source_members_url": "https://gitlab.example.com/groups/root-group/sub-group-one/-/group_members",
"created_at": "2021-03-31T17:28:44.812Z",
"expires_at": "2022-03-21",
"access_level": {
"string_value": "Developer",
"integer_value": 30
}
},
{
"id": 169,
"source_id": 63,
"source_full_name": "Top-Level Group / Subgroup One / My Project",
"source_members_url": "https://gitlab.example.com/root-group/sub-group-one/my-project/-/project_members",
"created_at": "2021-03-31T17:29:14.934Z",
"expires_at": null,
"access_level": {
"string_value": "Maintainer",
"integer_value": 40
}
}
]列出组可计费成员的间接成员身份
- 状态:实验性
获取组可计费成员的间接成员身份列表。
前提条件:
- 此 API 端点仅适用于顶级组,不适用于子组。
- 此 API 端点需要管理组成员身份的权限。
列出用户所属的所有项目和组,这些项目和组已被邀请加入请求的顶级组。例如,若请求的组是 顶级组,且请求用户是 其他组 / 子组二 的直接成员(该组受邀加入 顶级组),则仅返回 其他组 / 子组二。
响应仅列出间接成员身份,不包含直接成员身份。
此 API 端点支持分页参数 page 和 per_page 来限制成员身份列表。
GET /groups/:id/billable_members/:user_id/indirect| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 可计费成员的用户 ID。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/indirect"示例响应:
[
{
"id": 168,
"source_id": 132,
"source_full_name": "Invited Group / Subgroup One",
"source_members_url": "https://gitlab.example.com/groups/invited-group/sub-group-one/-/group_members",
"created_at": "2021-03-31T17:28:44.812Z",
"expires_at": "2022-03-21",
"access_level": {
"string_value": "Developer",
"integer_value": 30
}
}
]从组中移除可计费成员
从组及其子组和项目中移除可计费成员。
用户无需是组成员即可被移除。例如,若用户被直接添加到组内的项目中,您仍可使用此 API 移除他们。
成员移除是异步处理的,更改将在几分钟内完成。
DELETE /groups/:id/billable_members/:user_id| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 成员的用户 ID。 |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id"更改用户在组中的成员状态
更改用户在组中的成员状态。
当用户超过免费用户限制时,将其组或项目的成员状态更改为 awaiting 或 active 可允许其访问该组或项目。此更改将应用于所有子组和项目。
PUT /groups/:id/members/:user_id/state| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 成员的用户 ID。 |
state |
字符串 | 是 | 用户的新状态。状态为 awaiting 或 active。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/state?state=active"示例响应:
{
"success":true
}向组或项目添加成员
向组或项目添加成员。
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 |
整数 | 否 | 仅限 Ultimate 版本。自定义成员角色的 ID。 |
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"示例响应:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"email": "john@example.com",
"group_saml_identity": null
}若角色提升需管理员批准已启用,将现有用户提升至可计费角色的成员请求需要管理员批准。
要启用 管理非可计费提升,必须先启用 enable_member_promotion_management 应用设置。
单个用户排队示例:
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"{
"message":{
"username_1":"请求已排队等待管理员批准。"
}
}多个用户排队示例:
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"{
"queued_users": {
"username_1": "请求已排队等待管理员批准。",
"username_2": "请求已排队等待管理员批准。"
},
"status": "success"
}编辑组或项目的成员
更新组或项目的成员。
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 |
整数 | 否 | 仅限 Ultimate 版本。自定义成员角色的 ID。若未指定值,则移除所有角色。 |
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"示例响应:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 40,
"email": "john@example.com",
"group_saml_identity": null
}若角色提升需管理员批准已启用,将现有用户提升至可计费角色的成员请求需要管理员批准。
要启用 管理非可计费提升,必须先启用 enable_member_promotion_management 应用设置。
示例响应:
{
"message":{
"username_1":"请求已排队等待管理员批准。"
}
}为组成员设置覆盖标志
默认情况下,LDAP 组成员的访问级别由 LDAP 通过组同步设置。您可以通过调用此端点允许访问级别覆盖。
POST /groups/:id/members/:user_id/override| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 成员的用户 ID。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"示例响应:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 40,
"email": "john@example.com",
"override": true
}移除组成员的覆盖
将覆盖标志设置为 false,允许 LDAP 组同步将访问级别重置为 LDAP 指定的值。
DELETE /groups/:id/members/:user_id/override| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 成员的用户 ID。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"示例响应:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 40,
"email": "john@example.com",
"override": false
}从组或项目中移除成员
从用户被明确分配角色的组或项目中移除用户。
用户必须是组成员才能被移除。例如,若用户被直接添加到组内的项目但未明确添加到此组,则不能使用此 API 移除他们。替代方案请参阅从组中移除可计费成员。
DELETE /groups/:id/members/:user_id
DELETE /projects/:id/members/:user_id| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 项目或组的 ID 或 URL 编码路径。 |
user_id |
整数 | 是 | 成员的用户 ID。 |
skip_subresources |
布尔值 | 否 | 是否跳过删除被移除成员在子组和项目中的直接成员身份。默认为 false。 |
unassign_issuables |
布尔值 | 否 | 是否将被移除成员从给定组或项目内的任何议题或合并请求中取消分配。默认为 false。 |
示例请求:
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"批准组成员
批准组的待处理用户及其子组和项目。
PUT /groups/:id/members/:member_id/approve| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 顶级组的 ID 或 URL 编码路径。 |
member_id |
整数 | 是 | 成员的 ID。 |
示例请求:
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:member_id/approve"批准组的所有待处理成员
批准组的所有待处理用户及其子组和项目。
POST /groups/:id/members/approve_all| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 顶级组的 ID 或 URL 编码路径。 |
示例请求:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/approve_all"列出组及其子组和项目的待处理成员
对于组及其子组和项目,获取所有状态为 awaiting 的成员列表,以及已受邀但尚未拥有 GitLab 账户的用户。
前提条件:
- 此 API 端点仅适用于顶级组,不适用于子组。
- 此 API 端点需要管理组成员的权限。
此请求返回顶级组层级内所有组和项目中所有匹配的组和项目成员。
当成员是尚未注册 GitLab 账户的受邀用户时,将返回受邀邮箱地址。
此 API 端点支持分页参数 page 和 per_page 来限制成员列表。
GET /groups/:id/pending_members| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
整数或字符串 | 是 | 组的 ID 或 URL 编码路径。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/pending_members"示例响应:
[
{
"id": 168,
"name": "Alex Garcia",
"username": "alex_garcia",
"email": "alex@example.com",
"avatar_url": "http://example.com/uploads/user/avatar/1/cd8.jpeg",
"web_url": "http://example.com/alex_garcia",
"approved": false,
"invited": false
},
{
"id": 169,
"email": "sidney@example.com",
"avatar_url": "http://gravatar.com/../e346561cd8.jpeg",
"approved": false,
"invited": true
},
{
"id": 170,
"email": "zhang@example.com",
"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
"approved": true,
"invited": true
}
]授予组对项目的访问权限
参阅与组共享项目