Help us learn about your current experience with the documentation. Take the survey.

组和项目成员 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_identitygroup_scim_identity 属性仅对启用 SSO 的组的所有者可见。
  • 当向组本身或其子组/项目发送 API 请求时,email 属性仅对组的企业用户的所有者可见。

列出组或项目的所有成员

获取认证用户可见的组或项目成员列表。仅返回直接成员,不包含通过上级组继承的成员。

此函数支持分页参数 pageper_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 最高的成员身份。这代表用户的实际权限。

在以下情况下返回受邀组成员:

  • 受邀组是公开的。
  • 请求者也是受邀组的成员。
  • 请求者是共享组或项目的成员。

受邀组成员在共享组或项目中拥有共享成员身份。这意味着若请求者是共享组或项目的成员,但不是受邀私有组的成员,则使用此端点可获取所有共享组或项目成员(包括受邀私有组成员)。

此函数支持分页参数 pageper_page 来限制用户列表。

GET /groups/:id/members/all
GET /projects/:id/members/all
属性 类型 必填 描述
id 整数或字符串 项目或组的 ID 或 URL 编码路径
query 字符串 根据给定名称、邮箱或用户名过滤结果。使用部分值可扩大查询范围。
user_ids 整数数组 根据给定用户 ID 过滤结果。
show_seat_info 布尔值 显示用户的席位信息。
state 字符串 按成员状态过滤结果,可选 awaitingactive。仅限 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 端点仅适用于顶级组,不适用于子组。

此函数支持分页参数 pageper_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 端点支持分页参数 pageper_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 端点支持分页参数 pageper_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"

更改用户在组中的成员状态

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

当用户超过免费用户限制时,将其组或项目的成员状态更改为 awaitingactive 可允许其访问该组或项目。此更改将应用于所有子组和项目。

PUT /groups/:id/members/:user_id/state
属性 类型 必填 描述
id 整数或字符串 组的 ID 或 URL 编码路径
user_id 整数 成员的用户 ID。
state 字符串 用户的新状态。状态为 awaitingactive
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 端点支持分页参数 pageper_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
  }
]

授予组对项目的访问权限

参阅与组共享项目