群组和项目成员 API

created_by 字段引入于极狐GitLab 14.10。

角色

Git 分配给用户或群组的角色Gitlab::Access 模块被定义为 access_level

  • 无访问权限(0
  • 最小访问权限(5
  • 访客(10
  • 报告者(20
  • 开发者(30
  • 维护者(40
  • 拥有者(50
  • 管理员(60

限制

group_saml_identity 参数仅对 SSO 启用的群组拥有者可见。

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

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

这个功能使用分页参数 pageper_page 限制用户列表。

GET /groups/:id/members
GET /projects/:id/members
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的项目或群组路径
query string no 查询成员的查询字符串
user_ids array of integers no 根据特定用户 ID 过滤结果
skip_users array of integers no 从结果中过滤跳过的用户
show_seat_info boolean no 显示用户的席位信息
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/members"
curl --header "PRIVATE-TOKEN: <your_access_token>" "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-22T14:13:35Z",
    "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-22T14:13:35Z",
    "access_level": 30,
    "email": "john@example.com",
    "group_saml_identity": {
      "extern_uid":"ABC-1234567890",
      "provider": "group_saml",
      "saml_provider_id": 10
    }
  }
]

列出群组或项目中包括继承和邀请成员在内的所有成员

获取经过身份验证的用户可以查看的群组或项目成员的列表,包括继承的成员、受邀用户和祖先群组的权限。

如果用户是该群组或项目的成员,并且也是一个或多个祖先群组的成员,仅返回其具有最高 access_level 的成员资格,其代表了用户的有效权限。

如果出现以下任一情况,则返回受邀群组的成员:

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

该函数采用分页参数 pageper_page 限制用户列表。

GET /groups/:id/members/all
GET /projects/:id/members/all
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组或项目路径
query string no 查询成员的查询串
user_ids array of integers no 根据特定用户 ID 过滤结果
show_seat_info boolean no 显示用户席位信息
state string no 根据成员状态过滤结果:awaitingactive
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/members/all"
curl --header "PRIVATE-TOKEN: <your_access_token>" "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-22T14:13:35Z",
    "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-22T14:13:35Z",
    "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-22T14:13:35Z",
    "access_level": 30,
    "group_saml_identity": null
  }
]

获取群组或项目成员

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

GET /groups/:id/members/:user_id
GET /projects/:id/members/:user_id
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的项目或群组信息
user_id integer yes 成员的用户 ID
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/members/:user_id"
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/: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
}

获取群组或项目中包括继承和邀请成员在内的成员

  • 引入于极狐GitLab 12.4。
  • 在极狐GitLab 16.10 中,如果当前用户是共享群组或项目的成员时,将返回被邀请的私有群组成员,并使用名为 webui_members_inherited_users功能标志启用。默认情况下禁用。
  • 在极狐GitLab 17.0 中,在极狐GitLab.com 和自托管实例上启用该功能标志。
  • 在极狐GitLab 17.4 中,webui_members_inherited_users 功能标志被移除。默认限制受邀群组的成员。

获取群组或项目成员,包括通过祖先群组继承的成员和邀请的成员。查看相应的列出继承成员端点以获取更多详细信息。

note 在共享群组或项目中,受邀群组成员具有共享成员关系。这意味着如果请求者是共享群组或项目的成员,但不是受邀私有群组的成员,那么使用此端点,请求者可以获取所有共享群组或项目的成员,包括受邀私有群组的成员。
GET /groups/:id/members/all/:user_id
GET /projects/:id/members/all/:user_id
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的项目或群组路径
user_id integer yes 成员的用户 ID
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/members/all/:user_id"
curl --header "PRIVATE-TOKEN: <your_access_token>" "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
}

列出群组中所有计费成员

先决条件:

  • 您必须具有 Owner 角色,才能访问用于计费权限的 API 端点,如计费权限中所示。

获取计费成员的列表。该列表包括子群组和项目中的成员。

此 API 端点仅适用于顶级群组,不适用于子群组。

该函数采用分页参数 pageper_page 限制用户列表。

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

GET /groups/:id/billable_members
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组路径
search string no 按名称、用户名或公共电子邮件搜索群组成员的查询字符串
sort string no 包含指定排序参数和顺序的参数的查询字符串。请参阅下面支持的值
include_awaiting_members boolean no 是否包含待审批成员

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>" "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"
  }
]

列出群组中计费成员的成员资格

获取群组可计费成员的成员资格列表。

列出用户所属的所有项目和群组。仅包含群组层级中的项目和群组。 例如,如果请求的群组是 Root Group,并且请求的用户是 Root Group / Sub Group OneOther Group / Sub Group Two 的直接成员,那么仅返回 Root Group / Sub Group One,因为 Other Group / Sub Group Two 不在 Root Group 的层级结构中。

响应仅代表直接成员资格,不包括继承的成员资格。

此 API 端点仅适用于顶级群组,不适用于子群组。

此 API 端点需要群组的管理员权限。

此 API 端点采用分页参数 pageper_page 限制成员资格列表。

GET /groups/:id/billable_members/:user_id/memberships
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组路径
user_id integer yes 计费成员的用户 ID
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/memberships"

响应示例:

