群组 API
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 极狐GitLab私有化部署, 极狐GitLab Dedicated
使用此 API 查看和管理极狐GitLab群组。更多信息,请参见群组。
端点响应可能会根据群组中经过身份验证的用户的权限而有所不同。
获取单个群组
获取群组的所有详细信息。此端点可以在群组公开访问的情况下无需身份验证进行访问。如果请求的用户是管理员且群组公开访问,则返回 runners_token 和 enabled_git_access_protocol,如果用户是管理员或群组所有者。
plaintextGET /groups/:id
参数:
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或 URL 编码路径。 |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅限管理员)。 |
| with_projects | boolean | 否 | 包含属于指定群组的项目的详细信息(默认为 true)。(已弃用,计划在 API v5 中移除。要获取群组中所有项目的详细信息,请使用列出群组的项目端点。) |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/4"
此端点最多返回 100 个项目和共享项目。要获取群组中所有项目的详细信息,请改用 列出群组的项目端点。
示例响应:
json1{ 2 "id": 4, 3 "name": "Twitter", 4 "path": "twitter", 5 "description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.", 6 "visibility": "public", 7 "avatar_url": null, 8 "web_url": "https://gitlab.example.com/groups/twitter", 9 "request_access_enabled": false, 10 "repository_storage": "default", 11 "full_name": "Twitter", 12 "full_path": "twitter", 13 "runners_token": "ba324ca7b1c77fc20bb9", 14 "file_template_project_id": 1, 15 "parent_id": null, 16 "enabled_git_access_protocol": "all", 17 "created_at": "2020-01-15T12:36:29.590Z", 18 "shared_with_groups": [ 19 { 20 "group_id": 28, 21 "group_name": "H5bp", 22 "group_full_path": "h5bp", 23 "group_access_level": 20, 24 "expires_at": null 25 } 26 ], 27 "prevent_sharing_groups_outside_hierarchy": false, 28 "projects": [ // Deprecated and will be removed in API v5 29 { 30 "id": 7, 31 "description": "Voluptas veniam qui et beatae voluptas doloremque explicabo facilis.", 32 "default_branch": "main", 33 "tag_list": [], //deprecated, use `topics` instead 34 "topics": [], 35 "archived": false, 36 "visibility": "public", 37 "ssh_url_to_repo": "git@gitlab.example.com:twitter/typeahead-js.git", 38 "http_url_to_repo": "https://gitlab.example.com/twitter/typeahead-js.git", 39 "web_url": "https://gitlab.example.com/twitter/typeahead-js", 40 "name": "Typeahead.Js", 41 "name_with_namespace": "Twitter / Typeahead.Js", 42 "path": "typeahead-js", 43 "path_with_namespace": "twitter/typeahead-js", 44 "issues_enabled": true, 45 "merge_requests_enabled": true, 46 "wiki_enabled": true, 47 "jobs_enabled": true, 48 "snippets_enabled": false, 49 "container_registry_enabled": true, 50 "created_at": "2016-06-17T07:47:25.578Z", 51 "last_activity_at": "2016-06-17T07:47:25.881Z", 52 "shared_runners_enabled": true, 53 "creator_id": 1, 54 "namespace": { 55 "id": 4, 56 "name": "Twitter", 57 "path": "twitter", 58 "kind": "group" 59 }, 60 "avatar_url": null, 61 "star_count": 0, 62 "forks_count": 0, 63 "open_issues_count": 3, 64 "public_jobs": true, 65 "shared_with_groups": [], 66 "request_access_enabled": false 67 }, 68 { 69 "id": 6, 70 "description": "Aspernatur omnis repudiandae qui voluptatibus eaque.", 71 "default_branch": "main", 72 "tag_list": [], //deprecated, use `topics` instead 73 "topics": [], 74 "archived": false, 75 "visibility": "internal", 76 "ssh_url_to_repo": "git@gitlab.example.com:twitter/flight.git", 77 "http_url_to_repo": "https://gitlab.example.com/twitter/flight.git", 78 "web_url": "https://gitlab.example.com/twitter/flight", 79 "name": "Flight", 80 "name_with_namespace": "Twitter / Flight", 81 "path": "flight", 82 "path_with_namespace": "twitter/flight", 83 "issues_enabled": true, 84 "merge_requests_enabled": true, 85 "wiki_enabled": true, 86 "jobs_enabled": true, 87 "snippets_enabled": false, 88 "container_registry_enabled": true, 89 "created_at": "2016-06-17T07:47:24.661Z", 90 "last_activity_at": "2016-06-17T07:47:24.838Z", 91 "shared_runners_enabled": true, 92 "creator_id": 1, 93 "namespace": { 94 "id": 4, 95 "name": "Twitter", 96 "path": "twitter", 97 "kind": "group" 98 }, 99 "avatar_url": null, 100 "star_count": 0, 101 "forks_count": 0, 102 "open_issues_count": 8, 103 "public_jobs": true, 104 "shared_with_groups": [], 105 "request_access_enabled": false 106 } 107 ], 108 "shared_projects": [ // Deprecated and will be removed in API v5 109 { 110 "id": 8, 111 "description": "Velit eveniet provident fugiat saepe eligendi autem.", 112 "default_branch": "main", 113 "tag_list": [], //deprecated, use `topics` instead 114 "topics": [], 115 "archived": false, 116 "visibility": "private", 117 "ssh_url_to_repo": "git@gitlab.example.com:h5bp/html5-boilerplate.git", 118 "http_url_to_repo": "https://gitlab.example.com/h5bp/html5-boilerplate.git", 119 "web_url": "https://gitlab.example.com/h5bp/html5-boilerplate", 120 "name": "Html5 Boilerplate", 121 "name_with_namespace": "H5bp / Html5 Boilerplate", 122 "path": "html5-boilerplate", 123 "path_with_namespace": "h5bp/html5-boilerplate", 124 "issues_enabled": true, 125 "merge_requests_enabled": true, 126 "wiki_enabled": true, 127 "jobs_enabled": true, 128 "snippets_enabled": false, 129 "container_registry_enabled": true, 130 "created_at": "2016-06-17T07:47:27.089Z", 131 "last_activity_at": "2016-06-17T07:47:27.310Z", 132 "shared_runners_enabled": true, 133 "creator_id": 1, 134 "namespace": { 135 "id": 5, 136 "name": "H5bp", 137 "path": "h5bp", 138 "kind": "group" 139 }, 140 "avatar_url": null, 141 "star_count": 0, 142 "forks_count": 0, 143 "open_issues_count": 4, 144 "public_jobs": true, 145 "shared_with_groups": [ 146 { 147 "group_id": 4, 148 "group_name": "Twitter", 149 "group_full_path": "twitter", 150 "group_access_level": 30, 151 "expires_at": null 152 }, 153 { 154 "group_id": 3, 155 "group_name": "Gitlab Org", 156 "group_full_path": "gitlab-org", 157 "group_access_level": 10, 158 "expires_at": "2018-08-14" 159 } 160 ] 161 } 162 ], 163 "ip_restriction_ranges": null, 164 "math_rendering_limits_enabled": true, 165 "lock_math_rendering_limits_enabled": false 166}
prevent_sharing_groups_outside_hierarchy 属性仅在顶级群组中存在。
极狐GitLab专业版或旗舰版用户还可以看到以下属性:
- shared_runners_minutes_limit
- extra_shared_runners_minutes_limit
- marked_for_deletion_on
- membership_lock
- wiki_access_level
- duo_features_enabled
- lock_duo_features_enabled
- duo_availability
- experiment_features_enabled
额外的响应属性:
json1{ 2 "id": 4, 3 "description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.", 4 "shared_runners_minutes_limit": 133, 5 "extra_shared_runners_minutes_limit": 133, 6 "marked_for_deletion_on": "2020-04-03", 7 "membership_lock": false, 8 "wiki_access_level": "disabled", 9 "duo_features_enabled": true, 10 "lock_duo_features_enabled": false, 11 "duo_availability": "default_on", 12 "experiment_features_enabled": false, 13 ... 14}
添加参数 with_projects=false 时,项目不会返回。
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/4?with_projects=false"
示例响应:
json1{ 2 "id": 4, 3 "name": "Twitter", 4 "path": "twitter", 5 "description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.", 6 "visibility": "public", 7 "avatar_url": null, 8 "web_url": "https://gitlab.example.com/groups/twitter", 9 "request_access_enabled": false, 10 "repository_storage": "default", 11 "full_name": "Twitter", 12 "full_path": "twitter", 13 "file_template_project_id": 1, 14 "parent_id": null 15}
列出群组
列出群组。
列出所有群组
获取经过身份验证用户可见的群组列表。在无需身份验证的情况下访问时,仅返回公共群组。
默认情况下,此请求一次返回 20 个结果,因为 API 结果是分页的。
在无需身份验证的情况下访问时,此端点还支持键集分页:
- 当请求连续页面的结果时,您应该使用键集分页。
- 超过特定偏移限制(由REST API 的最大偏移量限制指定)时,偏移分页不可用。
参数:
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| skip_groups | array of integers | 否 | 跳过传递的群组 ID |
| all_available | boolean | 否 | 当为 true 时,返回所有可访问的群组。当为 false 时,仅返回用户是成员的群组。对于用户默认为 false,对于管理员默认为 true。未经身份验证的请求始终返回所有公共群组。owned 和 min_access_level 属性优先。 |
| search | string | 否 | 返回符合搜索条件的授权群组列表 |
| order_by | string | 否 | 按 name、path、id 或 similarity 排序群组。默认是 name |
| sort | string | 否 | 按 asc 或 desc 顺序排序群组。默认是 asc |
| statistics | boolean | 否 | 包含群组统计信息(仅限管理员)。 *注意:*对于顶级群组,响应返回 UI 中显示的完整 root_storage_statistics 数据。在极狐GitLab 17.4 中引入。 |
| visibility | string | 否 | 限制为具有 public、internal 或 private 可见性的群组。 |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅限管理员) |
| owned | boolean | 否 | 限制为当前用户显式拥有的群组 |
| min_access_level | integer | 否 | 限制为当前用户至少具有此角色(access_level)的群组 |
| top_level_only | boolean | 否 | 仅限顶级群组,排除所有子群组 |
| repository_storage | string | 否 | 按群组使用的存储库存储进行过滤_(仅限管理员)_。在极狐GitLab 16.3 中引入。仅限专业版和旗舰版。 |
| marked_for_deletion_on | date | 否 | 按群组标记为删除的日期进行过滤。在极狐GitLab 17.1 中引入。仅限专业版和旗舰版。 |
plaintextGET /groups
json1[ 2 { 3 "id": 1, 4 "name": "Foobar Group", 5 "path": "foo-bar", 6 "description": "An interesting group", 7 "visibility": "public", 8 "share_with_group_lock": false, 9 "require_two_factor_authentication": false, 10 "two_factor_grace_period": 48, 11 "project_creation_level": "developer", 12 "auto_devops_enabled": null, 13 "subgroup_creation_level": "owner", 14 "emails_disabled": null, 15 "emails_enabled": null, 16 "mentions_disabled": null, 17 "lfs_enabled": true, 18 "default_branch": null, 19 "default_branch_protection": 2, 20 "default_branch_protection_defaults": { 21 "allowed_to_push": [ 22 { 23 "access_level": 40 24 } 25 ], 26 "allow_force_push": false, 27 "allowed_to_merge": [ 28 { 29 "access_level": 40 30 } 31 ] 32 }, 33 "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg", 34 "web_url": "http://localhost:3000/groups/foo-bar", 35 "request_access_enabled": false, 36 "repository_storage": "default", 37 "full_name": "Foobar Group", 38 "full_path": "foo-bar", 39 "file_template_project_id": 1, 40 "parent_id": null, 41 "created_at": "2020-01-15T12:36:29.590Z", 42 "ip_restriction_ranges": null 43 } 44]
添加参数 statistics=true 且经过身份验证的用户是管理员时,将返回额外的群组统计信息。对于顶级群组,还会添加 root_storage_statistics。
plaintextGET /groups?statistics=true
当使用参数 statistics=true 且经过身份验证的用户是管理员时,响应包括有关容器注册表存储大小的信息:
-
container_registry_size:群组及其子群组中的所有容器存储库使用的总存储大小(以字节为单位)。计算为群组项目和子群组中的所有存储库大小之和。仅在启用容器注册表元数据数据库时可用。
-
container_registry_size_is_estimated:指示大小是基于所有存储库的实际数据的精确计算(false)还是由于性能限制而估算的(true)。
对于极狐GitLab私有化部署实例,必须启用容器注册表元数据数据库才能包含容器注册表大小属性。
json1[ 2 { 3 "id": 1, 4 "name": "Foobar Group", 5 "path": "foo-bar", 6 "description": "An interesting group", 7 "visibility": "public", 8 "share_with_group_lock": false, 9 "require_two_factor_authentication": false, 10 "two_factor_grace_period": 48, 11 "project_creation_level": "developer", 12 "auto_devops_enabled": null, 13 "subgroup_creation_level": "owner", 14 "emails_disabled": null, 15 "emails_enabled": null, 16 "mentions_disabled": null, 17 "lfs_enabled": true, 18 "default_branch": null, 19 "default_branch_protection": 2, 20 "default_branch_protection_defaults": { 21 "allowed_to_push": [ 22 { 23 "access_level": 40 24 } 25 ], 26 "allow_force_push": false, 27 "allowed_to_merge": [ 28 { 29 "access_level": 40 30 } 31 ] 32 }, 33 "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg", 34 "web_url": "http://localhost:3000/groups/foo-bar", 35 "request_access_enabled": false, 36 "repository_storage": "default", 37 "full_name": "Foobar Group", 38 "full_path": "foo-bar", 39 "file_template_project_id": 1, 40 "parent_id": null, 41 "created_at": "2020-01-15T12:36:29.590Z", 42 "statistics": { 43 "storage_size": 363, 44 "repository_size": 33, 45 "wiki_size": 100, 46 "lfs_objects_size": 123, 47 "job_artifacts_size": 57, 48 "pipeline_artifacts_size": 0, 49 "packages_size": 0, 50 "snippets_size": 50, 51 "uploads_size": 0 52 }, 53 "root_storage_statistics": { 54 "build_artifacts_size": 0, 55 "container_registry_size": 0, 56 "container_registry_size_is_estimated": false, 57 "dependency_proxy_size": 0, 58 "lfs_objects_size": 0, 59 "packages_size": 0, 60 "pipeline_artifacts_size": 0, 61 "repository_size": 0, 62 "snippets_size": 0, 63 "storage_size": 0, 64 "uploads_size": 0, 65 "wiki_size": 0 66 }, 67 "wiki_access_level": "private", 68 "duo_features_enabled": true, 69 "lock_duo_features_enabled": false, 70 "duo_availability": "default_on", 71 "experiment_features_enabled": false, 72 } 73]
极狐GitLab专业版或旗舰版用户还可以看到 wiki_access_level、duo_features_enabled、lock_duo_features_enabled、duo_availability 和 experiment_features_enabled 属性。
您可以按名称或路径搜索群组,见下文。
您可以通过以下方式按自定义属性进行过滤:
plaintextGET /groups?custom_attributes[key]=value&custom_attributes[other_key]=other_value
群组中的命名空间
默认情况下,群组一次只能获取 20 个命名空间,因为 API 结果是分页的。
要获取更多(最多 100 个),请将以下内容作为参数传递给 API 调用:
plaintext/groups?per_page=100
要切换页面,请添加:
plaintext/groups?per_page=100&page=2
搜索群组
获取名称或路径中与您的字符串匹配的所有群组。
plaintextGET /groups?search=foobar
json1[ 2 { 3 "id": 1, 4 "name": "Foobar Group", 5 "path": "foo-bar", 6 "description": "An interesting group" 7 } 8]
列出群组详情
列出群组的详细信息。
列出项目
获取此群组中的项目列表。在无需身份验证的情况下访问时,仅返回公共项目。
默认情况下,此请求一次返回 20 个结果,因为 API 结果是分页的。
plaintextGET /groups/:id/projects
参数:
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或 URL 编码路径 |
| archived | boolean | 否 | 按归档状态限制 |
| visibility | string | 否 | 按可见性 public、internal 或 private 限制 |
| order_by | string | 否 | 按 id、name、path、created_at、updated_at、similarity 1、star_count 或 last_activity_at 字段排序项目。默认是 created_at |
| sort | string | 否 | 按 asc 或 desc 顺序排序项目。默认是 desc |
| search | string | 否 | 返回符合搜索条件的授权项目列表 |
| simple | boolean | 否 | 仅返回每个项目的有限字段。在无需身份验证的情况下,仅返回简单字段。 |
| owned | boolean | 否 | 按当前用户拥有的项目进行限制 |
| starred | boolean | 否 | 按当前用户加星的项目进行限制 |
| topic | string | 否 | 返回与主题匹配的项目 |
| with_issues_enabled | boolean | 否 | 按启用议题功能的项目进行限制。默认是 false |
| with_merge_requests_enabled | boolean | 否 | 按启用合并请求功能的项目进行限制。默认是 false |
| with_shared | boolean | 否 | 包含共享给此群组的项目。默认是 true |
| include_subgroups | boolean | 否 | 包含此群组的子群组中的项目。默认是 false |
| min_access_level | integer | 否 | 限制为当前用户至少具有此角色(access_level)的项目 |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅限管理员) |
| with_security_reports | boolean | 否 | 仅返回在其任何构建中存在安全报告产物的项目。这意味着“启用了安全报告的项目”。默认是 false。仅限旗舰版。 |
脚注:
- 按 search URL 参数计算的相似度得分对结果进行排序。 使用 order_by=similarity 时,sort 参数将被忽略。 如果未提供 search 参数,API 将按 name 排序返回项目。
示例响应:
json1[ 2 { 3 "id": 9, 4 "description": "foo", 5 "default_branch": "main", 6 "tag_list": [], //deprecated, use `topics` instead 7 "topics": [], 8 "archived": false, 9 "visibility": "internal", 10 "ssh_url_to_repo": "git@gitlab.example.com/html5-boilerplate.git", 11 "http_url_to_repo": "http://gitlab.example.com/h5bp/html5-boilerplate.git", 12 "web_url": "http://gitlab.example.com/h5bp/html5-boilerplate", 13 "name": "Html5 Boilerplate", 14 "name_with_namespace": "Experimental / Html5 Boilerplate", 15 "path": "html5-boilerplate", 16 "path_with_namespace": "h5bp/html5-boilerplate", 17 "issues_enabled": true, 18 "merge_requests_enabled": true, 19 "wiki_enabled": true, 20 "jobs_enabled": true, 21 "snippets_enabled": true, 22 "created_at": "2016-04-05T21:40:50.169Z", 23 "last_activity_at": "2016-04-06T16:52:08.432Z", 24 "shared_runners_enabled": true, 25 "creator_id": 1, 26 "namespace": { 27 "id": 5, 28 "name": "Experimental", 29 "path": "h5bp", 30 "kind": "group" 31 }, 32 "avatar_url": null, 33 "star_count": 1, 34 "forks_count": 0, 35 "open_issues_count": 3, 36 "public_jobs": true, 37 "shared_with_groups": [], 38 "request_access_enabled": false 39 } 40]
列出共享项目
获取共享给此群组的项目列表。在无需身份验证的情况下访问时,仅返回公共共享项目。
默认情况下,此请求一次返回 20 个结果,因为 API 结果是分页的。
plaintextGET /groups/:id/projects/shared
参数:
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或 URL 编码路径 |
| archived | boolean | 否 | 按归档状态限制 |
| visibility | string | 否 | 按可见性 public、internal 或 private 限制 |
| order_by | string | 否 | 按 id、name、path、created_at、updated_at、star_count 或 last_activity_at 字段排序项目。默认是 created_at |
| sort | string | 否 | 按 asc 或 desc 顺序排序项目。默认是 desc |
| search | string | 否 | 返回符合搜索条件的授权项目列表 |
| simple | boolean | 否 | 仅返回每个项目的有限字段。在无需身份验证的情况下,仅返回简单字段。 |
| starred | boolean | 否 | 按当前用户加星的项目进行限制 |
| with_issues_enabled | boolean | 否 | 按启用议题功能的项目进行限制。默认是 false |
| with_merge_requests_enabled | boolean | 否 | 按启用合并请求功能的项目进行限制。默认是 false |
| min_access_level | integer | 否 | 限制为当前用户至少具有此角色(access_level)的项目 |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅限管理员) |
示例响应:
json1[ 2 { 3 "id":8, 4 "description":"Shared project for Html5 Boilerplate", 5 "name":"Html5 Boilerplate", 6 "name_with_namespace":"H5bp / Html5 Boilerplate", 7 "path":"html5-boilerplate", 8 "path_with_namespace":"h5bp/html5-boilerplate", 9 "created_at":"2020-04-27T06:13:22.642Z", 10 "default_branch":"main", 11 "tag_list":[], //deprecated, use `topics` instead 12 "topics":[], 13 "ssh_url_to_repo":"ssh://git@gitlab.com/h5bp/html5-boilerplate.git", 14 "http_url_to_repo":"https://gitlab.com/h5bp/html5-boilerplate.git", 15 "web_url":"https://gitlab.com/h5bp/html5-boilerplate", 16 "readme_url":"https://gitlab.com/h5bp/html5-boilerplate/-/blob/main/README.md", 17 "avatar_url":null, 18 "star_count":0, 19 "forks_count":4, 20 "last_activity_at":"2020-04-27T06:13:22.642Z", 21 "namespace":{ 22 "id":28, 23 "name":"H5bp", 24 "path":"h5bp", 25 "kind":"group", 26 "full_path":"h5bp", 27 "parent_id":null, 28 "avatar_url":null, 29 "web_url":"https://gitlab.com/groups/h5bp" 30 }, 31 "_links":{ 32 "self":"https://gitlab.com/api/v4/projects/8", 33 "issues":"https://gitlab.com/api/v4/projects/8/issues", 34 "merge_requests":"https://gitlab.com/api/v4/projects/8/merge_requests", 35 "repo_branches":"https://gitlab.com/api/v4/projects/8/repository/branches", 36 "labels":"https://gitlab.com/api/v4/projects/8/labels", 37 "events":"https://gitlab.com/api/v4/projects/8/events", 38 "members":"https://gitlab.com/api/v4/projects/8/members" 39 }, 40 "empty_repo":false, 41 "archived":false, 42 "visibility":"public", 43 "resolve_outdated_diff_discussions":false, 44 "container_registry_enabled":true, 45 "container_expiration_policy":{ 46 "cadence":"7d", 47 "enabled":true, 48 "keep_n":null, 49 "older_than":null, 50 "name_regex":null, 51 "name_regex_keep":null, 52 "next_run_at":"2020-05-04T06:13:22.654Z" 53 }, 54 "issues_enabled":true, 55 "merge_requests_enabled":true, 56 "wiki_enabled":true, 57 "jobs_enabled":true, 58 "snippets_enabled":true, 59 "can_create_merge_request_in":true, 60 "issues_access_level":"enabled", 61 "repository_access_level":"enabled", 62 "merge_requests_access_level":"enabled", 63 "forking_access_level":"enabled", 64 "wiki_access_level":"enabled", 65 "builds_access_level":"enabled", 66 "snippets_access_level":"enabled", 67 "pages_access_level":"enabled", 68 "security_and_compliance_access_level":"enabled", 69 "emails_disabled":null, 70 "emails_enabled": null, 71 "shared_runners_enabled":true, 72 "lfs_enabled":true, 73 "creator_id":1, 74 "import_status":"failed", 75 "open_issues_count":10, 76 "ci_default_git_depth":50, 77 "ci_forward_deployment_enabled":true, 78 "ci_forward_deployment_rollback_allowed": true, 79 "ci_allow_fork_pipelines_to_run_in_parent_project":true, 80 "public_jobs":true, 81 "build_timeout":3600, 82 "auto_cancel_pending_pipelines":"enabled", 83 "ci_config_path":null, 84 "shared_with_groups":[ 85 { 86 "group_id":24, 87 "group_name":"Commit451", 88 "group_full_path":"Commit451", 89 "group_access_level":30, 90 "expires_at":null 91 } 92 ], 93 "only_allow_merge_if_pipeline_succeeds":false, 94 "request_access_enabled":true, 95 "only_allow_merge_if_all_discussions_are_resolved":false, 96 "remove_source_branch_after_merge":true, 97 "printing_merge_request_link_enabled":true, 98 "merge_method":"merge", 99 "suggestion_commit_message":null, 100 "auto_devops_enabled":true, 101 "auto_devops_deploy_strategy":"continuous", 102 "autoclose_referenced_issues":true, 103 "repository_storage":"default" 104 } 105]
列出配置的用户
- Tier: 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
获取由指定群组配置的用户列表。不包括子群组。
需要在群组中至少具有维护者角色。
plaintextGET /groups/:id/provisioned_users
参数:
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | ID 或 URL 编码路径 |
| username | string | 否 | 返回具有特定用户名的单个用户 |
| search | string | 否 | 按名称、电子邮件、用户名搜索用户 |
| active | boolean | 否 | 仅返回活动用户 |
| blocked | boolean | 否 | 仅返回被阻止的用户 |
| created_after | datetime | 否 | 返回在指定时间之后创建的用户 |
| created_before | datetime | 否 | 返回在指定时间之前创建的用户 |
示例响应:
json1[ 2 { 3 "id": 66, 4 "username": "user22", 5 "name": "John Doe22", 6 "state": "active", 7 "avatar_url": "https://www.gravatar.com/avatar/xxx?s=80&d=identicon", 8 "web_url": "http://my.gitlab.com/user22", 9 "created_at": "2021-09-10T12:48:22.381Z", 10 "bio": "", 11 "location": null, 12 "public_email": "", 13 "skype": "", 14 "linkedin": "", 15 "twitter": "", 16 "website_url": "", 17 "organization": null, 18 "job_title": "", 19 "pronouns": null, 20 "bot": false, 21 "work_information": null, 22 "followers": 0, 23 "following": 0, 24 "local_time": null, 25 "last_sign_in_at": null, 26 "confirmed_at": "2021-09-10T12:48:22.330Z", 27 "last_activity_on": null, 28 "email": "user22@example.org", 29 "theme_id": 1, 30 "color_scheme_id": 1, 31 "projects_limit": 100000, 32 "current_sign_in_at": null, 33 "identities": [ ], 34 "can_create_group": true, 35 "can_create_project": true, 36 "two_factor_enabled": false, 37 "external": false, 38 "private_profile": false, 39 "commit_email": "user22@example.org", 40 "shared_runners_minutes_limit": null, 41 "extra_shared_runners_minutes_limit": null 42 }, 43 ... 44]
列出用户
- Tier: 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
- Status: 试验
History
- 在极狐GitLab 16.6 中引入。该功能是一个试验性功能。
获取群组的用户列表。此端点返回与顶级群组相关的用户,无论他们当前的成员身份如何。例如,与群组连接了 SAML 身份的用户,或由群组或子群组创建的服务帐户。
此端点是一个试验,可能会在没有通知的情况下更改或删除。
需要群组的所有者角色。
plaintextGET /groups/:id/users
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/345/users?include_saml_users=true&include_service_accounts=true"
参数:
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | ID 或 URL 编码路径。 |
| include_saml_users | boolean | 是 (见描述) | 包含具有 SAML 身份的用户。此值或 include_service_accounts 必须为 true。 |
| include_service_accounts | boolean | 是 (见描述) | 包含服务帐户用户。此值或 include_saml_users 必须为 true。 |
| search | string | 否 | 按名称、电子邮件、用户名搜索用户。 |
如果成功,返回 200 OK 和以下响应属性:
示例响应:
json1[ 2 { 3 "id": 66, 4 "username": "user22", 5 "name": "John Doe22", 6 "state": "active", 7 "avatar_url": "https://www.gravatar.com/avatar/xxx?s=80&d=identicon", 8 "web_url": "http://my.gitlab.com/user22", 9 "created_at": "2021-09-10T12:48:22.381Z", 10 "bio": "", 11 "location": null, 12 "public_email": "", 13 "skype": "", 14 "linkedin": "", 15 "twitter": "", 16 "website_url": "", 17 "organization": null, 18 "job_title": "", 19 "pronouns": null, 20 "bot": false, 21 "work_information": null, 22 "followers": 0, 23 "following": 0, 24 "local_time": null, 25 "last_sign_in_at": null, 26 "confirmed_at": "2021-09-10T12:48:22.330Z", 27 "last_activity_on": null, 28 "email": "user22@example.org", 29 "theme_id": 1, 30 "color_scheme_id": 1, 31 "projects_limit": 100000, 32 "current_sign_in_at": null, 33 "identities": [ ], 34 "can_create_group": true, 35 "can_create_project": true, 36 "two_factor_enabled": false, 37 "external": false, 38 "private_profile": false, 39 "commit_email": "user22@example.org", 40 "shared_runners_minutes_limit": null, 41 "extra_shared_runners_minutes_limit": null 42 }, 43 ... 44]
列出子群组
获取此群组中可见的直接子群组列表。
默认情况下,此请求一次返回 20 个结果,因为 API 结果是分页的。
如果您请求此列表作为:
- 未经身份验证的用户,响应仅返回公共群组。
- 经身份验证的用户,响应仅返回您是成员的群组,不包括公共群组。
参数:
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 直接父群组的 ID 或 URL 编码路径 |
| skip_groups | array of integers | 否 | 跳过传递的群组 ID |
| all_available | boolean | 否 | 显示您可以访问的所有群组(对于经过身份验证的用户默认为 false,对于管理员默认为 true);属性 owned 和 min_access_level 优先 |
| search | string | 否 | 返回符合搜索条件的授权群组列表。仅搜索子群组短路径(不搜索完整路径) |
| order_by | string | 否 | 按 name、path 或 id 排序群组。默认是 name |
| sort | string | 否 | 按 asc 或 desc 顺序排序群组。默认是 asc |
| statistics | boolean | 否 | 包含群组统计信息(仅限管理员) |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅限管理员) |
| owned | boolean | 否 | 限制为当前用户显式拥有的群组 |
| min_access_level | integer | 否 | 限制为当前用户至少具有此角色(access_level)的群组 |
| all_available | boolean | 否 | 当为 true 时,返回所有可访问的群组。当为 false 时,仅返回用户是成员的群组。对于用户默认为 false,对于管理员默认为 true。未经身份验证的请求始终返回所有公共群组。owned 和 min_access_level 属性优先。 |
plaintextGET /groups/:id/subgroups
json1[ 2 { 3 "id": 1, 4 "name": "Foobar Group", 5 "path": "foo-bar", 6 "description": "An interesting group", 7 "visibility": "public", 8 "share_with_group_lock": false, 9 "require_two_factor_authentication": false, 10 "two_factor_grace_period": 48, 11 "project_creation_level": "developer", 12 "auto_devops_enabled": null, 13 "subgroup_creation_level": "owner", 14 "emails_disabled": null, 15 "emails_enabled": null, 16 "mentions_disabled": null, 17 "lfs_enabled": true, 18 "default_branch": null, 19 "default_branch_protection": 2, 20 "default_branch_protection_defaults": { 21 "allowed_to_push": [ 22 { 23 "access_level": 40 24 } 25 ], 26 "allow_force_push": false, 27 "allowed_to_merge": [ 28 { 29 "access_level": 40 30 } 31 ] 32 }, 33 "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/foo.jpg", 34 "web_url": "http://gitlab.example.com/groups/foo-bar", 35 "request_access_enabled": false, 36 "repository_storage": "default", 37 "full_name": "Foobar Group", 38 "full_path": "foo-bar", 39 "file_template_project_id": 1, 40 "parent_id": 123, 41 "created_at": "2020-01-15T12:36:29.590Z" 42 } 43]
极狐GitLab专业版或旗舰版用户还可以看到 wiki_access_level、lock_duo_features_enabled 和 experiment_features_enabled 属性。
列出子群组
获取此群组的可见子群组列表。未认证访问时,仅返回公共群组。
默认情况下,此请求每次返回 20 个结果,因为 API 结果已分页。
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或群组的 URL 编码路径 |
| skip_groups | array of integers | 否 | 跳过传递的群组 ID |
| all_available | boolean | 否 | 当 true 时,返回所有可访问的群组。当 false 时,仅返回用户为成员的群组。对用户默认为 false,对管理员默认为 true。未认证请求始终返回所有公共群组。owned 和 min_access_level 属性优先。 |
| search | string | 否 | 返回符合搜索条件的授权群组列表。仅搜索子群组短路径(不搜索完整路径) |
| order_by | string | 否 | 按 name、path 或 id 排列群组。默认是 name |
| sort | string | 否 | 按 asc 或 desc 排列群组。默认是 asc |
| statistics | boolean | 否 | 包含群组统计信息(仅管理员) |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅管理员) |
| owned | boolean | 否 | 限制为当前用户明确拥有的群组 |
| min_access_level | integer | 否 | 限制为当前用户至少拥有此角色(access_level)的群组 |
plaintextGET /groups/:id/descendant_groups
json1[ 2 { 3 "id": 2, 4 "name": "Bar Group", 5 "path": "bar", 6 "description": "A subgroup of Foo Group", 7 "visibility": "public", 8 "share_with_group_lock": false, 9 "require_two_factor_authentication": false, 10 "two_factor_grace_period": 48, 11 "project_creation_level": "developer", 12 "auto_devops_enabled": null, 13 "subgroup_creation_level": "owner", 14 "emails_disabled": null, 15 "emails_enabled": null, 16 "mentions_disabled": null, 17 "lfs_enabled": true, 18 "default_branch": null, 19 "default_branch_protection": 2, 20 "default_branch_protection_defaults": { 21 "allowed_to_push": [ 22 { 23 "access_level": 40 24 } 25 ], 26 "allow_force_push": false, 27 "allowed_to_merge": [ 28 { 29 "access_level": 40 30 } 31 ] 32 }, 33 "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/bar.jpg", 34 "web_url": "http://gitlab.example.com/groups/foo/bar", 35 "request_access_enabled": false, 36 "full_name": "Bar Group", 37 "full_path": "foo/bar", 38 "file_template_project_id": 1, 39 "parent_id": 123, 40 "created_at": "2020-01-15T12:36:29.590Z" 41 }, 42 { 43 "id": 3, 44 "name": "Baz Group", 45 "path": "baz", 46 "description": "A subgroup of Bar Group", 47 "visibility": "public", 48 "share_with_group_lock": false, 49 "require_two_factor_authentication": false, 50 "two_factor_grace_period": 48, 51 "project_creation_level": "developer", 52 "auto_devops_enabled": null, 53 "subgroup_creation_level": "owner", 54 "emails_disabled": null, 55 "emails_enabled": null, 56 "mentions_disabled": null, 57 "lfs_enabled": true, 58 "default_branch": null, 59 "default_branch_protection": 2, 60 "default_branch_protection_defaults": { 61 "allowed_to_push": [ 62 { 63 "access_level": 40 64 } 65 ], 66 "allow_force_push": false, 67 "allowed_to_merge": [ 68 { 69 "access_level": 40 70 } 71 ] 72 }, 73 "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/baz.jpg", 74 "web_url": "http://gitlab.example.com/groups/foo/bar/baz", 75 "request_access_enabled": false, 76 "full_name": "Baz Group", 77 "full_path": "foo/bar/baz", 78 "file_template_project_id": 1, 79 "parent_id": 123, 80 "created_at": "2020-01-15T12:36:29.590Z" 81 } 82]
极狐GitLab专业版或旗舰版的用户还会看到 wiki_access_level、experiment_features_enabled 等属性。
列出共享群组
获取被邀请的群组列表。未认证访问时,仅返回公共共享群组。
默认情况下,此请求每次返回 20 个结果,因为 API 结果已分页。
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或群组的 URL 编码路径 |
| skip_groups | array of integers | 否 | 跳过指定的群组 ID |
| search | string | 否 | 返回符合搜索条件的授权群组列表 |
| order_by | string | 否 | 按 name、path、id 或 similarity 排列群组。默认是 name |
| sort | string | 否 | 按 asc 或 desc 排列群组。默认是 asc |
| visibility | string | 否 | 限制为具有 public、internal 或 private 可见性的群组 |
| min_access_level | integer | 否 | 限制为当前用户至少拥有指定角色(access_level)的群组 |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅管理员) |
plaintextGET /groups/:id/groups/shared
示例响应:
json1[ 2 { 3 "id": 101, 4 "web_url": "http://gitlab.example.com/groups/some_path", 5 "name": "group1", 6 "path": "some_path", 7 "description": "", 8 "visibility": "public", 9 "share_with_group_lock": "false", 10 "require_two_factor_authentication": "false", 11 "two_factor_grace_period": 48, 12 "project_creation_level": "maintainer", 13 "auto_devops_enabled": "nil", 14 "subgroup_creation_level": "maintainer", 15 "emails_disabled": "false", 16 "emails_enabled": "true", 17 "mentions_disabled": "nil", 18 "lfs_enabled": "true", 19 "math_rendering_limits_enabled": "true", 20 "lock_math_rendering_limits_enabled": "false", 21 "default_branch": "nil", 22 "default_branch_protection": 2, 23 "default_branch_protection_defaults": { 24 "allowed_to_push": [ 25 { 26 "access_level": 30 27 } 28 ], 29 "allow_force_push": "true", 30 "allowed_to_merge": [ 31 { 32 "access_level": 30 33 } 34 ], 35 "developer_can_initial_push": "false", 36 "code_owner_approval_required": "false" 37 }, 38 "avatar_url": "http://gitlab.example.com/uploads/-/system/group/avatar/101/banana_sample.gif", 39 "request_access_enabled": "true", 40 "full_name": "group1", 41 "full_path": "some_path", 42 "created_at": "2024-06-06T09:39:30.056Z", 43 "parent_id": "nil", 44 "organization_id": 1, 45 "shared_runners_setting": "enabled", 46 "ldap_cn": "nil", 47 "ldap_access": "nil", 48 "wiki_access_level": "enabled" 49 } 50]
列出被邀请的群组
获取给定群组中的被邀请群组列表。未认证访问时,仅返回公共被邀请群组。此端点的速率限制为每分钟每个用户(对于认证用户)或 IP(对于未认证用户)60 次请求。
默认情况下,此请求每次返回 20 个结果,因为 API 结果已分页。
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或群组的 URL 编码路径 |
| search | string | 否 | 返回符合搜索条件的授权群组列表 |
| min_access_level | integer | 否 | 限制为当前用户至少拥有指定角色(access_level)的群组 |
| relation | array of strings | 否 | 按关系(直接或继承)过滤群组 |
| with_custom_attributes | boolean | 否 | 在响应中包含自定义属性(仅管理员) |
plaintextGET /groups/:id/invited_groups
示例响应:
json1[ 2 { 3 "id": 33, 4 "web_url": "http://gitlab.example.com/groups/flightjs", 5 "name": "Flightjs", 6 "path": "flightjs", 7 "description": "Illo dolorum tempore eligendi minima ducimus provident.", 8 "visibility": "public", 9 "share_with_group_lock": false, 10 "require_two_factor_authentication": false, 11 "two_factor_grace_period": 48, 12 "project_creation_level": "developer", 13 "auto_devops_enabled": null, 14 "subgroup_creation_level": "maintainer", 15 "emails_disabled": false, 16 "emails_enabled": true, 17 "mentions_disabled": null, 18 "lfs_enabled": true, 19 "math_rendering_limits_enabled": true, 20 "lock_math_rendering_limits_enabled": false, 21 "default_branch": null, 22 "default_branch_protection": 2, 23 "default_branch_protection_defaults": { 24 "allowed_to_push": [ 25 { 26 "access_level": 40 27 } 28 ], 29 "allow_force_push": false, 30 "allowed_to_merge": [ 31 { 32 "access_level": 40 33 } 34 ], 35 "developer_can_initial_push": false 36 }, 37 "avatar_url": null, 38 "request_access_enabled": true, 39 "full_name": "Flightjs", 40 "full_path": "flightjs", 41 "created_at": "2024-07-09T10:31:08.307Z", 42 "parent_id": null, 43 "organization_id": 1, 44 "shared_runners_setting": "enabled", 45 "ldap_cn": null, 46 "ldap_access": null, 47 "wiki_access_level": "enabled" 48 } 49]
列出审计事件
- 层级:专业版,旗舰版
- 提供:JihuLab.com,私有化部署
群组审计事件可以通过群组审计事件 API访问
管理群组
创建群组
创建一个新的项目群组。仅对可以创建群组的用户可用。
plaintextPOST /groups
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| name | string | 是 | 群组的名称。 |
| path | string | 是 | 群组的路径。 |
| auto_devops_enabled | boolean | 否 | 默认开启群组内所有项目的 Auto DevOps 流水线。 |
| avatar | mixed | 否 | 群组头像的图片文件。 |
| default_branch | string | 否 | 群组项目的默认分支名称。极狐GitLab 16.11 中引入。 |
| default_branch_protection | integer | 否 | 极狐GitLab 17.0 中弃用。请使用 default_branch_protection_defaults。 |
| default_branch_protection_defaults | hash | 否 | 极狐GitLab 17.0 中引入。可用选项请参见默认分支保护默认值的选项。 |
| description | string | 否 | 群组的描述。 |
| enabled_git_access_protocol | string | 否 | 启用的 Git 访问协议。允许值为:ssh、http 和 all,以允许两种协议。极狐GitLab 16.9 中引入。 |
| emails_disabled | boolean | 否 | (极狐GitLab 16.5 中弃用) 禁用电子邮件通知。请使用 emails_enabled。 |
| emails_enabled | boolean | 否 | 启用电子邮件通知。 |
| lfs_enabled | boolean | 否 | 为群组中的项目启用/禁用大文件存储(LFS)。 |
| mentions_disabled | boolean | 否 | 禁止群组被提及的功能。 |
| organization_id | integer | 否 | 群组的组织 ID。 |
| parent_id | integer | 否 | 用于创建嵌套群组的父群组 ID。 |
| project_creation_level | string | 否 | 决定开发人员是否可以在群组中创建项目。可以是 noone(没人)、maintainer(拥有维护者角色的用户)或 developer(拥有开发者或维护者角色的用户)。 |
| request_access_enabled | boolean | 否 | 允许用户请求成员访问。 |
| require_two_factor_authentication | boolean | 否 | 要求此群组中的所有用户设置双重身份验证。 |
| share_with_group_lock | boolean | 否 | 防止在此群组内与另一个群组共享项目。 |
| subgroup_creation_level | string | 否 | 允许创建子群组。可以是 owner(所有者)或 maintainer(拥有维护者角色的用户)。 |
| two_factor_grace_period | integer | 否 | 强制执行双因素认证之前的时间(以小时为单位)。 |
| visibility | string | 否 | 群组的可见性。可以是 private、internal 或 public。 |
| membership_lock | boolean | 否 | 用户无法被添加到此群组中的项目中。仅限专业版和旗舰版。 |
| extra_shared_runners_minutes_limit | integer | 否 | 仅限管理员设置。为此群组添加额外的计算分钟数。极狐GitLab私有化部署,专业版和旗舰版。 |
| shared_runners_minutes_limit | integer | 否 | 仅限管理员设置。此群组的最大每月计算分钟数。可以是 nil(默认;继承系统默认值)、0(无限制)或 > 0。极狐GitLab私有化部署,专业版和旗舰版。 |
| wiki_access_level | string | 否 | 维基访问级别。可以是 disabled、private 或 enabled。仅限专业版和旗舰版。 |
| experiment_features_enabled | boolean | 否 | 为此群组启用实验功能。 |
default_branch_protection 的选项
default_branch_protection 属性决定具有开发者或维护者角色的用户是否可以推送到适用的默认分支,如下表所述:
| 值 | 描述 |
|---|---|
| 0 | 无保护。具有开发者或维护者角色的用户可以: - 推送新的提交 - 强制推送更改 - 删除分支 |
| 1 | 部分保护。具有开发者或维护者角色的用户可以: - 推送新的提交 |
| 2 | 完全保护。只有具有维护者角色的用户可以: - 推送新的提交 |
| 3 | 防止推送。具有维护者角色的用户可以: - 推送新的提交 - 强制推送更改 - 接受合并请求 具有开发者角色的用户可以: - 接受合并请求 |
| 4 | 初始推送后的完全保护。具有开发者角色的用户可以: - 推送提交到空仓库。 具有维护者角色的用户可以: - 推送新的提交 - 接受合并请求 |
default_branch_protection_defaults 的选项
History
- 极狐GitLab 17.0 中引入。
default_branch_protection_defaults 属性描述了默认分支保护默认值。所有参数都是可选的。
| 键 | 类型 | 描述 |
|---|---|---|
| allowed_to_push | array | 一个允许推送的访问级别数组。支持开发者 (30) 或维护者 (40)。 |
| allow_force_push | boolean | 允许具有推送权限的所有用户强制推送。 |
| allowed_to_merge | array | 一个允许合并的访问级别数组。支持开发者 (30) 或维护者 (40)。 |
| developer_can_initial_push | boolean | 允许开发人员初始推送。 |
创建子群组
这类似于创建新群组。您需要从列出群组调用中获取 parent_id。然后您可以输入所需的:
- subgroup_path
- subgroup_name
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --header "Content-Type: application/json" \ --data '{"path": "<subgroup_path>", "name": "<subgroup_name>", "parent_id": <parent_group_id> }' \ "https://gitlab.example.com/api/v4/groups/"
同步群组与 LDAP
- 层级:专业版,旗舰版
- 提供:私有化部署
同步群组与其关联的 LDAP 群组。仅对群组所有者和管理员可用。
plaintextPOST /groups/:id/ldap_sync
参数:
- id(必需)- 用户群组的 ID 或路径
更新群组属性
History
- 极狐GitLab 15.3 中引入的 unique_project_download_limit、unique_project_download_limit_interval_in_seconds 和 unique_project_download_limit_allowlist 使用名为 limit_unique_project_downloads_per_namespace_user 的标志。默认情况下禁用。
更新项目群组。仅对群组所有者和管理员可用。
plaintextPUT /groups/:id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer | 是 | 群组的 ID。 |
| name | string | 否 | 群组的名称。 |
| path | string | 否 | 群组的路径。 |
| auto_devops_enabled | boolean | 否 | 默认开启群组内所有项目的 Auto DevOps 流水线。 |
| avatar | mixed | 否 | 群组头像的图片文件。 |
| default_branch | string | 否 | 群组项目的默认分支名称。极狐GitLab 16.11 中引入。 |
| default_branch_protection | integer | 否 | 极狐GitLab 17.0 中弃用。请使用 default_branch_protection_defaults。 |
| default_branch_protection_defaults | hash | 否 | 极狐GitLab 17.0 中引入。可用选项请参见默认分支保护默认值的选项。 |
| description | string | 否 | 群组的描述。 |
| enabled_git_access_protocol | string | 否 | 启用的 Git 访问协议。允许值为:ssh、http 和 all,以允许两种协议。极狐GitLab 16.9 中引入。 |
| emails_disabled | boolean | 否 | (极狐GitLab 16.5 中弃用) 禁用电子邮件通知。请使用 emails_enabled。 |
| emails_enabled | boolean | 否 | 启用电子邮件通知。 |
| lfs_enabled | boolean | 否 | 为群组中的项目启用/禁用大文件存储(LFS)。 |
| mentions_disabled | boolean | 否 | 禁止群组被提及的功能。 |
| prevent_sharing_groups_outside_hierarchy | boolean | 否 | 请参见防止群组共享到群组层次结构之外。此属性仅适用于顶级群组。 |
| project_creation_level | string | 否 | 决定开发人员是否可以在群组中创建项目。可以是 noone(没人)、maintainer(拥有维护者角色的用户)或 developer(拥有开发者或维护者角色的用户)。 |
| request_access_enabled | boolean | 否 | 允许用户请求成员访问。 |
| require_two_factor_authentication | boolean | 否 | 要求此群组中的所有用户设置双重身份验证。 |
| shared_runners_setting | string | 否 | 请参见共享 runners 设置的选项。为群组的子群组和项目启用或禁用实例 runners。 |
| share_with_group_lock | boolean | 否 | 防止在此群组内与另一个群组共享项目。 |
| subgroup_creation_level | string | 否 | 允许创建子群组。可以是 owner(所有者)或 maintainer(拥有维护者角色的用户)。 |
| two_factor_grace_period | integer | 否 | 强制执行双因素认证之前的时间(以小时为单位)。 |
| visibility | string | 否 | 群组的可见性级别。可以是 private、internal 或 public。 |
| extra_shared_runners_minutes_limit | integer | 否 | 仅限管理员设置。为此群组添加额外的计算分钟数。极狐GitLab私有化部署,专业版和旗舰版。 |
| file_template_project_id | integer | 否 | 用于加载自定义文件模板的项目 ID。仅限专业版和旗舰版。 |
| membership_lock | boolean | 否 | 用户无法被添加到此群组中的项目中。仅限专业版和旗舰版。 |
| prevent_forking_outside_group | boolean | 否 | 启用时,用户不能将此群组中的项目 fork 到外部命名空间。仅限专业版和旗舰版。 |
| shared_runners_minutes_limit | integer | 否 | 仅限管理员设置。此群组的最大每月计算分钟数。可以是 nil(默认;继承系统默认值)、0(无限制)或 > 0。极狐GitLab私有化部署,专业版和旗舰版。 |
| unique_project_download_limit | integer | 否 | 在指定时间内用户可以下载的唯一项目的最大数量,超过后将被禁止。仅适用于顶级群组。默认值:0,最大值:10,000。仅限旗舰版。 |
| unique_project_download_limit_interval_in_seconds | integer | 否 | 用户在下载最大数量的项目之前可以下载的唯一项目的时间周期。仅适用于顶级群组。默认值:0,最大值:864,000 秒(10 天)。仅限旗舰版。 |
| unique_project_download_limit_allowlist | array of strings | 否 | 从唯一项目下载限制中排除的用户名列表。仅适用于顶级群组。默认值:[],最大值:100 个用户名。仅限旗舰版。 |
| unique_project_download_limit_alertlist | array of integers | 否 | 超过唯一项目下载限制时收到电子邮件的用户 ID 列表。仅适用于顶级群组。默认值:[],最大值:100 个用户 ID。极狐GitLab 15.9 中引入。仅限旗舰版。 |
| auto_ban_user_on_excessive_projects_download | boolean | 否 | 启用时,当用户下载的唯一项目数量超过 unique_project_download_limit 和 unique_project_download_limit_interval_in_seconds 指定的最大数量时,用户将自动被禁止。极狐GitLab 15.4 中引入。仅限旗舰版。 |
| ip_restriction_ranges | string | 否 | 用于限制群组访问的 IP 地址或子网掩码的逗号分隔列表。极狐GitLab 15.4 中引入。仅限专业版和旗舰版。 |
| allowed_email_domains_list | string | 否 | 允许群组访问的电子邮件地址域的逗号分隔列表。极狐GitLab 专业版和旗舰版。 |
| wiki_access_level | string | 否 | 维基访问级别。可以是 disabled、private 或 enabled。仅限专业版和旗舰版。 |
| experiment_features_enabled | boolean | 否 | 为此群组启用实验功能。 |
| math_rendering_limits_enabled | boolean | 否 | 指示是否对该群组使用数学渲染限制。 |
| lock_math_rendering_limits_enabled | boolean | 否 | 指示是否对所有子群组锁定数学渲染限制。 |
| max_artifacts_size | integer | 否 | 单个作业产物的最大文件大小(以 MB 为单位)。 |
shellcurl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/groups/5?name=Experimental"
此端点最多返回 100 个项目和共享项目。要获取群组中所有项目的详细信息,请使用 列出群组的项目端点。
示例响应:
json1{ 2 "id": 5, 3 "name": "Experimental", 4 "path": "h5bp", 5 "description": "foo", 6 "visibility": "internal", 7 "avatar_url": null, 8 "web_url": "http://gitlab.example.com/groups/h5bp", 9 "request_access_enabled": false, 10 "repository_storage": "default", 11 "full_name": "Foobar Group", 12 "full_path": "h5bp", 13 "file_template_project_id": 1, 14 "parent_id": null, 15 "enabled_git_access_protocol": "all", 16 "created_at": "2020-01-15T12:36:29.590Z", 17 "prevent_sharing_groups_outside_hierarchy": false, 18 "projects": [ // 已弃用,将在 API v5 中删除 19 { 20 "id": 9, 21 "description": "foo", 22 "default_branch": "main", 23 "tag_list": [], // 已弃用,请使用 `topics` 24 "topics": [], 25 "public": false, 26 "archived": false, 27 "visibility": "internal", 28 "ssh_url_to_repo": "git@gitlab.example.com/html5-boilerplate.git", 29 "http_url_to_repo": "http://gitlab.example.com/h5bp/html5-boilerplate.git", 30 "web_url": "http://gitlab.example.com/h5bp/html5-boilerplate", 31 "name": "Html5 Boilerplate", 32 "name_with_namespace": "Experimental / Html5 Boilerplate", 33 "path": "html5-boilerplate", 34 "path_with_namespace": "h5bp/html5-boilerplate", 35 "issues_enabled": true, 36 "merge_requests_enabled": true, 37 "wiki_enabled": true, 38 "jobs_enabled": true, 39 "snippets_enabled": true, 40 "created_at": "2016-04-05T21:40:50.169Z", 41 "last_activity_at": "2016-04-06T16:52:08.432Z", 42 "shared_runners_enabled": true, 43 "creator_id": 1, 44 "namespace": { 45 "id": 5, 46 "name": "Experimental", 47 "path": "h5bp", 48 "kind": "group" 49 }, 50 "avatar_url": null, 51 "star_count": 1, 52 "forks_count": 0, 53 "open_issues_count": 3, 54 "public_jobs": true, 55 "shared_with_groups": [], 56 "request_access_enabled": false 57 } 58 ], 59 "ip_restriction_ranges": null, 60 "math_rendering_limits_enabled": true, 61 "lock_math_rendering_limits_enabled": false 62}
响应中的 prevent_sharing_groups_outside_hierarchy 属性仅对顶级群组存在。
极狐GitLab专业版或旗舰版的用户还会看到 wiki_access_level、experiment_features_enabled 等属性。
shared_runners_setting 的选项
shared_runners_setting 属性决定了实例 runners 是否对群组的子群组和项目启用。
| 值 | 描述 |
|---|---|
| enabled | 为此群组中的所有项目和子群组启用实例 runners。 |
| disabled_and_overridable | 为此群组中的所有项目和子群组禁用实例 runners,但允许子群组覆盖此设置。 |
| disabled_and_unoverridable | 为此群组中的所有项目和子群组禁用实例 runners,并阻止子群组覆盖此设置。 |
| disabled_with_override | (已弃用。请使用 disabled_and_overridable)为此群组中的所有项目和子群组禁用实例 runners,但允许子群组覆盖此设置。 |
群组成员
请参阅群组成员文档。
更新群组头像
更新群组头像。
下载群组头像
获取群组头像。如果群组是公开访问的,则可以在没有认证的情况下访问此端点。
plaintextGET /groups/:id/avatar
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID |
示例:
shellcurl --header "PRIVATE-TOKEN: $GITLAB_LOCAL_TOKEN" \ --remote-header-name \ --remote-name \ "https://gitlab.example.com/api/v4/groups/4/avatar"
上传群组头像
要从文件系统上传头像文件,请使用 --form 参数。这会导致 curl 使用 Content-Type: multipart/form-data 标头发布数据。 file= 参数必须指向文件系统上的文件,并以 @ 作为前缀。例如:
shellcurl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/22" \ --form "avatar=@/tmp/example.png"
删除群组头像
History
- 极狐GitLab 15.4 中引入。
要删除群组头像,请使用 avatar 属性的空值。
示例请求:
shellcurl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/22" \ --data "avatar="
删除群组
History
- 极狐GitLab 15.3 中引入的立即删除子群组使用名为 immediate_delete_subgroup_api 的标志。默认情况下禁用。
- 极狐GitLab 15.4 中启用了 JihuLab.com 和极狐GitLab 私有化部署上的立即删除子群组。
- 极狐GitLab 15.4 中默认启用了立即删除子群组。
- 极狐GitLab 15.9 中移除了立即删除子群组的 immediate_delete_subgroup_api 标志。
仅对群组所有者和管理员可用。
此端点:
- 在专业版和旗舰版层级上,标记群组待删除。默认情况下删除在 7 天后发生,但您可以在实例设置中更改保留期。
- 在基础版层级上,立即删除群组并队列一个后台作业以删除群组中的所有项目。
- 如果子群组被标记为删除,则立即删除子群组(极狐GitLab 15.4 及更高版本)。端点不会立即删除顶级群组。
plaintextDELETE /groups/:id
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或群组的 URL 编码路径 |
| permanently_remove | boolean/string | 否 | 如果子群组被标记为删除,则立即删除子群组。极狐GitLab 15.4 中引入。仅限专业版和旗舰版。 |
| full_path | string | 否 | 使用 permanently_remove 的子群组的完整路径。极狐GitLab 15.4 中引入。要查找子群组路径,请参阅群组详情。仅限专业版和旗舰版。 |
如果用户有授权,则响应为 202 Accepted。
恢复标记为删除的群组
- 层级:专业版,旗舰版
- 提供:JihuLab.com,私有化部署
恢复标记为删除的群组。
plaintextPOST /groups/:id/restore
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或群组的 URL 编码路径 |
撤销令牌
History
- 极狐GitLab 17.2 中引入,使用名为 group_agnostic_token_revocation 的功能标志。默认禁用。
- 极狐GitLab 17.3 中引入了用户的 feed 令牌撤销。
撤销令牌,如果它有权访问群组或其任何子群组和项目。如果令牌被撤销,或已被撤销,则其详细信息在响应中返回。
必须满足以下条件:
- 群组必须是顶级群组。
- 您必须拥有群组的所有者角色。
- 令牌类型之一:
- 个人访问令牌
- 群组访问令牌
- 项目访问令牌
- 群组部署令牌
- 用户 feed 令牌
稍后可能支持其他令牌类型。
plaintextPOST /groups/:id/tokens/revoke
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer or string | 是 | 群组的 ID 或群组的 URL 编码路径。 |
| token | string | 是 | 明文令牌。 |
如果成功,则返回 200 OK 和令牌的 JSON 表示。返回的属性将因令牌类型而有所不同。
示例请求
shellcurl --request POST \ --header "PRIVATE-TOKEN: <your_access_token>" \ --header "Content-Type: application/json" \ --data '{"token":"glpat-EXAMPLE"}' \ --url "https://gitlab.example.com/api/v4/groups/63/tokens/revoke"
示例响应:
json1{ 2 "id": 9, 3 "name": "my-subgroup-deploytoken", 4 "username": "gitlab+deploy-token-9", 5 "expires_at": null, 6 "scopes": 7 [ 8 "read_repository", 9 "read_package_registry", 10 "write_package_registry" 11 ], 12 "revoked": true, 13 "expired": false 14}
与群组共享群组
这些端点用于创建和删除链接,以便将群组与另一个群组共享。有关详细信息,请参阅极狐GitLab 群组页面中的相关讨论。
创建链接以将群组与另一个群组共享
与另一个群组共享群组。成功时返回 200 和群组详情。
plaintextPOST /groups/:id/share
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或群组的 URL 编码路径 |
| group_id | integer | 是 | 要与之共享的群组 ID |
| group_access | integer | 是 | 向群组授予的角色(access_level) |
| expires_at | string | 否 | 共享过期日期,格式为 ISO 8601:2016-09-26 |
| member_role_id | integer | 否 | 要分配给被邀请群组的自定义角色的 ID |
删除群组与其他群组共享的链接
从另一个群组取消共享该群组。成功时返回 204,且无内容。
plaintextDELETE /groups/:id/share/:group_id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer/string | 是 | 群组的 ID 或 群组的 URL 编码路径 |
| group_id | integer | 是 | 要共享的群组的 ID |
将项目转移到群组
将项目转移到群组命名空间。仅对实例管理员可用,虽然有一个替代的 API 端点可用,该端点不需要实例上的管理员访问权限。当项目的存储库中存在标记的软件包时,项目转移可能会失败。
plaintextPOST /groups/:id/projects/:project_id
参数:
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/groups/4/projects/56"
转移群组
将群组转移到新的父群组或将子群组变为顶级群组。对管理员和用户可用:
plaintextPOST /groups/:id/transfer
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数 | 是 | 要转移的群组的 ID。 |
| group_id | 整数 | 否 | 新父群组的 ID。如果未指定,则要转移的群组将变为顶级群组。 |
shellcurl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/groups/4/transfer?group_id=7"
列出可用于群组转移的位置
History
- 引入于极狐GitLab 15.4。
检索用户可以转移群组的群组列表。
plaintextGET /groups/:id/transfer_locations
| 属性 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 要转移的群组的 ID 或 URL 编码路径。 |
| search | 字符串 | 否 | 要搜索的群组名称。 |
示例请求:
shellcurl --request GET "https://gitlab.example.com/api/v4/groups/1/transfer_locations"
示例响应:
json1[ 2 { 3 "id": 27, 4 "web_url": "https://gitlab.example.com/groups/gitlab", 5 "name": "GitLab", 6 "avatar_url": null, 7 "full_name": "GitLab", 8 "full_path": "GitLab" 9 }, 10 { 11 "id": 31, 12 "web_url": "https://gitlab.example.com/groups/foobar", 13 "name": "FooBar", 14 "avatar_url": null, 15 "full_name": "FooBar", 16 "full_path": "FooBar" 17 } 18]