그룹 API
GitLab v19.2Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated 이 API를 사용하여 GitLab 그룹을 조회하고 관리합니다. 엔드포인트 응답은 그룹에서 인증된 사용자의 권한에 따라 달라질 수 있습니다.
-
Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 GitLab 그룹을 조회하고 관리합니다. 자세한 내용은 그룹을 참조하세요.
엔드포인트 응답은 그룹에서 인증된 사용자의 권한에 따라 달라질 수 있습니다.
그룹 조회#
그룹의 세부 정보를 조회합니다. 그룹이 공개적으로 접근 가능한 경우, 이 엔드포인트는 인증 없이도 접근할 수 있습니다. 요청하는 사용자가 관리자인 경우, 추가 정보가 반환됩니다. 인증을 통해 사용자가 관리자이거나 Owner 역할을 가진 경우 그룹의 runners_token과 enabled_git_access_protocol도 반환합니다.
GET /groups/:id
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group. |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
| with_projects | boolean | no | Include details from projects that belong to the specified group (defaults to true). (Deprecated, scheduled for removal in API v5. To get the details of all projects in a group, use the list a group’s projects endpoint.) |
응답의 `projects`와 `shared_projects` 속성은 deprecated 처리되어 [API v5에서 제거될 예정](https://gitlab.com/gitlab-org/gitlab/-/issues/213797)입니다.
그룹 내 모든 프로젝트의 세부 정보를 가져오려면 그룹 프로젝트 목록 조회 또는 그룹 공유 프로젝트 목록 조회 엔드포인트를 사용하세요.
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/4"
이 엔드포인트는 최대 100개의 프로젝트와 공유 프로젝트를 반환합니다. 그룹 내 모든 프로젝트의 세부 정보를 가져오려면 그룹 프로젝트 목록 조회 엔드포인트를 사용하세요.
응답 예시:
{
"id": 4,
"name": "Twitter",
"path": "twitter",
"description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.",
"visibility": "public",
"avatar_url": null,
"web_url": "https://gitlab.example.com/groups/twitter",
"request_access_enabled": false,
"repository_storage": "default",
"full_name": "Twitter",
"full_path": "twitter",
"runners_token": "ba324ca7b1c77fc20bb9",
"file_template_project_id": 1,
"parent_id": null,
"enabled_git_access_protocol": "all",
"created_at": "2020-01-15T12:36:29.590Z",
"shared_with_groups": [
{
"group_id": 28,
"group_name": "H5bp",
"group_full_path": "h5bp",
"group_access_level": 20,
"expires_at": null
}
],
"prevent_sharing_groups_outside_hierarchy": false,
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": false,
"only_allow_merge_if_all_discussions_are_resolved": false,
"projects": [ // Deprecated and will be removed in API v5
{
"id": 7,
"description": "Voluptas veniam qui et beatae voluptas doloremque explicabo facilis.",
"default_branch": "main",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"archived": false,
"visibility": "public",
"ssh_url_to_repo": "git@gitlab.example.com:twitter/typeahead-js.git",
"http_url_to_repo": "https://gitlab.example.com/twitter/typeahead-js.git",
"web_url": "https://gitlab.example.com/twitter/typeahead-js",
"name": "Typeahead.Js",
"name_with_namespace": "Twitter / Typeahead.Js",
"path": "typeahead-js",
"path_with_namespace": "twitter/typeahead-js",
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": true,
"created_at": "2016-06-17T07:47:25.578Z",
"last_activity_at": "2016-06-17T07:47:25.881Z",
"shared_runners_enabled": true,
"creator_id": 1,
"namespace": {
"id": 4,
"name": "Twitter",
"path": "twitter",
"kind": "group"
},
"avatar_url": null,
"star_count": 0,
"forks_count": 0,
"open_issues_count": 3,
"public_jobs": true,
"shared_with_groups": [],
"request_access_enabled": false
},
{
"id": 6,
"description": "Aspernatur omnis repudiandae qui voluptatibus eaque.",
"default_branch": "main",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"archived": false,
"visibility": "internal",
"ssh_url_to_repo": "git@gitlab.example.com:twitter/flight.git",
"http_url_to_repo": "https://gitlab.example.com/twitter/flight.git",
"web_url": "https://gitlab.example.com/twitter/flight",
"name": "Flight",
"name_with_namespace": "Twitter / Flight",
"path": "flight",
"path_with_namespace": "twitter/flight",
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": true,
"created_at": "2016-06-17T07:47:24.661Z",
"last_activity_at": "2016-06-17T07:47:24.838Z",
"shared_runners_enabled": true,
"creator_id": 1,
"namespace": {
"id": 4,
"name": "Twitter",
"path": "twitter",
"kind": "group"
},
"avatar_url": null,
"star_count": 0,
"forks_count": 0,
"open_issues_count": 8,
"public_jobs": true,
"shared_with_groups": [],
"request_access_enabled": false
}
],
"shared_projects": [ // Deprecated and will be removed in API v5
{
"id": 8,
"description": "Velit eveniet provident fugiat saepe eligendi autem.",
"default_branch": "main",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"archived": false,
"visibility": "private",
"ssh_url_to_repo": "git@gitlab.example.com:h5bp/html5-boilerplate.git",
"http_url_to_repo": "https://gitlab.example.com/h5bp/html5-boilerplate.git",
"web_url": "https://gitlab.example.com/h5bp/html5-boilerplate",
"name": "Html5 Boilerplate",
"name_with_namespace": "H5bp / Html5 Boilerplate",
"path": "html5-boilerplate",
"path_with_namespace": "h5bp/html5-boilerplate",
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": true,
"created_at": "2016-06-17T07:47:27.089Z",
"last_activity_at": "2016-06-17T07:47:27.310Z",
"shared_runners_enabled": true,
"creator_id": 1,
"namespace": {
"id": 5,
"name": "H5bp",
"path": "h5bp",
"kind": "group"
},
"avatar_url": null,
"star_count": 0,
"forks_count": 0,
"open_issues_count": 4,
"public_jobs": true,
"shared_with_groups": [
{
"group_id": 4,
"group_name": "Twitter",
"group_full_path": "twitter",
"group_access_level": 30,
"expires_at": null
},
{
"group_id": 3,
"group_name": "Gitlab Org",
"group_full_path": "gitlab-org",
"group_access_level": 10,
"expires_at": "2018-08-14"
}
]
}
],
"ip_restriction_ranges": null,
"math_rendering_limits_enabled": true,
"lock_math_rendering_limits_enabled": false
}
prevent_sharing_groups_outside_hierarchy 속성은 최상위 그룹에서만 제공됩니다.
GitLab Premium 또는 Ultimate 사용자는 다음 속성도 확인할 수 있습니다:
-
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
추가 응답 속성:
{
"id": 4,
"description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.",
"shared_runners_minutes_limit": 133,
"extra_shared_runners_minutes_limit": 133,
"marked_for_deletion_on": "2020-04-03",
"membership_lock": false,
"wiki_access_level": "disabled",
"duo_features_enabled": true,
"lock_duo_features_enabled": false,
"duo_availability": "default_on",
"experiment_features_enabled": false,
"ai_settings": {
"duo_agent_platform_enabled": true,
"duo_workflow_mcp_enabled": false,
"foundational_agents_default_enabled": true,
"ai_catalog_restricted_to_group_hierarchy": false,
"ai_usage_data_collection_enabled": false,
"prompt_injection_protection_level": "no_checks",
"include_recommended_allowed": false,
"allow_all_unix_sockets": false,
"allow_project_extension": true,
"minimum_access_level_execute": "developer",
"minimum_access_level_execute_async": "developer",
"minimum_access_level_manage": "maintainer",
"minimum_access_level_enable_on_projects": "maintainer"
},
...
}
ai_settings 객체에는 그룹의 AI 관련 설정이 포함됩니다.
자세한 내용은 ai_settings에 대한 응답 속성을 참조하세요.
ai_settings에 대한 응답 속성#
히스토리
- GitLab 19.2에서 도입됨.
ai_settings 객체는 그룹에 GitLab Duo Agent Platform을 사용할 수 있을 때 그룹을 읽을 수 있는 사용자의 응답에 포함됩니다. 이 객체에는 다음 속성이 포함됩니다:
| 속성 | 유형 | 설명 |
|---|---|---|
| ai_catalog_restricted_to_group_hierarchy | boolean | true인 경우 AI 카탈로그가 이 최상위 그룹 계층의 항목으로 제한됩니다. Premium 및 Ultimate 전용. |
| ai_usage_data_collection_enabled | boolean | true인 경우 이 그룹에 대해 AI 사용 데이터 수집이 활성화됩니다. GitLab.com 전용. |
| allow_all_unix_sockets | boolean | true인 경우 GitLab Duo Agent Platform에 대해 모든 Unix 소켓이 허용됩니다. |
| allow_project_extension | boolean | true인 경우 프로젝트가 GitLab Duo Agent Platform의 네트워크 액세스 도메인 허용 목록을 확장할 수 있습니다. |
| duo_agent_platform_enabled | boolean | true인 경우 이 그룹에 대해 GitLab Duo Agent Platform 기능이 활성화됩니다. Premium 및 Ultimate. GitLab Credits가 있는 GitLab.com의 Free 등급에서도 사용 가능. |
| duo_workflow_mcp_enabled | boolean | true인 경우 GitLab Duo Agent Platform에 대한 MCP 지원이 활성화됩니다. Premium 및 Ultimate. GitLab Credits가 있는 GitLab.com의 Free 등급에서도 사용 가능. |
| foundational_agents_default_enabled | boolean | true인 경우 이 그룹에 대해 새로운 파운데이셔널 에이전트가 기본적으로 활성화됩니다. Premium 및 Ultimate. GitLab Credits가 있는 GitLab.com의 Free 등급에서도 사용 가능. |
| include_recommended_allowed | boolean | true인 경우 GitLab Duo Agent Platform의 네트워크 액세스 허용 목록에 권장 도메인이 포함됩니다. |
| minimum_access_level_enable_on_projects | string | 프로젝트에서 GitLab Duo Agent Platform을 활성화하는 데 필요한 최소 액세스 수준. developer, maintainer 또는 owner 중 하나. dap_group_customizable_permissions 기능 플래그가 활성화된 경우 반환됩니다. |
| minimum_access_level_execute | string | 사용자가 GitLab Duo Agent Platform 기능과 상호 작용하는 데 필요한 최소 액세스 수준. guest, planner, reporter, developer, maintainer 또는 owner 중 하나. dap_group_customizable_permissions 기능 플래그가 활성화된 경우 반환됩니다. |
| minimum_access_level_execute_async | string | CI/CD에서 GitLab Duo Agent Platform 기능을 실행하는 데 필요한 최소 액세스 수준. developer, maintainer 또는 owner 중 하나. dap_group_customizable_permissions 기능 플래그가 활성화된 경우 반환됩니다. |
| minimum_access_level_manage | string | GitLab Duo Agent Platform을 관리하는 데 필요한 최소 액세스 수준. developer, maintainer 또는 owner 중 하나. dap_group_customizable_permissions 기능 플래그가 활성화된 경우 반환됩니다. |
| prompt_injection_protection_level | string | 프롬프트 인젝션 보호 수준. no_checks, log_only 또는 interrupt 중 하나. |
with_projects=false 파라미터를 추가하면 프로젝트가 반환되지 않습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/4?with_projects=false"
응답 예시:
{
"id": 4,
"name": "Twitter",
"path": "twitter",
"description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.",
"visibility": "public",
"avatar_url": null,
"web_url": "https://gitlab.example.com/groups/twitter",
"request_access_enabled": false,
"repository_storage": "default",
"full_name": "Twitter",
"full_path": "twitter",
"file_template_project_id": 1,
"parent_id": null
}
그룹 목록 조회#
전체 그룹 목록 조회#
인증된 사용자에게 표시 가능한 그룹을 나열합니다. 인증 없이 접근하면 공개 그룹만 반환됩니다.
기본적으로 이 요청은 API 결과가 페이지네이션되기 때문에 한 번에 20개의 결과를 반환합니다.
인증 없이 접근할 때, 이 엔드포인트는 키셋 페이지네이션도 지원합니다:
-
연속된 결과 페이지를 요청할 때는 키셋 페이지네이션을 사용해야 합니다.
-
특정 오프셋 제한(REST API의 오프셋 기반 페이지네이션에서 허용되는 최대 오프셋으로 지정)을 초과하면 오프셋 페이지네이션을 사용할 수 없습니다.
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| skip_groups | array of integers | no | Skip the group IDs passed. |
| all_available | boolean | no | When true, returns all accessible groups. When false, returns only groups where the user is a member. Defaults to false for users, true for administrators. Unauthenticated requests always return all public groups. The owned and min_access_level attributes take precedence. |
| search | string | no | Return the list of authorized groups matching the search criteria. |
| order_by | string | no | Order groups by name, path, id, or similarity. Default is name. |
| sort | string | no | Order groups in asc or desc order. Default is asc. |
| statistics | boolean | no | Include group statistics (administrators only). For top-level groups, the response returns the full root_storage_statistics data displayed in the UI. Introduced in GitLab 17.4. |
| visibility | string | no | Limit to groups with public, internal, or private visibility. |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
| owned | boolean | no | Limit to groups explicitly owned by the current user. |
| min_access_level | integer | no | Limit to groups where current user has at least the specified access level. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| top_level_only | boolean | no | Limit to top-level groups, excluding all subgroups. |
| repository_storage | string | no | Filter by repository storage used by the group (administrators only). Introduced in GitLab 16.3. Premium and Ultimate only. |
| marked_for_deletion_on | date | no | Filter by date when group was marked for deletion. Introduced in GitLab 17.1. Premium and Ultimate only. |
| active | boolean | no | Limit by groups that are not archived and not marked for deletion. |
| archived | boolean | no | Limit by groups that are archived. Introduced in GitLab 18.2. |
GET /groups
[
{
"id": 1,
"name": "Foobar Group",
"path": "foo-bar",
"description": "An interesting group",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "owner",
"emails_disabled": null,
"emails_enabled": null,
"mentions_disabled": null,
"lfs_enabled": true,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
]
},
"avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",
"web_url": "http://localhost:3000/groups/foo-bar",
"request_access_enabled": false,
"repository_storage": "default",
"full_name": "Foobar Group",
"full_path": "foo-bar",
"file_template_project_id": 1,
"parent_id": null,
"created_at": "2020-01-15T12:36:29.590Z",
"ip_restriction_ranges": null
}
]
statistics=true 파라미터를 추가하고 인증된 사용자가 관리자인 경우, 추가 그룹 통계가 반환됩니다. 최상위 그룹의 경우 root_storage_statistics도 함께 추가됩니다.
GET /groups?statistics=true
statistics=true 파라미터를 사용하고 인증된 사용자가 관리자인 경우, 응답에 컨테이너 레지스트리 스토리지 크기에 관한 정보가 포함됩니다:
-
container_registry_size: 그룹 및 서브그룹의 모든 컨테이너 리포지터리가 사용하는 총 스토리지 크기(바이트). 그룹 프로젝트와 서브그룹 내 모든 리포지터리 크기의 합으로 계산됩니다. 컨테이너 레지스트리 메타데이터 데이터베이스가 활성화된 경우에만 사용 가능합니다. -
container_registry_size_is_estimated: 모든 리포지터리의 실제 데이터를 기반으로 정확하게 계산된 크기(false)인지, 성능 제약으로 인해 추정된 크기(true)인지 나타냅니다.
GitLab Self-Managed 인스턴스의 경우, 컨테이너 레지스트리 크기 속성을 포함하려면 컨테이너 레지스트리 메타데이터 데이터베이스를 활성화해야 합니다.
[
{
"id": 1,
"name": "Foobar Group",
"path": "foo-bar",
"description": "An interesting group",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "owner",
"emails_disabled": null,
"emails_enabled": null,
"mentions_disabled": null,
"lfs_enabled": true,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
]
},
"avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",
"web_url": "http://localhost:3000/groups/foo-bar",
"request_access_enabled": false,
"repository_storage": "default",
"full_name": "Foobar Group",
"full_path": "foo-bar",
"file_template_project_id": 1,
"parent_id": null,
"created_at": "2020-01-15T12:36:29.590Z",
"statistics": {
"storage_size": 363,
"repository_size": 33,
"wiki_size": 100,
"lfs_objects_size": 123,
"job_artifacts_size": 57,
"pipeline_artifacts_size": 0,
"packages_size": 0,
"snippets_size": 50,
"uploads_size": 0
},
"root_storage_statistics": {
"build_artifacts_size": 0,
"container_registry_size": 0,
"container_registry_size_is_estimated": false,
"dependency_proxy_size": 0,
"lfs_objects_size": 0,
"packages_size": 0,
"pipeline_artifacts_size": 0,
"repository_size": 0,
"snippets_size": 0,
"storage_size": 0,
"uploads_size": 0,
"wiki_size": 0
},
"wiki_access_level": "private",
"duo_features_enabled": true,
"lock_duo_features_enabled": false,
"duo_availability": "default_on",
"experiment_features_enabled": false,
}
]
GitLab Premium 또는 Ultimate 사용자는 wiki_access_level, duo_features_enabled, lock_duo_features_enabled, duo_availability, experiment_features_enabled 속성도 확인할 수 있습니다.
이름이나 경로로 그룹을 검색할 수 있습니다. 아래를 참조하세요.
커스텀 속성으로 필터링하려면:
GET /groups?custom_attributes[key]=value&custom_attributes[other_key]=other_value
그룹 페이지네이션#
기본적으로 API 결과가 페이지네이션되기 때문에 한 번에 20개의 그룹만 표시됩니다.
더 많은 결과(최대 100개)를 가져오려면 API 호출에 다음을 인수로 전달하세요:
/groups?per_page=100
페이지를 변경하려면 다음을 추가하세요:
/groups?per_page=100&page=2
그룹 검색#
이름 또는 경로에 문자열이 포함된 그룹을 검색합니다.
GET /groups?search=foobar
[
{
"id": 1,
"name": "Foobar Group",
"path": "foo-bar",
"description": "An interesting group"
}
]
그룹 세부 정보 목록 조회#
프로젝트 목록 조회#
그룹 내 프로젝트를 나열합니다. 인증 없이 접근하면 공개 프로젝트만 반환됩니다.
기본적으로 이 요청은 API 결과가 페이지네이션되기 때문에 한 번에 20개의 결과를 반환합니다.
GET /groups/:id/projects
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group. |
| active | boolean | no | Limit by project status. When true, returns active projects. When false, returns projects that are archived or marked for deletion. Introduced in GitLab 18.8. |
| archived | boolean | no | Limit by archived status. |
| visibility | string | no | Limit by visibility public, internal, or private. |
| order_by | string | no | Return projects ordered by id, name, path, created_at, updated_at, similarity 1, star_count or last_activity_at fields. Default is created_at. |
| sort | string | no | Return projects sorted in asc or desc order. Default is desc. |
| search | string | no | Return list of authorized projects matching the search criteria. |
| simple | boolean | no | Return only limited fields for each project. This is a no-op without authentication where only simple fields are returned. |
| owned | boolean | no | Limit by projects owned by the current user. |
| starred | boolean | no | Limit by projects starred by the current user. |
| topic | string | no | Return projects matching the topic. |
| with_issues_enabled | boolean | no | Limit by projects with issues feature enabled. Default is false. |
| with_merge_requests_enabled | boolean | no | Limit by projects with merge requests feature enabled. Default is false. |
| with_shared | boolean | no | Include projects shared to this group. Default is true. |
| include_subgroups | boolean | no | Include projects in subgroups of this group. Default is false. |
| min_access_level | integer | no | Limit to projects where current user has at least the specified access level. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
| with_security_reports | boolean | no | Return only projects that have security reports artifacts present in any of their builds. This means “projects with security reports enabled”. Default is false. Ultimate only. |
각주:
searchURL 파라미터에서 계산된 유사도 점수로 결과를 정렬합니다.order_by=similarity를 사용하면sort파라미터는 무시됩니다.search파라미터가 제공되지 않은 경우 API는name순으로 프로젝트를 반환합니다.
응답 예시:
[
{
"id": 9,
"description": "foo",
"default_branch": "main",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"archived": false,
"visibility": "internal",
"ssh_url_to_repo": "git@gitlab.example.com/html5-boilerplate.git",
"http_url_to_repo": "http://gitlab.example.com/h5bp/html5-boilerplate.git",
"web_url": "http://gitlab.example.com/h5bp/html5-boilerplate",
"name": "Html5 Boilerplate",
"name_with_namespace": "Experimental / Html5 Boilerplate",
"path": "html5-boilerplate",
"path_with_namespace": "h5bp/html5-boilerplate",
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"created_at": "2016-04-05T21:40:50.169Z",
"last_activity_at": "2016-04-06T16:52:08.432Z",
"shared_runners_enabled": true,
"creator_id": 1,
"namespace": {
"id": 5,
"name": "Experimental",
"path": "h5bp",
"kind": "group"
},
"avatar_url": null,
"star_count": 1,
"forks_count": 0,
"open_issues_count": 3,
"public_jobs": true,
"shared_with_groups": [],
"request_access_enabled": false
}
]
그룹 내 프로젝트와 그룹에 공유된 프로젝트를 구별하려면 `namespace` 속성을 사용할 수 있습니다. 프로젝트가 그룹에 공유된 경우, 해당 프로젝트의 `namespace`는 요청이 이루어진 그룹과 다릅니다.
공유 프로젝트 목록 조회#
그룹에 공유된 프로젝트를 나열합니다. 인증 없이 접근하면 공개 공유 프로젝트만 반환됩니다.
기본적으로 이 요청은 API 결과가 페이지네이션되기 때문에 한 번에 20개의 결과를 반환합니다.
GET /groups/:id/projects/shared
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group. |
| archived | boolean | no | Limit by archived status. |
| visibility | string | no | Limit by visibility public, internal, or private. |
| order_by | string | no | Return projects ordered by id, name, path, created_at, updated_at, star_count or last_activity_at fields. Default is created_at. |
| sort | string | no | Return projects sorted in asc or desc order. Default is desc. |
| search | string | no | Return list of authorized projects matching the search criteria. |
| simple | boolean | no | Return only limited fields for each project. This is a no-op without authentication where only simple fields are returned. |
| starred | boolean | no | Limit by projects starred by the current user. |
| with_issues_enabled | boolean | no | Limit by projects with issues feature enabled. Default is false. |
| with_merge_requests_enabled | boolean | no | Limit by projects with merge requests feature enabled. Default is false. |
| min_access_level | integer | no | Limit to projects where current user has at least the specified access level. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
응답 예시:
[
{
"id":8,
"description":"Shared project for Html5 Boilerplate",
"name":"Html5 Boilerplate",
"name_with_namespace":"H5bp / Html5 Boilerplate",
"path":"html5-boilerplate",
"path_with_namespace":"h5bp/html5-boilerplate",
"created_at":"2020-04-27T06:13:22.642Z",
"default_branch":"main",
"tag_list":[], //deprecated, use `topics` instead
"topics":[],
"ssh_url_to_repo":"ssh://git@gitlab.com/h5bp/html5-boilerplate.git",
"http_url_to_repo":"https://gitlab.com/h5bp/html5-boilerplate.git",
"web_url":"https://gitlab.com/h5bp/html5-boilerplate",
"readme_url":"https://gitlab.com/h5bp/html5-boilerplate/-/blob/main/README.md",
"avatar_url":null,
"star_count":0,
"forks_count":4,
"last_activity_at":"2020-04-27T06:13:22.642Z",
"namespace":{
"id":28,
"name":"H5bp",
"path":"h5bp",
"kind":"group",
"full_path":"h5bp",
"parent_id":null,
"avatar_url":null,
"web_url":"https://gitlab.com/groups/h5bp"
},
"_links":{
"self":"https://gitlab.com/api/v4/projects/8",
"issues":"https://gitlab.com/api/v4/projects/8/issues",
"merge_requests":"https://gitlab.com/api/v4/projects/8/merge_requests",
"repo_branches":"https://gitlab.com/api/v4/projects/8/repository/branches",
"labels":"https://gitlab.com/api/v4/projects/8/labels",
"events":"https://gitlab.com/api/v4/projects/8/events",
"members":"https://gitlab.com/api/v4/projects/8/members"
},
"empty_repo":false,
"archived":false,
"visibility":"public",
"resolve_outdated_diff_discussions":false,
"container_registry_enabled":true,
"container_expiration_policy":{
"cadence":"7d",
"enabled":true,
"keep_n":null,
"older_than":null,
"name_regex":null,
"name_regex_keep":null,
"next_run_at":"2020-05-04T06:13:22.654Z"
},
"issues_enabled":true,
"merge_requests_enabled":true,
"wiki_enabled":true,
"jobs_enabled":true,
"snippets_enabled":true,
"can_create_merge_request_in":true,
"issues_access_level":"enabled",
"repository_access_level":"enabled",
"merge_requests_access_level":"enabled",
"forking_access_level":"enabled",
"wiki_access_level":"enabled",
"builds_access_level":"enabled",
"snippets_access_level":"enabled",
"pages_access_level":"enabled",
"security_and_compliance_access_level":"enabled",
"emails_disabled":null,
"emails_enabled": null,
"shared_runners_enabled":true,
"lfs_enabled":true,
"creator_id":1,
"import_status":"failed",
"open_issues_count":10,
"ci_default_git_depth":50,
"ci_forward_deployment_enabled":true,
"ci_forward_deployment_rollback_allowed": true,
"ci_allow_fork_pipelines_to_run_in_parent_project":true,
"public_jobs":true,
"build_timeout":3600,
"auto_cancel_pending_pipelines":"enabled",
"ci_config_path":null,
"shared_with_groups":[
{
"group_id":24,
"group_name":"Commit451",
"group_full_path":"Commit451",
"group_access_level":30,
"expires_at":null
}
],
"only_allow_merge_if_pipeline_succeeds":false,
"request_access_enabled":true,
"only_allow_merge_if_all_discussions_are_resolved":false,
"remove_source_branch_after_merge":true,
"printing_merge_request_link_enabled":true,
"merge_method":"merge",
"suggestion_commit_message":null,
"auto_devops_enabled":true,
"auto_devops_deploy_strategy":"continuous",
"autoclose_referenced_issues":true,
"repository_storage":"default"
}
]
공유 프로젝트 삭제#
그룹에 공유된 프로젝트를 삭제합니다. 그룹에서 Owner 역할이 필요합니다.
DELETE /groups/:id/shared_projects/:project_id
파라미터:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
| id | integer 또는 string | 예 | 그룹의 ID 또는 URL 인코딩된 경로. |
| project_id | integer | 예 | 프로젝트의 ID. |
성공하면 204 No Content를 반환합니다.
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/shared_projects/2"
전체 SAML 사용자 목록 조회#
History
- Introduced in GitLab 18.1.
지정된 최상위 그룹의 모든 SAML 사용자를 나열합니다.
page와 per_page 페이지네이션 파라미터를 사용하여 결과를 필터링합니다.
GET /groups/:id/saml_users
지원 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | ID or URL-encoded path of a top-level group. |
| username | string | no | Return a user with a given username. |
| search | string | no | Return users with a matching name, email, or username. Use partial values to increase results. |
| active | boolean | no | Return only active users. |
| blocked | boolean | no | Return only blocked users. |
| created_after | datetime | no | Return users created after the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). |
| created_before | datetime | no | Return users created before the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/saml_users"
응답 예시:
[
{
"id": 66,
"username": "user22",
"name": "Sidney Jones22",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/xxx?s=80&d=identicon",
"web_url": "http://my.gitlab.com/user22",
"created_at": "2021-09-10T12:48:22.381Z",
"bio": "",
"location": null,
"public_email": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": null,
"job_title": "",
"pronouns": null,
"bot": false,
"work_information": null,
"followers": 0,
"following": 0,
"local_time": null,
"last_sign_in_at": null,
"confirmed_at": "2021-09-10T12:48:22.330Z",
"last_activity_on": null,
"email": "user22@example.org",
"theme_id": 1,
"color_scheme_id": 1,
"projects_limit": 100000,
"current_sign_in_at": null,
"identities": [
{
"provider": "group_saml",
"extern_uid": "2435223452345",
"saml_provider_id": 1
}
],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": false,
"external": false,
"private_profile": false,
"commit_email": "user22@example.org",
"shared_runners_minutes_limit": null,
"extra_shared_runners_minutes_limit": null,
"scim_identities": [
{
"extern_uid": "2435223452345",
"group_id": 1,
"active": true
}
]
},
...
]
프로비저닝된 사용자 목록 조회#
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
그룹이 프로비저닝한 사용자를 나열합니다. 서브그룹은 포함되지 않습니다.
그룹에서 Maintainer 또는 Owner 역할이 필요합니다.
GET /groups/:id/provisioned_users
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | ID or URL-encoded path of the group. |
| username | string | no | Return single user with a specific username. |
| search | string | no | Search users by name, email, username. |
| active | boolean | no | Return only active users. |
| blocked | boolean | no | Return only blocked users. |
| created_after | datetime | no | Return users created after the specified time. |
| created_before | datetime | no | Return users created before the specified time. |
응답 예시:
[
{
"id": 66,
"username": "user22",
"name": "John Doe22",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/xxx?s=80&d=identicon",
"web_url": "http://my.gitlab.com/user22",
"created_at": "2021-09-10T12:48:22.381Z",
"bio": "",
"location": null,
"public_email": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": null,
"job_title": "",
"pronouns": null,
"bot": false,
"work_information": null,
"followers": 0,
"following": 0,
"local_time": null,
"last_sign_in_at": null,
"confirmed_at": "2021-09-10T12:48:22.330Z",
"last_activity_on": null,
"email": "user22@example.org",
"theme_id": 1,
"color_scheme_id": 1,
"projects_limit": 100000,
"current_sign_in_at": null,
"identities": [ ],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": false,
"external": false,
"private_profile": false,
"commit_email": "user22@example.org",
"shared_runners_minutes_limit": null,
"extra_shared_runners_minutes_limit": null
},
...
]
서브그룹 목록 조회#
그룹의 표시 가능한 직접 서브그룹을 나열합니다.
기본적으로 이 요청은 API 결과가 페이지네이션되기 때문에 한 번에 20개의 결과를 반환합니다.
이 목록을 요청하는 경우:
-
인증되지 않은 사용자로 요청하면 공개 그룹만 반환됩니다.
-
인증된 사용자로 요청하면 사용자가 멤버인 그룹만 반환되며 공개 그룹은 포함되지 않습니다.
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group of the immediate parent group. |
| skip_groups | array of integers | no | Skip the group IDs passed. |
| all_available | boolean | no | Show all the groups you have access to (defaults to false for authenticated users, true for administrators). Attributes owned and min_access_level have precedence. |
| search | string | no | Return the list of authorized groups matching the search criteria. Only subgroup short paths are searched (not full paths). |
| order_by | string | no | Order groups by name, path or id. Default is name. |
| sort | string | no | Order groups in asc or desc order. Default is asc. |
| statistics | boolean | no | Include group statistics (administrators only). |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
| owned | boolean | no | Limit to groups explicitly owned by the current user. |
| min_access_level | integer | no | Limit to groups where current user has at least the specified access level. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| all_available | boolean | no | When true, returns all accessible groups. When false, returns only groups where the user is a member. Defaults to false for users, true for administrators. Unauthenticated requests always return all public groups. The owned and min_access_level attributes take precedence. |
| active | boolean | no | Limit by groups that are not archived and not marked for deletion. |
GET /groups/:id/subgroups
[
{
"id": 1,
"name": "Foobar Group",
"path": "foo-bar",
"description": "An interesting group",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "owner",
"emails_disabled": null,
"emails_enabled": null,
"mentions_disabled": null,
"lfs_enabled": true,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
]
},
"avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/foo.jpg",
"web_url": "http://gitlab.example.com/groups/foo-bar",
"request_access_enabled": false,
"repository_storage": "default",
"full_name": "Foobar Group",
"full_path": "foo-bar",
"file_template_project_id": 1,
"parent_id": 123,
"created_at": "2020-01-15T12:36:29.590Z"
}
]
GitLab Premium 또는 Ultimate 사용자는 wiki_access_level, duo_features_enabled, lock_duo_features_enabled, duo_availability, experiment_features_enabled 속성도 확인할 수 있습니다.
하위 그룹 목록 조회#
그룹의 표시 가능한 하위 그룹을 모두 나열합니다. 인증 없이 접근하면 공개 그룹만 반환됩니다.
기본적으로 이 요청은 API 결과가 페이지네이션되기 때문에 한 번에 20개의 결과를 반환합니다.
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group of the immediate parent group. |
| skip_groups | array of integers | no | Skip the group IDs passed. |
| all_available | boolean | no | When true, returns all accessible groups. When false, returns only groups where the user is a member. Defaults to false for users, true for administrators. Unauthenticated requests always return all public groups. The owned and min_access_level attributes take precedence. |
| search | string | no | Return the list of authorized groups matching the search criteria. Only descendant group short paths are searched (not full paths). |
| order_by | string | no | Order groups by name, path, or id. Default is name. |
| sort | string | no | Order groups in asc or desc order. Default is asc. |
| statistics | boolean | no | Include group statistics (administrators only). |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
| owned | boolean | no | Limit to groups explicitly owned by the current user. |
| min_access_level | integer | no | Limit to groups where current user has at least the specified access level. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| active | boolean | no | Limit by groups that are not archived and not marked for deletion. |
GET /groups/:id/descendant_groups
[
{
"id": 2,
"name": "Bar Group",
"path": "bar",
"description": "A subgroup of Foo Group",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "owner",
"emails_disabled": null,
"emails_enabled": null,
"mentions_disabled": null,
"lfs_enabled": true,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
]
},
"avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/bar.jpg",
"web_url": "http://gitlab.example.com/groups/foo/bar",
"request_access_enabled": false,
"full_name": "Bar Group",
"full_path": "foo/bar",
"file_template_project_id": 1,
"parent_id": 123,
"created_at": "2020-01-15T12:36:29.590Z"
},
{
"id": 3,
"name": "Baz Group",
"path": "baz",
"description": "A subgroup of Bar Group",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "owner",
"emails_disabled": null,
"emails_enabled": null,
"mentions_disabled": null,
"lfs_enabled": true,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
]
},
"avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/baz.jpg",
"web_url": "http://gitlab.example.com/groups/foo/bar/baz",
"request_access_enabled": false,
"full_name": "Baz Group",
"full_path": "foo/bar/baz",
"file_template_project_id": 1,
"parent_id": 123,
"created_at": "2020-01-15T12:36:29.590Z"
}
]
GitLab Premium 또는 Ultimate 사용자는 wiki_access_level, duo_features_enabled, lock_duo_features_enabled, duo_availability, experiment_features_enabled 속성도 확인할 수 있습니다.
공유된 그룹 목록 조회#
지정된 그룹이 초대된 그룹을 나열합니다. 인증 없이 접근하면 공개 공유 그룹만 반환됩니다.
기본적으로 이 요청은 API 결과가 페이지네이션되기 때문에 한 번에 20개의 결과를 반환합니다.
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group. |
| skip_groups | array of integers | no | Skip the specified group IDs. |
| search | string | no | Return the list of authorized groups matching the search criteria. |
| order_by | string | no | Order groups by name, path, id, or similarity. Default is name. |
| sort | string | no | Order groups in asc or desc order. Default is asc. |
| visibility | string | no | Limit to groups with public, internal, or private visibility. |
| min_access_level | integer | no | Limit to groups where current user has at least the specified access level. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
GET /groups/:id/groups/shared
응답 예시:
[
{
"id": 101,
"web_url": "http://gitlab.example.com/groups/some_path",
"name": "group1",
"path": "some_path",
"description": "",
"visibility": "public",
"share_with_group_lock": "false",
"require_two_factor_authentication": "false",
"two_factor_grace_period": 48,
"project_creation_level": "maintainer",
"auto_devops_enabled": "nil",
"subgroup_creation_level": "maintainer",
"emails_disabled": "false",
"emails_enabled": "true",
"mentions_disabled": "nil",
"lfs_enabled": "true",
"math_rendering_limits_enabled": "true",
"lock_math_rendering_limits_enabled": "false",
"default_branch": "nil",
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 30
}
],
"allow_force_push": "true",
"allowed_to_merge": [
{
"access_level": 30
}
],
"developer_can_initial_push": "false",
"code_owner_approval_required": "false"
},
"avatar_url": "http://gitlab.example.com/uploads/-/system/group/avatar/101/banana_sample.gif",
"request_access_enabled": "true",
"full_name": "group1",
"full_path": "some_path",
"created_at": "2024-06-06T09:39:30.056Z",
"parent_id": "nil",
"organization_id": 1,
"shared_runners_setting": "enabled",
"ldap_cn": "nil",
"ldap_access": "nil",
"wiki_access_level": "enabled"
}
]
초대된 그룹 목록 조회#
그룹에 초대된 그룹을 나열합니다. 인증 없이 접근하면 공개로 초대된 그룹만 반환됩니다. 이 엔드포인트는 사용자당(인증된 사용자) 또는 IP당(미인증 사용자) 분당 60개 요청으로 속도가 제한됩니다.
기본적으로 이 요청은 API 결과가 페이지네이션되기 때문에 한 번에 20개의 결과를 반환합니다.
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group. |
| search | string | no | Return the list of authorized groups matching the search criteria. |
| min_access_level | integer | no | Limit to groups where current user has at least the specified access level. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| relation | array of strings | no | Filter the groups by relation (direct or inherited). |
| with_custom_attributes | boolean | no | Include custom attributes in response (administrators only). |
GET /groups/:id/invited_groups
응답 예시:
[
{
"id": 33,
"web_url": "http://gitlab.example.com/groups/flightjs",
"name": "Flightjs",
"path": "flightjs",
"description": "Illo dolorum tempore eligendi minima ducimus provident.",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "maintainer",
"emails_disabled": false,
"emails_enabled": true,
"mentions_disabled": null,
"lfs_enabled": true,
"math_rendering_limits_enabled": true,
"lock_math_rendering_limits_enabled": false,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
],
"developer_can_initial_push": false
},
"avatar_url": null,
"request_access_enabled": true,
"full_name": "Flightjs",
"full_path": "flightjs",
"created_at": "2024-07-09T10:31:08.307Z",
"parent_id": null,
"organization_id": 1,
"shared_runners_setting": "enabled",
"ldap_cn": null,
"ldap_access": null,
"wiki_access_level": "enabled"
}
]
감사 이벤트 목록 조회#
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
그룹 감사 이벤트는 그룹 감사 이벤트 API를 통해 접근할 수 있습니다.
그룹 관리#
그룹 생성#
GitLab.com에서 부모 그룹 없이 그룹을 생성하려면 GitLab UI를 사용해야 합니다. API로는 이 작업을 할 수 없습니다.
새 프로젝트 그룹을 생성합니다. 그룹을 생성할 수 있는 사용자에게만 제공됩니다.
POST /groups
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| name | string | yes | The name of the group. |
| path | string | yes | The path of the group. |
| auto_devops_enabled | boolean | no | Default to Auto DevOps pipeline for all projects within this group. |
| avatar | mixed | no | Image file for avatar of the group. |
| default_branch | string | no | The default branch name for group’s projects. Introduced in GitLab 16.11. |
| default_branch_protection | integer | no | Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead. |
| default_branch_protection_defaults | hash | no | Introduced in GitLab 17.0. For available options, see Options for default_branch_protection_defaults. |
| description | string | no | The group’s description. |
| enabled_git_access_protocol | string | no | Enabled protocols for Git access. Allowed values are: ssh, http, and all to allow both protocols. Introduced in GitLab 16.9. |
| emails_disabled | boolean | no | (Deprecated in GitLab 16.5.) Disable email notifications. Use emails_enabled instead. |
| emails_enabled | boolean | no | Enable email notifications. |
| lfs_enabled | boolean | no | Enable/disable Large File Storage (LFS) for the projects in this group. |
| mentions_disabled | boolean | no | Disable the capability of a group from getting mentioned. |
| organization_id | integer | no | The organization ID for the group. |
| parent_id | integer | no | The parent group ID for creating nested group. |
| project_creation_level | string | no | Determine if developers can create projects in the group. Can be administrator (users with Admin Mode enabled), noone (No one), maintainer (users with the Maintainer role), or developer (users with the Developer or Maintainer role). |
| request_access_enabled | boolean | no | Allow users to request member access. |
| require_two_factor_authentication | boolean | no | Require all users in this group to set up two-factor authentication. |
| share_with_group_lock | boolean | no | Prevent sharing a project with another group within this group. |
| subgroup_creation_level | string | no | Allowed to create subgroups. Can be owner (users with the Owner role), or maintainer (users with the Maintainer role). |
| two_factor_grace_period | integer | no | Time before Two-factor authentication is enforced (in hours). |
| visibility | string | no | The group’s visibility. Can be private, internal, or public. |
| membership_lock | boolean | no | Users cannot be added to projects in this group. Premium and Ultimate only. |
| extra_shared_runners_minutes_limit | integer | no | Can be set by administrators only. Additional compute minutes for this group. GitLab Self-Managed, Premium and Ultimate only. |
| shared_runners_minutes_limit | integer | no | Can be set by administrators only. Maximum number of monthly compute minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or > 0. GitLab Self-Managed, Premium and Ultimate only. |
| wiki_access_level | string | no | The wiki access level. Can be disabled, private, or enabled. Premium and Ultimate only. |
| duo_availability | string | no | GitLab Duo availability setting. Valid values are: default_on, default_off, never_on. Note: In the UI, never_on is displayed as “Always Off”. |
| experiment_features_enabled | boolean | no | Enable experiment features for this group. |
default_branch_protection 옵션#
default_branch_protection 속성은 Developer 또는 Maintainer 역할을 가진 사용자가 해당 기본 브랜치에 푸시할 수 있는지를 다음 표에 따라 결정합니다:
| Value | Description |
|---|---|
| 0 | No protection. Users with the Developer or Maintainer role can: - Push new commits.- Force push changes.- Delete the branch. |
| 1 | Partial protection. Users with the Developer or Maintainer role can: - Push new commits. |
| 2 | Full protection. Only users with the Maintainer role can: - Push new commits. |
| 3 | Protected against pushes. Users with the Maintainer role can: - Push new commits.- Force push changes.- Accept merge requests.Users with the Developer role can:- Accept merge requests. |
| 4 | Full protection after initial push. User with the Developer role can: - Push commit to empty repository. Users with the Maintainer role can: - Push new commits.- Accept merge requests. |
default_branch_protection_defaults 옵션#
History
- Introduced in GitLab 17.0.
default_branch_protection_defaults 속성은 기본 브랜치 보호 기본값을 설명합니다. 모든 파라미터는 선택 사항입니다.
| Key | Type | Description |
|---|---|---|
| allowed_to_push | array | An array of access levels allowed to push. Supports Developer (30) or Maintainer (40). |
| allow_force_push | boolean | Allow force push for all users with push access. |
| allowed_to_merge | array | An array of access levels allowed to merge. Supports Developer (30) or Maintainer (40). |
| developer_can_initial_push | boolean | Allow developers to initial push. |
| code_owner_approval_required | boolean | Require Code Owner approval. |
서브그룹 생성#
새 그룹 생성과 유사합니다. 그룹 목록 조회 호출에서 parent_id를 가져와야 합니다. 그런 다음 원하는 값을 입력할 수 있습니다:
-
subgroup_path -
subgroup_name
curl --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> }' \
--url "https://gitlab.example.com/api/v4/groups/"
그룹 삭제 예약#
History
-
Generally available in GitLab 16.0. Premium and Ultimate only.
-
Moved from GitLab Premium to GitLab Free in GitLab 18.0.
그룹을 삭제 예약합니다. 그룹은 보존 기간이 끝날 때 삭제됩니다:
-
GitLab.com에서는 그룹이 30일간 보존됩니다.
-
GitLab Self-Managed에서는 보존 기간이 인스턴스 설정으로 제어됩니다.
이 엔드포인트는 이전에 삭제 예약된 서브그룹을 즉시 삭제할 수도 있습니다.
사전 조건:
- 관리자이거나 그룹에서 Owner 역할이 있어야 합니다.
DELETE /groups/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | The ID or URL-encoded path of the group. |
| full_path | string | Conditional | The full path to the subgroup. Used to confirm deletion of the subgroup. If permanently_remove is true, this attribute is required. To find the subgroup path, see the group details. |
| permanently_remove | boolean/string | No | If true, immediately deletes a subgroup that is already scheduled for deletion. Cannot delete top-level groups. |
성공하면 202 Accepted 상태 코드를 반환합니다.
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/groups/:id"
구독에 연결된 GitLab.com 그룹은 삭제할 수 없습니다. 먼저 [구독을](/19.0/subscriptions/manage_subscription/#link-subscription-to-a-group) 다른 그룹과 연결해야 합니다.
그룹 영구 삭제#
설정된 보존 기간을 건너뛰고 그룹과 해당 데이터를 영구적으로 삭제합니다.
사전 조건:
- 관리자이거나 그룹에서 Owner 역할이 있어야 합니다.
DELETE /groups/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | The ID or URL-encoded path of the group. |
| full_path | string | Yes | The modified full path of the subgroup after scheduling it for deletion. If permanently_remove is true, this attribute is required. To confirm the modified full path, retrieve the group. |
| permanently_remove | boolean/string | Yes | If true, permanently deletes a subgroup that is already scheduled for deletion. Cannot delete top-level groups. |
성공하면 202 Accepted 상태 코드를 반환합니다.
삭제 예약된 그룹을 영구 삭제하려면:
-
API 호출로 그룹을 삭제 예약합니다.
-
두 번째 API 호출로 그룹을 삭제합니다.
예시:
# Schedule a group for deletion
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/groups/:id"
# Permanently delete a group scheduled for deletion
# Use the modified full_path of the subgroup
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '{"full_path": "<path-after-soft-delete>", "permanently_remove": "true"}' \
--url "https://gitlab.example.com/api/v4/groups/:id"
삭제 예약된 그룹 복원#
이전에 삭제 예약된 그룹을 복원합니다.
POST /groups/:id/restore
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group. |
그룹 보관#
History
-
Introduced in GitLab 18.0 with a feature flag named
archive_group. Disabled by default. -
Generally available in GitLab 18.9. Feature flag
archive_groupremoved.
그룹을 보관합니다.
사전 조건:
- 관리자이거나 그룹에서 Owner 역할이 있어야 합니다.
이 엔드포인트는 그룹이 이미 보관된 경우 422 unprocessable entity 오류를 반환합니다.
POST /groups/:id/archive
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group owned by the authenticated user. |
응답 예시:
{
"id": 96,
"web_url": "https://gitlab.example.com/groups/test-1",
"name": "test-1",
"path": "test-1",
"description": "",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "maintainer",
"emails_disabled": false,
"emails_enabled": true,
"mentions_disabled": null,
"lfs_enabled": true,
"archived": true,
"math_rendering_limits_enabled": true,
"lock_math_rendering_limits_enabled": false,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
],
"developer_can_initial_push": false
},
"avatar_url": null,
"request_access_enabled": true,
"full_name": "test-1",
"full_path": "test-1",
"created_at": "2025-03-25T12:05:24.813Z",
"parent_id": null,
"organization_id": 1,
"shared_runners_setting": "enabled",
"max_artifacts_size": null,
"ldap_cn": null,
"ldap_access": null,
"wiki_access_level": "enabled",
"shared_with_groups": [],
"prevent_sharing_groups_outside_hierarchy": false,
"shared_runners_minutes_limit": null,
"extra_shared_runners_minutes_limit": null,
"prevent_forking_outside_group": null,
"membership_lock": false
}
그룹 보관 해제#
History
-
Introduced in GitLab 18.0 with a feature flag named
archive_group. Disabled by default. -
Generally available in GitLab 18.9. Feature flag
archive_groupremoved.
그룹 보관을 해제합니다.
사전 조건:
- 관리자이거나 그룹에서 Owner 역할이 있어야 합니다.
이 엔드포인트는 그룹이 보관되지 않은 경우 422 unprocessable entity 오류를 반환합니다.
POST /groups/:id/unarchive
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the group owned by the authenticated user. |
응답 예시:
{
"id": 96,
"web_url": "https://gitlab.example.com/groups/test-1",
"name": "test-1",
"path": "test-1",
"description": "",
"visibility": "public",
"share_with_group_lock": false,
"require_two_factor_authentication": false,
"two_factor_grace_period": 48,
"project_creation_level": "developer",
"auto_devops_enabled": null,
"subgroup_creation_level": "maintainer",
"emails_disabled": false,
"emails_enabled": true,
"mentions_disabled": null,
"lfs_enabled": true,
"archived": false,
"math_rendering_limits_enabled": true,
"lock_math_rendering_limits_enabled": false,
"default_branch": null,
"default_branch_protection": 2,
"default_branch_protection_defaults": {
"allowed_to_push": [
{
"access_level": 40
}
],
"allow_force_push": false,
"allowed_to_merge": [
{
"access_level": 40
}
],
"developer_can_initial_push": false
},
"avatar_url": null,
"request_access_enabled": true,
"full_name": "test-1",
"full_path": "test-1",
"created_at": "2025-03-25T12:05:24.813Z",
"parent_id": null,
"organization_id": 1,
"shared_runners_setting": "enabled",
"max_artifacts_size": null,
"ldap_cn": null,
"ldap_access": null,
"wiki_access_level": "enabled",
"shared_with_groups": [],
"prevent_sharing_groups_outside_hierarchy": false,
"shared_runners_minutes_limit": null,
"extra_shared_runners_minutes_limit": null,
"prevent_forking_outside_group": null,
"membership_lock": false
}
그룹 이전#
그룹을 새 부모 그룹으로 이전하거나 서브그룹을 최상위 그룹으로 변환합니다.
사전 조건:
-
그룹에서 Owner 역할이 있어야 합니다.
-
그룹을 이전하는 경우, 새 부모 그룹에서 서브그룹을 생성할 권한이 있어야 합니다.
-
서브그룹을 변환하는 경우, 최상위 그룹을 생성할 권한이 있어야 합니다.
POST /groups/:id/transfer
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | ID of the group to transfer. |
| id | integer | yes | ID of the group to transfer. |
| group_id | integer | no | ID of the new parent group. If unspecified, the group is transformed into a top-level group. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/4/transfer?group_id=7"
그룹 이전 가능한 위치 목록 조회#
지정된 그룹을 이전할 수 있는 모든 부모 그룹을 나열합니다.
GET /groups/:id/transfer_locations
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | The ID or URL-encoded path of the group to transfer. |
| search | string | No | The name of a specific group to search for. |
요청 예시:
curl --request GET \
--url "https://gitlab.example.com/api/v4/groups/1/transfer_locations"
응답 예시:
[
{
"id": 27,
"web_url": "https://gitlab.example.com/groups/gitlab",
"name": "GitLab",
"avatar_url": null,
"full_name": "GitLab",
"full_path": "GitLab"
},
{
"id": 31,
"web_url": "https://gitlab.example.com/groups/foobar",
"name": "FooBar",
"avatar_url": null,
"full_name": "FooBar",
"full_path": "FooBar"
}
]
프로젝트를 그룹으로 이전#
Offering: GitLab Self-Managed, GitLab Dedicated
프로젝트를 다른 그룹 네임스페이스로 이전합니다. 또는 프로젝트를 새 네임스페이스로 이전 엔드포인트를 대신 사용할 수 있습니다.
프로젝트 리포지터리에 태그된 패키지가 있는 경우 이전 프로세스가 실패할 수 있습니다.
사전 조건:
- 인스턴스의 관리자여야 합니다.
POST /groups/:id/projects/:project_id
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the target group. |
| project_id | integer or string | yes | The ID or URL-encoded path of the project. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/4/projects/56"
그룹 초대#
이 엔드포인트는 그룹 초대에 사용됩니다. 자세한 내용은 그룹에 그룹 초대를 참조하세요.
그룹 초대 생성#
대상 그룹을 지정된 그룹에 추가하는 그룹 초대를 생성합니다.
POST /groups/:id/share
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the target group. |
| group_id | integer | yes | The ID of the group to invite. |
| group_access | integer | yes | The default access_level to assign to the invited group. Possible values: 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), or 50 (Owner). |
| expires_at | date (ISO 8601) | no | The date the group invitation expires. |
| member_role_id | integer | no | The ID of a custom role to assign to the invited group. If defined, group_access must match the base role used to create the custom role. |
성공 시 200과 그룹 세부 정보를 반환합니다.
그룹 초대 삭제#
그룹 초대를 삭제하고 지정된 그룹에서 대상 그룹의 접근 권한을 제거합니다.
DELETE /groups/:id/share/:group_id
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | The ID or URL-encoded path of the target group. |
| group_id | integer | yes | The ID of the group to disinvite. |
성공 시 204와 빈 콘텐츠를 반환합니다.
그룹 속성 업데이트#
History
-
Generally available in GitLab 18.0. Feature flag
limit_unique_project_downloads_per_namespace_userremoved. -
web_based_commit_signing_enabledintroduced in GitLab 18.2 with a feature flag nameduse_web_based_commit_signing_enabled. Disabled by default. -
web_based_commit_signing_enabledgenerally available in GitLab 18.10. Feature flaguse_web_based_commit_signing_enabledremoved. -
allow_personal_snippetsintroduced in GitLab 18.5 with a feature flag namedallow_personal_snippets_setting. Disabled by default. -
allow_personal_snippetsgenerally available in GitLab 18.9. Feature flagallow_personal_snippets_settingremoved. -
built_in_project_templates_enabledandlock_built_in_project_templates_enabledintroduced in GitLab 19.0 with a feature flag nameduse_built_in_project_templates_enabled. Disabled by default. -
built_in_project_templates_enabledandlock_built_in_project_templates_enabledgenerally available in GitLab 19.2. Feature flaguse_built_in_project_templates_enabledremoved.
지정된 그룹의 속성을 업데이트합니다.
사전 조건:
- 관리자이거나 그룹에서 Owner 역할이 있어야 합니다.
PUT /groups/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | The ID of the group. |
| name | string | no | The name of the group. |
| path | string | no | The path of the group. |
| auto_devops_enabled | boolean | no | Default to Auto DevOps pipeline for all projects within this group. |
| avatar | mixed | no | Image file for avatar of the group. |
| default_branch | string | no | The default branch name for group’s projects. Introduced in GitLab 16.11. |
| default_branch_protection | integer | no | Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead. |
| default_branch_protection_defaults | hash | no | Introduced in GitLab 17.0. For available options, see Options for default_branch_protection_defaults. |
| description | string | no | The description of the group. |
| enabled_git_access_protocol | string | no | Enabled protocols for Git access. Allowed values are: ssh, http, and all to allow both protocols. Introduced in GitLab 16.9. |
| emails_disabled | boolean | no | (Deprecated in GitLab 16.5.) Disable email notifications. Use emails_enabled instead. |
| emails_enabled | boolean | no | Enable email notifications. |
| lfs_enabled | boolean | no | Enable/disable Large File Storage (LFS) for the projects in this group. |
| mentions_disabled | boolean | no | Disable the capability of a group from getting mentioned. |
| prevent_sharing_groups_outside_hierarchy | boolean | no | See Prevent group sharing outside the group hierarchy. This attribute is only available on top-level groups. |
| project_creation_level | string | no | Determine if developers can create projects in the group. Can be noone (No one), maintainer (users with the Maintainer role), or developer (users with the Developer or Maintainer role). |
| request_access_enabled | boolean | no | Allow users to request member access. |
| require_two_factor_authentication | boolean | no | Require all users in this group to set up two-factor authentication. |
| shared_runners_setting | string | no | See Options for shared_runners_setting. Enable or disable instance runners for a group’s subgroups and projects. |
| share_with_group_lock | boolean | no | Prevent sharing a project with another group within this group. |
| step_up_auth_required_oauth_provider | string | no | OAuth provider required for step-up authentication. Pass empty string to disable. Introduced in GitLab 18.4. Available when omniauth_step_up_auth_for_namespace feature flag is enabled. |
| subgroup_creation_level | string | no | Allowed to create subgroups. Can be owner (users with the Owner role), or maintainer (users with the Maintainer role). |
| two_factor_grace_period | integer | no | Time before Two-factor authentication is enforced (in hours). |
| visibility | string | no | The visibility level of the group. Can be private, internal, or public. |
| extra_shared_runners_minutes_limit | integer | no | Can be set by administrators only. Additional compute minutes for this group. GitLab Self-Managed, Premium and Ultimate only. |
| file_template_project_id | integer | no | The ID of a project to load custom file templates from. Premium and Ultimate only. |
| membership_lock | boolean | no | Users cannot be added to projects in this group. Premium and Ultimate only. |
| prevent_forking_outside_group | boolean | no | When enabled, users can not fork projects from this group to external namespaces. Premium and Ultimate only. |
| shared_runners_minutes_limit | integer | no | Can be set by administrators only. Maximum number of monthly compute minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or > 0. GitLab Self-Managed, Premium and Ultimate only. |
| unique_project_download_limit | integer | no | Maximum number of unique projects a user can download in the specified time period before they are banned. Available only on top-level groups. Default: 0, Maximum: 10,000. Ultimate only. |
| unique_project_download_limit_interval_in_seconds | integer | no | Time period during which a user can download a maximum amount of projects before they are banned. Available only on top-level groups. Default: 0, Maximum: 864,000 seconds (10 days). Ultimate only. |
| unique_project_download_limit_allowlist | array of strings | no | List of usernames excluded from the unique project download limit. Available only on top-level groups. Default: [], Maximum: 100 usernames. Ultimate only. |
| unique_project_download_limit_alertlist | array of integers | no | List of user IDs that are emailed when the unique project download limit is exceeded. Available only on top-level groups. Default: [], Maximum: 100 user IDs. Ultimate only. |
| auto_ban_user_on_excessive_projects_download | boolean | no | When enabled, users are automatically banned from the group when they download more than the maximum number of unique projects specified by unique_project_download_limit and unique_project_download_limit_interval_in_seconds. Ultimate only. |
| ip_restriction_ranges | string | no | Comma-separated list of IP addresses or subnet masks to restrict group access. Premium and Ultimate only. |
| allowed_email_domains_list | string | no | Comma-separated list of email address domains to allow group access. Introduced in 17.4. GitLab Premium and Ultimate only. |
| wiki_access_level | string | no | The wiki access level. Can be disabled, private, or enabled. Premium and Ultimate only. |
| duo_availability | string | no | GitLab Duo availability setting. Valid values are: default_on, default_off, never_on. Note: In the UI, never_on is displayed as “Always Off”. |
| experiment_features_enabled | boolean | no | Enable experiment features for this group. |
| math_rendering_limits_enabled | boolean | no | Indicates if math rendering limits are used for this group. |
| lock_math_rendering_limits_enabled | boolean | no | Indicates if math rendering limits are locked for all descendent groups. |
| duo_features_enabled | boolean | no | Indicates whether GitLab Duo features are enabled for this group. Introduced in GitLab 16.10. GitLab Self-Managed, Premium and Ultimate only. |
| lock_duo_features_enabled | boolean | no | Indicates whether the GitLab Duo features enabled setting is enforced for all subgroups. Introduced in GitLab 16.10. GitLab Self-Managed, Premium and Ultimate only. |
| max_artifacts_size | integer | No | The maximum file size in megabytes for individual job artifacts. |
| web_based_commit_signing_enabled | boolean | No | Enables web-based commit signing for commits created from the GitLab UI. Available only for top-level groups on GitLab.com. When enabled for a group, applies to all projects in the group. |
| only_allow_merge_if_pipeline_succeeds | boolean | no | Only allow merging merge requests if the pipeline succeeds. When enabled for a group, applies to all projects in the group. Premium and Ultimate only. |
| allow_merge_on_skipped_pipeline | boolean | no | Allow merging merge requests when the pipeline is skipped. Only applies when only_allow_merge_if_pipeline_succeeds is true. Premium and Ultimate only. |
| only_allow_merge_if_all_discussions_are_resolved | boolean | no | Only allow merging merge requests when all discussions are resolved. When enabled for a group, applies to all projects in the group. Premium and Ultimate only. |
| allow_personal_snippets | boolean | no | Allow enterprise users in this group to create personal snippets. When disabled, enterprise users are restricted from creating snippets in their personal namespace. |
응답의 `projects`와 `shared_projects` 속성은 deprecated 처리되어 [API v5에서 제거될 예정](https://gitlab.com/gitlab-org/gitlab/-/issues/213797)입니다.
그룹 내 모든 프로젝트의 세부 정보를 가져오려면 그룹 프로젝트 목록 조회 또는 그룹 공유 프로젝트 목록 조회 엔드포인트를 사용하세요.
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5?name=Experimental"
이 엔드포인트는 최대 100개의 프로젝트와 공유 프로젝트를 반환합니다. 그룹 내 모든 프로젝트의 세부 정보를 가져오려면 그룹 프로젝트 목록 조회 엔드포인트를 대신 사용하세요.
응답 예시:
{
"id": 5,
"name": "Experimental",
"path": "h5bp",
"description": "foo",
"visibility": "internal",
"avatar_url": null,
"web_url": "http://gitlab.example.com/groups/h5bp",
"request_access_enabled": false,
"repository_storage": "default",
"full_name": "Foobar Group",
"full_path": "h5bp",
"file_template_project_id": 1,
"parent_id": null,
"enabled_git_access_protocol": "all",
"created_at": "2020-01-15T12:36:29.590Z",
"prevent_sharing_groups_outside_hierarchy": false,
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": false,
"only_allow_merge_if_all_discussions_are_resolved": false,
"allow_personal_snippets": true,
"projects": [ // Deprecated and will be removed in API v5
{
"id": 9,
"description": "foo",
"default_branch": "main",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"public": false,
"archived": false,
"visibility": "internal",
"ssh_url_to_repo": "git@gitlab.example.com/html5-boilerplate.git",
"http_url_to_repo": "http://gitlab.example.com/h5bp/html5-boilerplate.git",
"web_url": "http://gitlab.example.com/h5bp/html5-boilerplate",
"name": "Html5 Boilerplate",
"name_with_namespace": "Experimental / Html5 Boilerplate",
"path": "html5-boilerplate",
"path_with_namespace": "h5bp/html5-boilerplate",
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"created_at": "2016-04-05T21:40:50.169Z",
"last_activity_at": "2016-04-06T16:52:08.432Z",
"shared_runners_enabled": true,
"creator_id": 1,
"namespace": {
"id": 5,
"name": "Experimental",
"path": "h5bp",
"kind": "group"
},
"avatar_url": null,
"star_count": 1,
"forks_count": 0,
"open_issues_count": 3,
"public_jobs": true,
"shared_with_groups": [],
"request_access_enabled": false
}
],
"ip_restriction_ranges": null,
"math_rendering_limits_enabled": true,
"lock_math_rendering_limits_enabled": false
}
prevent_sharing_groups_outside_hierarchy 속성은 최상위 그룹에 대한 응답에서만 제공됩니다.
GitLab Premium 또는 Ultimate 사용자는 wiki_access_level, duo_features_enabled, lock_duo_features_enabled, duo_availability, experiment_features_enabled 속성도 확인할 수 있습니다.
shared_runners_setting 옵션#
shared_runners_setting 속성은 그룹의 서브그룹 및 프로젝트에 대해 인스턴스 러너가 활성화되는지 여부를 결정합니다.
| Value | Description |
|---|---|
| enabled | Enables instance runners for all projects and subgroups in this group. |
| disabled_and_overridable | Disables instance runners for all projects and subgroups in this group, but allows subgroups to override this setting. |
| disabled_and_unoverridable | Disables instance runners for all projects and subgroups in this group, and prevents subgroups from overriding this setting. |
| disabled_with_override | (Deprecated. Use disabled_and_overridable) Disables instance runners for all projects and subgroups in this group, but allows subgroups to override this setting. |
그룹 아바타 업데이트#
그룹 아바타를 업데이트합니다.
그룹 아바타 다운로드#
그룹 아바타를 가져옵니다. 그룹이 공개적으로 접근 가능한 경우, 이 엔드포인트는 인증 없이도 접근할 수 있습니다.
GET /groups/:id/avatar
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | yes | ID of the group. |
예시:
curl --header "PRIVATE-TOKEN: $GITLAB_LOCAL_TOKEN" \
--remote-header-name \
--remote-name \
--url "https://gitlab.example.com/api/v4/groups/4/avatar"
그룹 아바타 업로드#
파일 시스템에서 아바타 파일을 업로드하려면 --form 인수를 사용하세요. 이는 curl이 Content-Type: multipart/form-data 헤더를 사용하여 데이터를 POST하도록 합니다. file= 파라미터는 파일 시스템의 파일을 가리켜야 하며 @가 앞에 와야 합니다. 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--form "avatar=@/tmp/example.png" \
--url "https://gitlab.example.com/api/v4/groups/22"
그룹 아바타 제거#
그룹 아바타를 제거하려면 avatar 속성에 빈 값을 사용하세요.
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data "avatar=" \
--url "https://gitlab.example.com/api/v4/groups/22"
그룹과 LDAP 동기화#
Offering: GitLab Self-Managed
지정된 그룹을 연결된 LDAP 그룹과 동기화합니다.
사전 조건:
- 관리자이거나 그룹에서 Owner 역할이 있어야 합니다.
POST /groups/:id/ldap_sync
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | The ID or URL-encoded path of a group. |
자격증명 인벤토리 관리#
Offering: GitLab.com
History
-
Introduced in GitLab 18.6 with a feature flag named
manage_pat_by_group_owners_ready. Disabled by default. -
Generally available in GitLab 18.7. Feature flag
manage_pat_by_group_owners_readyremoved.
GitLab.com의 엔터프라이즈 사용자 자격증명을 조회, 취소 및 교체합니다.
사전 조건:
- 그룹에서 Owner 역할이 있어야 합니다.
그룹의 전체 개인 액세스 토큰 목록 조회#
최상위 그룹의 엔터프라이즈 사용자와 연결된 모든 개인 액세스 토큰을 나열합니다.
GET /groups/:id/manage/personal_access_tokens
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | The ID or URL-encoded path of a group. |
| created_after | datetime (ISO 8601) | No | If defined, returns tokens created after the specified time. |
| created_before | datetime (ISO 8601) | No | If defined, returns tokens created before the specified time. |
| last_used_after | datetime (ISO 8601) | No | If defined, returns tokens last used after the specified time. |
| last_used_before | datetime (ISO 8601) | No | If defined, returns tokens last used before the specified time. |
| revoked | boolean | No | If true, only returns revoked tokens. |
| search | string | No | If defined, returns tokens that include the specified value in the name. |
| state | string | No | If defined, returns tokens with the specified state. Possible values: active and inactive. |
| sort | string | No | If defined, sorts the results by the specified value. Possible values: created_asc, created_desc, expires_asc, expires_desc, last_used_asc, last_used_desc, name_asc, name_desc. |
요청 예시:
curl --header "PRIVATE-TOKEN: <group_owner_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/manage/personal_access_tokens"
응답 예시:
[
{
"id": 1,
"name": "Test Token",
"revoked": false,
"created_at": "2020-07-23T14:31:47.729Z",
"description": "Test Token description",
"scopes": [
"api"
],
"user_id": 3,
"last_used_at": "2021-10-06T17:58:37.550Z",
"active": true,
"expires_at": "2025-11-08"
}
]
그룹의 전체 그룹 및 프로젝트 액세스 토큰 목록 조회#
최상위 그룹과 연결된 모든 그룹 및 프로젝트 액세스 토큰을 나열합니다.
GET /groups/:id/manage/resource_access_tokens
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | The ID or URL-encoded path of a group. |
| created_after | datetime (ISO 8601) | No | If defined, returns tokens created after the specified time. |
| created_before | datetime (ISO 8601) | No | If defined, returns tokens created before the specified time. |
| last_used_after | datetime (ISO 8601) | No | If defined, returns tokens last used after the specified time. |
| last_used_before | datetime (ISO 8601) | No | If defined, returns tokens last used before the specified time. |
| revoked | boolean | No | If true, only returns revoked tokens. |
| search | string | No | If defined, returns tokens that include the specified value in the name. |
| state | string | No | If defined, returns tokens with the specified state. Possible values: active and inactive. |
| sort | string | No | If defined, sorts the results by the specified value. Possible values: created_asc, created_desc, expires_asc, expires_desc, last_used_asc, last_used_desc, name_asc, name_desc. |
요청 예시:
curl --header "PRIVATE-TOKEN: <group_owner_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/manage/resource_access_tokens"
응답 예시:
[
{
"id": 12767703,
"name": "Test Group Token",
"revoked": false,
"created_at": "2025-01-07T00:25:02.128Z",
"description": "",
"scopes": [
"read_registry"
],
"user_id": 25365147,
"last_used_at": null,
"active": true,
"expires_at": "2025-06-19",
"access_level": 10,
"resource_type": "group",
"resource_id": 77449520
}
]
그룹의 전체 SSH 키 목록 조회#
최상위 그룹의 엔터프라이즈 사용자와 연결된 모든 SSH 공개 키를 나열합니다.
GET /groups/:id/manage/ssh_keys
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | The ID or URL-encoded path of a group. |
| created_after | datetime (ISO 8601) | No | If defined, returns SSH keys created after the specified time. |
| created_before | datetime (ISO 8601) | No | If defined, returns SSH keys created before the specified time. |
| expires_before | datetime (ISO 8601) | No | If defined, returns SSH keys that expire before the specified time. |
| expires_after | datetime (ISO 8601) | No | If defined, returns SSH keys that expire after the specified time. |
curl --header "PRIVATE-TOKEN: <group_owner_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/manage/ssh_keys"
응답 예시:
[
{
"id":3,
"title":"Sample key 3",
"created_at":"2024-12-23T05:40:11.891Z",
"expires_at":null,
"last_used_at":"2024-12-23T05:40:11.891Z",
"usage_type":"auth_and_signing",
"user_id":3
}
]
엔터프라이즈 사용자의 개인 액세스 토큰 취소#
엔터프라이즈 사용자의 지정된 개인 액세스 토큰을 취소합니다.
DELETE groups/:id/manage/personal_access_tokens/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | ID of a personal access token or the keyword self. |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/manage/personal_access_tokens/<personal_access_token_id>"
성공하면 204: No Content를 반환합니다.
다른 가능한 응답:
-
400: Bad Request— 취소에 실패한 경우. -
401: Unauthorized— 액세스 토큰이 유효하지 않은 경우. -
403: Forbidden— 액세스 토큰에 필요한 권한이 없는 경우.
엔터프라이즈 사용자의 그룹 또는 프로젝트 액세스 토큰 취소#
최상위 그룹과 연결된 엔터프라이즈 사용자의 지정된 그룹 또는 프로젝트 액세스 토큰을 취소합니다.
DELETE groups/:id/manage/resource_access_tokens/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | ID of a resource access token or the keyword self. |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/manage/resource_access_tokens/<personal_access_token_id>"
성공하면 204: No Content를 반환합니다.
다른 가능한 응답:
-
400: Bad Request— 취소에 실패한 경우. -
401: Unauthorized— 액세스 토큰이 유효하지 않은 경우. -
403: Forbidden— 액세스 토큰에 필요한 권한이 없는 경우.
엔터프라이즈 사용자의 SSH 키 삭제#
최상위 그룹과 연결된 엔터프라이즈 사용자의 지정된 SSH 공개 키를 삭제합니다.
DELETE /groups/:id/manage/ssh_keys/:key_id
지원 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
| key_id | integer | Yes | ID of existing key. |
성공하면 204: No Content를 반환합니다.
다른 가능한 응답:
-
400: Bad Request— SSH 키 삭제에 실패한 경우. -
401: Unauthorized— SSH 키가 유효하지 않은 경우. -
403: Forbidden— 사용자에게 필요한 권한이 없는 경우.
엔터프라이즈 사용자의 개인 액세스 토큰 교체#
최상위 그룹과 연결된 엔터프라이즈 사용자의 지정된 개인 액세스 토큰을 교체합니다. 이전 토큰을 취소하고 일주일 후 만료되는 새 토큰을 생성합니다.
POST groups/:id/manage/personal_access_tokens/:id/rotate
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | ID of a personal access token or the keyword self. |
| expires_at | date | No | Expiration date of the access token in ISO format (YYYY-MM-DD). The date must be one year or less from the rotation date. If undefined, the token expires after one week. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/manage/personal_access_tokens/<personal_access_token_id>/rotate"
응답 예시:
{
"id": 42,
"name": "Rotated Token",
"revoked": false,
"created_at": "2023-08-01T15:00:00.000Z",
"description": "Test Token description",
"scopes": ["api"],
"user_id": 1337,
"last_used_at": null,
"active": true,
"expires_at": "2023-08-15",
"token": "s3cr3t"
}
성공하면 200: OK를 반환합니다.
다른 가능한 응답:
-
400: Bad Request— 교체에 실패한 경우. -
401: Unauthorized— 다음 조건 중 하나에 해당하는 경우:
토큰이 존재하지 않습니다.
-
토큰이 만료되었습니다.
-
토큰이 취소되었습니다.
-
지정된 토큰에 접근 권한이 없습니다.
-
403: Forbidden— 토큰이 스스로 교체할 수 없는 경우. -
404: Not Found— 사용자에게 Owner 역할이 있지만 토큰이 존재하지 않는 경우. -
405: Method Not Allowed— 토큰이 개인 액세스 토큰이 아닌 경우.
엔터프라이즈 사용자의 그룹 또는 프로젝트 액세스 토큰 교체#
최상위 그룹과 연결된 엔터프라이즈 사용자의 지정된 그룹 또는 프로젝트 액세스 토큰을 교체합니다. 이전 토큰을 취소하고 일주일 후 만료되는 새 토큰을 생성합니다.
POST groups/:id/manage/resource_access_tokens/:id/rotate
| Attribute | Type | Required | Description |
|---|---|---|---|
| id | integer or string | Yes | ID of a personal access token or the keyword self. |
| expires_at | date | No | Expiration date of the access token in ISO format (YYYY-MM-DD). The date must be one year or less from the rotation date. If undefined, the token expires after one week. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/manage/resource_access_tokens/<resource_access_token_id>/rotate"
응답 예시:
{
"id": 42,
"name": "Rotated Token",
"revoked": false,
"created_at": "2023-08-01T15:00:00.000Z",
"description": "Test Token description",
"scopes": ["api"],
"user_id": 1337,
"last_used_at": null,
"active": true,
"expires_at": "2023-08-15",
"token": "s3cr3t"
}
성공하면 200: OK를 반환합니다.
다른 가능한 응답:
-
400: Bad Request— 교체에 실패한 경우. -
401: Unauthorized— 다음 조건 중 하나에 해당하는 경우:
토큰이 존재하지 않습니다.
-
토큰이 만료되었습니다.
-
토큰이 취소되었습니다.
-
지정된 토큰에 접근 권한이 없습니다.
-
403: Forbidden— 토큰이 스스로 교체할 수 없거나 봇 사용자 토큰이 아닌 경우. -
404: Not Found— 사용자에게 Owner 역할이 있지만 토큰이 존재하지 않는 경우.