[
  {
    "id": 168,
    "source_id": 131,
    "source_full_name": "Root Group / Sub Group 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": "Root Group / Sub Group 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
    }
  }
]

列出群组中可计费成员的间接成员关系

  • 引入于GitLab 16.11。

获取群组中可计费成员的间接成员资格列表。

列出用户所属的所有项目和群组,这些项目和群组被邀请加入请求的根群组。例如,如果请求的群组是 Root Group,并且请求的用户是 Other Group / Sub Group Two 的直接成员,该群组被邀请加入 Root Group,则仅返回 Other Group / Sub Group Two

响应仅列出间接成员关系。直接成员关系不包括在内。

此 API 端点仅在顶级群组上工作。它不适用于子群组。

此 API 端点需要群组的管理员权限。

此 API 端点接受分页参数 pageper_page 来限制成员资格列表。

GET /groups/:id/billable_members/:user_id/indirect
Attribute Type Required Description
id integer or string yes The ID or URL-encoded path of the group.
user_id integer yes The user ID of the billable member.
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 integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组路径
user_id integer yes 成员的用户 ID
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id"

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

  • 引入于极狐GitLab 15.0。

更改群组中用户的成员资格状态。该状态适用于所有子群组和项目。

PUT /groups/:id/members/:user_id/state
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组路径
user_id integer yes 成员的用户 ID
state string yes 成员的新状态:awaitingactive
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "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 integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的项目或群组路径
user_id integer/string yes 新成员的用户 ID 或以逗号分隔的多个 ID
username string yes, if user_id is not provided 新成员的用户名,或用逗号分隔的多个用户名。
access_level integer yes 有效的访问级别
expires_at string no YEAR-MONTH-DAY 格式的日期字符。
invite_source string no 启动成员创建进程的邀请源。
member_role_id integer no 成员角色 DI。仅限于专业版。
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-22T14:13:35Z",
  "access_level": 30,
  "email": "john@example.com",
  "group_saml_identity": null
}
note 如果管理员批准角色提升已启用,提升现有用户为计费角色的成员请求需要管理员批准。

要启用 管理非计费促销,您必须首先启用 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":"Request queued for administrator approval."
  }
}

多个用户的队列示例:

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": "Request queued for administrator approval.",
    "username_2": "Request queued for administrator approval."
  },
  "status": "success"
}

编辑群组或项目成员

更新群组或项目成员。

PUT /groups/:id/members/:user_id
PUT /projects/:id/members/:user_id
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的项目或群组路径
user_id integer yes 成员的用户 ID
access_level integer yes 有效访问级别
expires_at string no 日期资源串,格式:YEAR-MONTH-DAY
member_role_id integer no 成员角色 ID。仅限专业版
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/members/:user_id?access_level=40"
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "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-22T14:13:35Z",
  "access_level": 40,
  "email": "john@example.com",
  "group_saml_identity": null
}
note 如果管理员批准角色提升已启用,提升现有用户为计费角色的成员请求需要管理员批准。

要启用 管理非计费促销,您必须首先启用 enable_member_promotion_management 应用程序设置。

示例响应:

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

为群组成员设置覆盖标记

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

POST /groups/:id/members/:user_id/override
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组路径
user_id integer yes 成员的用户 ID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "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-22T14:13:35Z",
  "access_level": 40,
  "email": "john@example.com",
  "override": true
}

移除群组成员覆盖

将覆盖标记设置为 False 并允许 LDAP Group Sync 将访问级别重置为 LDAP 规定的值。

DELETE /groups/:id/members/:user_id/override
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组路径
user_id integer yes 成员的用户 ID
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "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 integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的项目或群组路径
user_id integer yes 成员的用户 ID
skip_subresources boolean false 是否应跳过删除子群组和项目中已移除成员的直接成员资格。默认为 false
unassign_issuables boolean false 是否应从给定群组或项目中的任何议题或合并请求中取消分配已移除的成员。默认为 false

请求示例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/members/:user_id"
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/members/:user_id"

通过群组成员申请

通过群组及其子群组及项目的成员申请。

PUT /groups/:id/members/:member_id/approve
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的根群组路径
member_id integer yes 成员 ID

请求示例:

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

通过群组的所有成员申请

通过群组及其子群组及项目的所有成员申请。

POST /groups/:id/members/approve_all
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的根群组路径

请求示例:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/members/approve_all"

列出群组及其子群组和项目的成员申请

引入于极狐GitLab 14.6。

获取群组及其子群组和项目中处于 awaiting 状态的所有成员的列表,以及那些被邀请但没有极狐GitLab 账户的成员的列表。

此请求返回根群组层次结构中所有群组和项目的所有匹配的群组和项目成员。

当成员是尚未注册极狐GitLab 账户的受邀用户时,将返回受邀电子邮件地址。

此 API 端点仅适用于顶级群组,不适用于子群组。

此 API 端点需要管理员权限。

此 API 端点采用分页参数 pageper_page 限制成员列表。

GET /groups/:id/pending_members
参数 类型 是否必需 描述
id integer/string yes 经过身份验证的用户拥有的 ID 或 URL 编码的群组路径
curl --header "PRIVATE-TOKEN: <your_access_token>" "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
  }
]

授予群组访问项目的权限

请参见与群组共享项目