그룹 API
GitLab v19.5Offering: GitLab.com
요약
이 API로 GitLab 그룹을 조회하고 관리합니다. 엔드포인트 응답은 그룹에서 인증된 사용자의 권한에 따라 달라질 수 있습니다. 그룹의 세부 정보를 조회합니다. 응답의 projects 및 shared_projects 속성은 deprecated 처리되었으며 API v5에서 제거될 예정입니다.
이 API로 GitLab 그룹을 조회하고 관리합니다. 자세한 내용은 그룹을 참고합니다.
엔드포인트 응답은 그룹에서 인증된 사용자의 권한에 따라 달라질 수 있습니다.
그룹 조회#
그룹의 세부 정보를 조회합니다. 그룹이 공개적으로 접근 가능하면 이 엔드포인트는 인증 없이도
접근할 수 있습니다. 요청한 사용자가 관리자이면 추가 정보가 반환됩니다. 인증한 경우,
사용자가 관리자이거나 Owner 권한을 가지고 있으면 해당 그룹의 runners_token과
enabled_git_access_protocol도 반환합니다.
GET /groups/:id
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
with_projects |
boolean | no | 지정한 그룹에 속한 프로젝트의 세부 정보를 포함합니다(기본값 true). (Deprecated 처리되었으며 API v5에서 제거될 예정입니다. 그룹 내 모든 프로젝트의 세부 정보를 가져오려면 그룹 프로젝트 목록 조회 엔드포인트를 사용합니다.) |
응답의 projects 및 shared_projects 속성은 deprecated 처리되었으며 API v5에서 제거될 예정입니다.
그룹 내 모든 프로젝트의 세부 정보를 가져오려면 그룹 프로젝트 목록 조회 또는 그룹 공유 프로젝트 목록 조회 엔드포인트를 사용합니다.
curl --request GET \
--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,
"require_sha_for_merge": false,
"lock_require_sha_for_merge": false
}
prevent_sharing_groups_outside_hierarchy 속성은 최상위 그룹에만 존재합니다.
GitLab Premium 또는 Ultimate 사용자에게는 다음 속성도 표시됩니다.
shared_runners_minutes_limitextra_shared_runners_minutes_limitmarked_for_deletion_onmembership_lockwiki_access_levelduo_features_enabledlock_duo_features_enabledduo_availabilityexperiment_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",
"web_search_enabled": false,
"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 중 하나. |
web_search_enabled |
boolean | true 인 경우 이 그룹의 GitLab Duo Chat에서 웹 검색이 활성화됩니다. |
with_projects=false 파라미터를 추가하면 프로젝트가 반환되지 않습니다.
curl --request GET \
--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 | 전달한 그룹 ID를 건너뜁니다. |
all_available |
boolean | no | true 인 경우 접근 가능한 모든 그룹을 반환합니다. false 인 경우 사용자가 멤버인 그룹만 반환합니다. 기본값은 일반 사용자의 경우 false, 관리자의 경우 true 입니다. 인증되지 않은 요청은 항상 모든 공개 그룹을 반환합니다. owned 및 min_access_level 속성이 우선합니다. |
search |
string | no | 검색 조건과 일치하는 인가된 그룹 목록을 반환합니다. |
order_by |
string | no | 그룹을 name, path, id, similarity 기준으로 정렬합니다. 기본값은 name 입니다. |
sort |
string | no | 그룹을 asc 또는 desc 순으로 정렬합니다. 기본값은 asc 입니다. |
statistics |
boolean | no | 그룹 통계를 포함합니다(관리자 전용). 최상위 그룹의 경우 응답은 UI에 표시되는 전체 root_storage_statistics 데이터를 반환합니다. GitLab 17.4에서 도입되었습니다. |
visibility |
string | no | 가시성이 public, internal, private 인 그룹으로 제한합니다. |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
owned |
boolean | no | 현재 사용자가 명시적으로 소유한 그룹으로 제한합니다. |
min_access_level |
integer | no | 현재 사용자가 지정한 액세스 수준 이상을 가진 그룹으로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
top_level_only |
boolean | no | 모든 하위 그룹을 제외하고 최상위 그룹으로 제한합니다. |
repository_storage |
string | no | 그룹이 사용하는 리포지터리 스토리지로 필터링합니다(관리자 전용). Premium 및 Ultimate 전용. |
marked_for_deletion_on |
date | no | 그룹이 삭제 대상으로 표시된 날짜로 필터링합니다. GitLab 17.1에서 도입되었습니다. Premium 및 Ultimate 전용. |
active |
boolean | no | 보관되지 않았고 삭제 대상으로 표시되지 않은 그룹으로 제한합니다. |
archived |
boolean | no | 보관된 그룹으로 제한합니다. 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 | 그룹의 ID 또는 URL 인코딩된 경로. |
active |
boolean | no | 프로젝트 상태로 제한합니다. true 인 경우 활성 프로젝트를 반환합니다. false 인 경우 보관되었거나 삭제 대상으로 표시된 프로젝트를 반환합니다. GitLab 18.8에서 도입되었습니다. |
archived |
boolean | no | 보관 상태로 제한합니다. |
visibility |
string | no | 가시성 public, internal, private로 제한합니다. |
order_by |
string | no | id, name, path, created_at, updated_at, similarity1, star_count, last_activity_at 필드 기준으로 정렬한 프로젝트를 반환합니다. 기본값은 created_at 입니다. |
sort |
string | no | 프로젝트를 asc 또는 desc 순으로 정렬해 반환합니다. 기본값은 desc 입니다. |
search |
string | no | 검색 조건과 일치하는 인가된 프로젝트 목록을 반환합니다. |
simple |
boolean | no | 각 프로젝트의 제한된 필드만 반환합니다. 인증 없이 요청하면 단순 필드만 반환되므로 이 옵션은 동작하지 않습니다. |
owned |
boolean | no | 현재 사용자가 소유한 프로젝트로 제한합니다. |
starred |
boolean | no | 현재 사용자가 별표 표시한 프로젝트로 제한합니다. |
topic |
string | no | 해당 토픽과 일치하는 프로젝트를 반환합니다. |
with_issues_enabled |
boolean | no | 이슈 기능이 활성화된 프로젝트로 제한합니다. 기본값은 false 입니다. |
with_merge_requests_enabled |
boolean | no | 머지 리퀘스트 기능이 활성화된 프로젝트로 제한합니다. 기본값은 false 입니다. |
with_shared |
boolean | no | 이 그룹에 공유된 프로젝트를 포함합니다. 기본값은 true 입니다. |
include_subgroups |
boolean | no | 이 그룹의 하위 그룹에 있는 프로젝트를 포함합니다. 기본값은 false 입니다. |
min_access_level |
integer | no | 현재 사용자가 지정한 액세스 수준 이상을 가진 프로젝트로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
with_security_reports |
boolean | no | 빌드 중 하나라도 보안 리포트 아티팩트가 있는 프로젝트만 반환합니다. 즉 "보안 리포트가 활성화된 프로젝트"를 의미합니다. 기본값은 false 입니다. Ultimate 전용. |
응답 예시:
[
{
"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 | 그룹의 ID 또는 URL 인코딩된 경로. |
archived |
boolean | no | 보관 상태로 제한합니다. |
visibility |
string | no | 가시성 public, internal, private로 제한합니다. |
order_by |
string | no | id, name, path, created_at, updated_at, star_count, last_activity_at 필드 기준으로 정렬한 프로젝트를 반환합니다. 기본값은 created_at 입니다. |
sort |
string | no | 프로젝트를 asc 또는 desc 순으로 정렬해 반환합니다. 기본값은 desc 입니다. |
search |
string | no | 검색 조건과 일치하는 인가된 프로젝트 목록을 반환합니다. |
simple |
boolean | no | 각 프로젝트의 제한된 필드만 반환합니다. 인증 없이 요청하면 단순 필드만 반환되므로 이 옵션은 동작하지 않습니다. |
starred |
boolean | no | 현재 사용자가 별표 표시한 프로젝트로 제한합니다. |
with_issues_enabled |
boolean | no | 이슈 기능이 활성화된 프로젝트로 제한합니다. 기본값은 false 입니다. |
with_merge_requests_enabled |
boolean | no | 머지 리퀘스트 기능이 활성화된 프로젝트로 제한합니다. 기본값은 false 입니다. |
min_access_level |
integer | no | 현재 사용자가 지정한 액세스 수준 이상을 가진 프로젝트로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
응답 예시:
[
{
"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
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
project_id |
integer | yes | 프로젝트의 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 사용자 목록 조회#
히스토리
- GitLab 18.1에서 도입되었습니다.
지정한 최상위 그룹의 모든 SAML 사용자를 조회합니다.
page 및 per_page 페이지네이션 파라미터로 결과를 필터링합니다.
GET /groups/:id/saml_users
지원 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 최상위 그룹의 ID 또는 URL 인코딩된 경로. |
username |
string | no | 지정한 사용자 이름을 가진 사용자를 반환합니다. |
search |
string | no | 이름, 이메일, 사용자 이름이 일치하는 사용자를 반환합니다. 일부 값만 입력하면 결과 범위를 넓힐 수 있습니다. |
active |
boolean | no | 활성 사용자만 반환합니다. |
blocked |
boolean | no | 차단된 사용자만 반환합니다. |
created_after |
datetime | no | 지정한 시각 이후에 생성된 사용자를 반환합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ). |
created_before |
datetime | no | 지정한 시각 이전에 생성된 사용자를 반환합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ). |
요청 예시:
curl --request GET \
--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
}
]
},
...
]
프로비저닝된 사용자 목록 조회#
그룹이 프로비저닝한 사용자를 조회합니다. 하위 그룹은 포함하지 않습니다.
그룹에서 Maintainer 또는 Owner 권한이 필요합니다.
GET /groups/:id/provisioned_users
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
username |
string | no | 특정 사용자 이름을 가진 사용자 한 명을 반환합니다. |
search |
string | no | 이름, 이메일, 사용자 이름으로 사용자를 검색합니다. |
active |
boolean | no | 활성 사용자만 반환합니다. |
blocked |
boolean | no | 차단된 사용자만 반환합니다. |
created_after |
datetime | no | 지정한 시각 이후에 생성된 사용자를 반환합니다. |
created_before |
datetime | no | 지정한 시각 이전에 생성된 사용자를 반환합니다. |
응답 예시:
[
{
"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 | 바로 위 상위 그룹의 ID 또는 URL 인코딩된 경로. |
skip_groups |
array of integers | no | 전달한 그룹 ID를 건너뜁니다. |
all_available |
boolean | no | 접근 권한이 있는 모든 그룹을 표시합니다(인증된 사용자는 기본값 false, 관리자는 true). owned 및 min_access_level 속성이 우선합니다. |
search |
string | no | 검색 조건과 일치하는 인가된 그룹 목록을 반환합니다. 하위 그룹의 짧은 경로만 검색하며 전체 경로는 검색하지 않습니다. |
order_by |
string | no | 그룹을 name, path, id 기준으로 정렬합니다. 기본값은 name 입니다. |
sort |
string | no | 그룹을 asc 또는 desc 순으로 정렬합니다. 기본값은 asc 입니다. |
statistics |
boolean | no | 그룹 통계를 포함합니다(관리자 전용). |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
owned |
boolean | no | 현재 사용자가 명시적으로 소유한 그룹으로 제한합니다. |
min_access_level |
integer | no | 현재 사용자가 지정한 액세스 수준 이상을 가진 그룹으로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
all_available |
boolean | no | true 인 경우 접근 가능한 모든 그룹을 반환합니다. false 인 경우 사용자가 멤버인 그룹만 반환합니다. 기본값은 일반 사용자의 경우 false, 관리자의 경우 true 입니다. 인증되지 않은 요청은 항상 모든 공개 그룹을 반환합니다. owned 및 min_access_level 속성이 우선합니다. |
active |
boolean | no | 보관되지 않았고 삭제 대상으로 표시되지 않은 그룹으로 제한합니다. |
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 | 바로 위 상위 그룹의 ID 또는 URL 인코딩된 경로. |
skip_groups |
array of integers | no | 전달한 그룹 ID를 건너뜁니다. |
all_available |
boolean | no | true 인 경우 접근 가능한 모든 그룹을 반환합니다. false 인 경우 사용자가 멤버인 그룹만 반환합니다. 기본값은 일반 사용자의 경우 false, 관리자의 경우 true 입니다. 인증되지 않은 요청은 항상 모든 공개 그룹을 반환합니다. owned 및 min_access_level 속성이 우선합니다. |
search |
string | no | 검색 조건과 일치하는 인가된 그룹 목록을 반환합니다. 하위 그룹의 짧은 경로만 검색하며 전체 경로는 검색하지 않습니다. |
order_by |
string | no | 그룹을 name, path, id 기준으로 정렬합니다. 기본값은 name 입니다. |
sort |
string | no | 그룹을 asc 또는 desc 순으로 정렬합니다. 기본값은 asc 입니다. |
statistics |
boolean | no | 그룹 통계를 포함합니다(관리자 전용). |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
owned |
boolean | no | 현재 사용자가 명시적으로 소유한 그룹으로 제한합니다. |
min_access_level |
integer | no | 현재 사용자가 지정한 액세스 수준 이상을 가진 그룹으로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
active |
boolean | no | 보관되지 않았고 삭제 대상으로 표시되지 않은 그룹으로 제한합니다. |
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 | 그룹의 ID 또는 URL 인코딩된 경로. |
skip_groups |
array of integers | no | 지정한 그룹 ID를 건너뜁니다. |
search |
string | no | 검색 조건과 일치하는 인가된 그룹 목록을 반환합니다. |
order_by |
string | no | 그룹을 name, path, id, similarity 기준으로 정렬합니다. 기본값은 name 입니다. |
sort |
string | no | 그룹을 asc 또는 desc 순으로 정렬합니다. 기본값은 asc 입니다. |
visibility |
string | no | 가시성이 public, internal, private 인 그룹으로 제한합니다. |
min_access_level |
integer | no | 현재 사용자가 지정한 액세스 수준 이상을 가진 그룹으로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
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 | 그룹의 ID 또는 URL 인코딩된 경로. |
search |
string | no | 검색 조건과 일치하는 인가된 그룹 목록을 반환합니다. |
min_access_level |
integer | no | 현재 사용자가 지정한 액세스 수준 이상을 가진 그룹으로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
relation |
array of strings | no | 관계(직접 또는 상속)로 그룹을 필터링합니다. |
with_custom_attributes |
boolean | no | 응답에 사용자 지정 속성을 포함합니다(관리자 전용). |
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"
}
]
감사 이벤트 목록 조회#
그룹 감사 이벤트는 그룹 감사 이벤트 API로 조회할 수 있습니다.
그룹 관리#
그룹 생성#
GitLab.com에서는 상위 그룹이 없는 그룹을 만들 때 GitLab UI를 사용해야 합니다. 이 작업에는 API를 사용할 수 없습니다.
새 프로젝트 그룹을 생성합니다. 그룹을 생성할 수 있는 사용자만 사용할 수 있습니다.
POST /groups
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
name |
string | yes | 그룹의 이름. |
path |
string | yes | 그룹의 경로. |
auto_devops_enabled |
boolean | no | 이 그룹 내 모든 프로젝트에 Auto DevOps 파이프라인을 기본값으로 적용합니다. |
avatar |
mixed | no | 그룹 아바타로 사용할 이미지 파일. |
default_branch |
string | no | 그룹 내 프로젝트의 기본 브랜치 이름. |
default_branch_protection |
integer | no | GitLab 17.0에서 deprecated 처리되었습니다. 대신 default_branch_protection_defaults를 사용합니다. |
default_branch_protection_defaults |
hash | no | GitLab 17.0에서 도입되었습니다. 사용 가능한 옵션은 default_branch_protection_defaults 옵션을 참고합니다. |
description |
string | no | 그룹의 설명. |
enabled_git_access_protocol |
string | no | Git 액세스에 활성화할 프로토콜. 허용되는 값은 ssh, http, 두 프로토콜을 모두 허용하는 all 입니다. |
emails_disabled |
boolean | no | (GitLab 16.5에서 deprecated 처리되었습니다.) 이메일 알림을 비활성화합니다. 대신 emails_enabled를 사용합니다. |
emails_enabled |
boolean | no | 이메일 알림을 활성화합니다. |
lfs_enabled |
boolean | no | 이 그룹 내 프로젝트의 Large File Storage(LFS)를 활성화하거나 비활성화합니다. |
mentions_disabled |
boolean | no | 그룹이 멘션되는 기능을 비활성화합니다. |
organization_id |
integer | no | 그룹의 조직 ID. |
parent_id |
integer | no | 중첩 그룹을 생성할 때 사용할 상위 그룹 ID. |
project_creation_level |
string | no | Developer가 그룹에서 프로젝트를 생성할 수 있는지 결정합니다. administrator(관리자 모드가 활성화된 사용자), noone(아무도 불가), maintainer(Maintainer 권한을 가진 사용자), developer(Developer 또는 Maintainer 권한을 가진 사용자) 중 하나입니다. |
request_access_enabled |
boolean | no | 사용자가 멤버 액세스를 요청할 수 있도록 허용합니다. |
require_two_factor_authentication |
boolean | no | 이 그룹의 모든 사용자에게 2단계 인증 설정을 요구합니다. |
share_with_group_lock |
boolean | no | 이 그룹 내 프로젝트를 다른 그룹과 공유하지 못하도록 막습니다. |
subgroup_creation_level |
string | no | 하위 그룹 생성을 허용합니다. owner(Owner 권한을 가진 사용자) 또는 maintainer(Maintainer 권한을 가진 사용자) 중 하나입니다. |
two_factor_grace_period |
integer | no | 2단계 인증이 강제되기까지의 시간(시간 단위). |
visibility |
string | no | 그룹의 가시성. private, internal, public 중 하나입니다. |
membership_lock |
boolean | no | 이 그룹 내 프로젝트에 사용자를 추가할 수 없습니다. Premium 및 Ultimate 전용. |
extra_shared_runners_minutes_limit |
integer | no | 관리자만 설정할 수 있습니다. 이 그룹의 추가 컴퓨팅 분. GitLab Self-Managed, Premium 및 Ultimate 전용. |
shared_runners_minutes_limit |
integer | no | 관리자만 설정할 수 있습니다. 이 그룹의 월별 최대 컴퓨팅 분. nil(기본값, 시스템 기본값 상속), 0(무제한), > 0 중 하나입니다. GitLab Self-Managed, Premium 및 Ultimate 전용. |
wiki_access_level |
string | no | 위키 액세스 수준. disabled, private, enabled 중 하나입니다. Premium 및 Ultimate 전용. |
duo_availability |
string | no | GitLab Duo 사용 가능 여부 설정. 유효한 값은 default_on, default_off, never_on 입니다. 참고: UI에서 never_on은 "Always Off" 로 표시됩니다. |
experiment_features_enabled |
boolean | no | 이 그룹의 실험 기능을 활성화합니다. |
ai_settings_attributes |
hash | no | 이 그룹의 AI 관련 설정. 사용 가능한 옵션은 ai_settings_attributes 옵션을 참고합니다. GitLab Duo 기능이 활성화되어 있어야 합니다. |
default_branch_protection 옵션#
default_branch_protection 속성은 다음 표와 같이 Developer 또는 Maintainer 권한을 가진 사용자가 해당 기본 브랜치에 푸시할 수 있는지를 결정합니다.
| Value | Description |
|---|---|
0 |
보호 없음. Developer 또는 Maintainer 권한을 가진 사용자가 다음을 수행할 수 있습니다. - 새 커밋 푸시. - 변경 사항 강제 푸시. - 브랜치 삭제. |
1 |
부분 보호. Developer 또는 Maintainer 권한을 가진 사용자가 다음을 수행할 수 있습니다. - 새 커밋 푸시. |
2 |
전체 보호. Maintainer 권한을 가진 사용자만 다음을 수행할 수 있습니다. - 새 커밋 푸시. |
3 |
푸시 보호. Maintainer 권한을 가진 사용자가 다음을 수행할 수 있습니다. - 새 커밋 푸시. - 변경 사항 강제 푸시. - 머지 리퀘스트 수락. Developer 권한을 가진 사용자가 다음을 수행할 수 있습니다. - 머지 리퀘스트 수락. |
4 |
최초 푸시 이후 전체 보호. Developer 권한을 가진 사용자가 다음을 수행할 수 있습니다. - 빈 리포지터리에 커밋 푸시. Maintainer 권한을 가진 사용자가 다음을 수행할 수 있습니다. - 새 커밋 푸시. - 머지 리퀘스트 수락. |
default_branch_protection_defaults 옵션#
히스토리
- GitLab 17.0에서 도입되었습니다.
default_branch_protection_defaults 속성은 기본 브랜치 보호의 기본값을 설명합니다.
모든 파라미터는 선택 사항입니다.
| Key | Type | Description |
|---|---|---|
allowed_to_push |
array | 푸시가 허용된 액세스 수준의 배열. Developer(30) 또는 Maintainer(40)를 지원합니다. |
allow_force_push |
boolean | 푸시 권한이 있는 모든 사용자에게 강제 푸시를 허용합니다. |
allowed_to_merge |
array | 머지가 허용된 액세스 수준의 배열. Developer(30) 또는 Maintainer(40)를 지원합니다. |
developer_can_initial_push |
boolean | Developer에게 최초 푸시를 허용합니다. |
code_owner_approval_required |
boolean | Code Owner 승인을 요구합니다. |
하위 그룹 생성#
새 그룹 생성과 비슷합니다. 그룹 목록 조회 호출에서 얻은 parent_id가 필요합니다. 그다음 원하는 값을 입력합니다.
subgroup_pathsubgroup_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/"
그룹 삭제 예약#
히스토리
- GitLab 18.0에서 GitLab Premium에서 GitLab Free로 이동되었습니다.
그룹을 삭제 예약합니다. 그룹은 보존 기간이 끝날 때 삭제됩니다.
- GitLab.com에서는 그룹이 30일간 보존됩니다.
- GitLab Self-Managed에서는 보존 기간이 인스턴스 설정으로 제어됩니다.
이 엔드포인트는 이전에 삭제 예약된 하위 그룹을 즉시 삭제할 수도 있습니다.
사전 요구 사항:
- 관리자이거나 그룹에서 Owner 권한이 있어야 합니다.
DELETE /groups/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 그룹의 ID 또는 URL 인코딩된 경로. |
full_path |
string | Conditional | 하위 그룹의 전체 경로. 하위 그룹 삭제를 확인하는 데 사용합니다. permanently_remove가 true 이면 이 속성은 필수입니다. 하위 그룹 경로는 그룹 세부 정보에서 확인합니다. |
permanently_remove |
boolean/string | No | true 이면 이미 삭제 예약된 하위 그룹을 즉시 삭제합니다. 최상위 그룹은 삭제할 수 없습니다. |
성공하면 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 그룹은 삭제할 수 없습니다. 먼저 구독을 다른 그룹과 연결해야 합니다.
그룹 영구 삭제#
설정된 보존 기간을 건너뛰고 그룹과 해당 데이터를 영구적으로 삭제합니다.
사전 요구 사항:
- 관리자이거나 그룹에서 Owner 권한이 있어야 합니다.
DELETE /groups/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 그룹의 ID 또는 URL 인코딩된 경로. |
full_path |
string | Yes | 삭제 예약 후 변경된 하위 그룹의 전체 경로. permanently_remove가 true 이면 이 속성은 필수입니다. 변경된 전체 경로는 그룹 조회로 확인합니다. |
permanently_remove |
boolean/string | Yes | true 이면 이미 삭제 예약된 하위 그룹을 영구적으로 삭제합니다. 최상위 그룹은 삭제할 수 없습니다. |
성공하면 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 | 그룹의 ID 또는 URL 인코딩된 경로. |
그룹 보관#
히스토리
그룹을 보관합니다.
사전 요구 사항:
- 관리자이거나 그룹에서 Owner 권한이 있어야 합니다.
그룹이 이미 보관된 상태이면 이 엔드포인트는 422 처리 불가 엔티티 오류를 반환합니다.
POST /groups/:id/archive
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 인증된 사용자가 소유한 그룹의 ID 또는 URL 인코딩된 경로. |
응답 예시:
{
"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,
"require_sha_for_merge": false,
"lock_require_sha_for_merge": 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 권한이 있어야 합니다.
그룹이 보관된 상태가 아니면 이 엔드포인트는 422 처리 불가 엔티티 오류를 반환합니다.
POST /groups/:id/unarchive
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 인증된 사용자가 소유한 그룹의 ID 또는 URL 인코딩된 경로. |
응답 예시:
{
"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,
"require_sha_for_merge": false,
"lock_require_sha_for_merge": 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
}
그룹 이전#
히스토리
- 비동기 이전이 GitLab 19.0에서
groups_and_projects_async_transfer라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - 비동기 이전이 GitLab 19.4에서 정식 출시되었습니다. 기능 플래그
groups_and_projects_async_transfer가 제거되었습니다.
그룹을 새 상위 그룹으로 이전하거나 하위 그룹을 최상위 그룹으로 전환합니다.
사전 요구 사항:
- 그룹에서 Owner 권한이 있어야 합니다.
- 그룹을 이전하는 경우 새 상위 그룹에서 하위 그룹을 생성할 권한이 있어야 합니다.
- 하위 그룹을 전환하는 경우 최상위 그룹을 생성할 권한이 있어야 합니다.
POST /groups/:id/transfer
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer | yes | 이전할 그룹의 ID. |
group_id |
integer | no | 새 상위 그룹의 ID. 지정하지 않으면 그룹이 최상위 그룹으로 전환됩니다. |
성공하면 201 Created와 이전 전 상태의 그룹을 반환합니다.
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/4/transfer?group_id=7"
이전이 성공했는지 확인하려면 parent_id가 새 상위 그룹의 ID와 일치할 때까지 그룹을 조회합니다.
최상위 그룹의 값은 null입니다.
이전이 실패하면 이전을 요청한 사용자에게 transfer_failed 액션이 있는 할 일 항목이 생성됩니다. 할 일 항목을 가져오려면 모든 할 일 항목 나열을 참고합니다.
그룹 이전 가능한 위치 목록 조회#
지정된 그룹을 이전할 수 있는 모든 상위 그룹을 나열합니다.
GET /groups/:id/transfer_locations
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 이전할 그룹의 ID 또는 URL 인코딩된 경로. |
search |
string | No | 검색할 특정 그룹의 이름. |
요청 예시:
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"
}
]
프로젝트를 그룹으로 이전#
프로젝트를 다른 그룹 네임스페이스로 이전합니다. 또는 프로젝트를 새 네임스페이스로 이전 엔드포인트를 사용할 수도 있습니다.
프로젝트 리포지터리에 태그가 지정된 패키지가 있으면 이전 과정이 실패할 수 있습니다.
사전 요구 사항:
- 인스턴스의 관리자여야 합니다.
POST /groups/:id/projects/:project_id
파라미터:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 타깃 그룹의 ID 또는 URL 인코딩된 경로. |
project_id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
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 | 타깃 그룹의 ID 또는 URL 인코딩된 경로. |
group_id |
integer | yes | 초대할 그룹의 ID. |
group_access |
integer | yes | 초대된 그룹에 할당할 기본 access_level. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
expires_at |
date (ISO 8601) | no | 그룹 초대가 만료되는 날짜. |
member_role_id |
integer | no | 초대된 그룹에 할당할 사용자 지정 역할의 ID. 정의한 경우 group_access는 사용자 지정 역할을 만들 때 사용한 기본 역할과 일치해야 합니다. |
성공하면 200과 그룹 세부 정보를 반환합니다.
그룹 초대 삭제#
그룹 초대를 삭제하고 지정된 그룹에서 타깃 그룹에 대한 액세스를 제거합니다.
DELETE /groups/:id/share/:group_id
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 타깃 그룹의 ID 또는 URL 인코딩된 경로. |
group_id |
integer | yes | 초대를 취소할 그룹의 ID. |
성공하면 204와 빈 콘텐츠를 반환합니다.
그룹 속성 업데이트#
히스토리
- GitLab 18.0에서 일반 공급되었습니다. 기능 플래그
limit_unique_project_downloads_per_namespace_user가 제거되었습니다. - GitLab 18.2에서
use_web_based_commit_signing_enabled라는 기능 플래그와 함께web_based_commit_signing_enabled가 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 18.10에서
web_based_commit_signing_enabled가 일반 공급되었습니다. 기능 플래그use_web_based_commit_signing_enabled가 제거되었습니다. - GitLab 18.5에서
allow_personal_snippets_setting이라는 기능 플래그와 함께allow_personal_snippets가 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 18.9에서
allow_personal_snippets가 일반 공급되었습니다. 기능 플래그allow_personal_snippets_setting이 제거되었습니다. - GitLab 19.0에서
use_built_in_project_templates_enabled라는 기능 플래그와 함께built_in_project_templates_enabled및lock_built_in_project_templates_enabled가 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 19.2에서
built_in_project_templates_enabled및lock_built_in_project_templates_enabled가 일반 공급되었습니다. 기능 플래그use_built_in_project_templates_enabled가 제거되었습니다. - GitLab 19.2에서
ai_audit_events_storage_enabled및lock_ai_audit_events_storage_enabled가 도입되었습니다.
지정된 그룹의 속성을 업데이트합니다.
사전 요구 사항:
- 관리자이거나 그룹에서 Owner 권한이 있어야 합니다.
PUT /groups/:id
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer | yes | 그룹의 ID. |
name |
string | no | 그룹의 이름. |
path |
string | no | 그룹의 경로. |
auto_devops_enabled |
boolean | no | 이 그룹 내 모든 프로젝트에 Auto DevOps 파이프라인을 기본값으로 적용합니다. |
avatar |
mixed | no | 그룹 아바타용 이미지 파일. |
built_in_project_templates_enabled |
boolean | no | 사용자가 그룹에서 프로젝트를 생성할 때 기본 제공 프로젝트 템플릿을 활성화합니다. Premium 및 Ultimate 전용. GitLab 19.0에서 use_built_in_project_templates_enabled라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. GitLab 19.2에서 일반 공급되었습니다. 기능 플래그 use_built_in_project_templates_enabled가 제거되었습니다. |
lock_built_in_project_templates_enabled |
boolean | no | 모든 하위 그룹에 built_in_project_templates_enabled 설정을 강제합니다. Premium 및 Ultimate 전용. GitLab 19.0에서 use_built_in_project_templates_enabled라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. GitLab 19.2에서 일반 공급되었습니다. 기능 플래그 use_built_in_project_templates_enabled가 제거되었습니다. |
default_branch |
string | no | 그룹 프로젝트의 기본 브랜치 이름. |
default_branch_protection |
integer | no | GitLab 17.0에서 지원 중단되었습니다. 대신 default_branch_protection_defaults를 사용합니다. |
default_branch_protection_defaults |
hash | no | GitLab 17.0에서 도입되었습니다. 사용 가능한 옵션은 default_branch_protection_defaults 옵션을 참고합니다. |
description |
string | no | 그룹의 설명. |
enabled_git_access_protocol |
string | no | Git 액세스에 사용하도록 활성화된 프로토콜. 허용되는 값은 ssh, http, 두 프로토콜을 모두 허용하는 all 입니다. |
emails_disabled |
boolean | no | (GitLab 16.5에서 지원 중단되었습니다.) 이메일 알림을 비활성화합니다. 대신 emails_enabled를 사용합니다. |
emails_enabled |
boolean | no | 이메일 알림을 활성화합니다. |
lfs_enabled |
boolean | no | 이 그룹의 프로젝트에 대해 Large File Storage(LFS)를 활성화하거나 비활성화합니다. |
mentions_disabled |
boolean | no | 그룹이 멘션되는 기능을 비활성화합니다. |
prevent_sharing_groups_outside_hierarchy |
boolean | no | 그룹 계층 외부로의 그룹 공유 방지를 참고합니다. 이 속성은 최상위 그룹에서만 사용할 수 있습니다. |
project_creation_level |
string | no | 개발자가 그룹에서 프로젝트를 생성할 수 있는지 결정합니다. noone(아무도 없음), maintainer(Maintainer 권한이 있는 사용자), developer(Developer 또는 Maintainer 권한이 있는 사용자) 중 하나입니다. |
request_access_enabled |
boolean | no | 사용자가 멤버 액세스를 요청할 수 있도록 허용합니다. |
require_two_factor_authentication |
boolean | no | 이 그룹의 모든 사용자에게 2단계 인증 설정을 요구합니다. |
shared_runners_setting |
string | no | shared_runners_setting 옵션을 참고합니다. 그룹의 하위 그룹과 프로젝트에 대해 인스턴스 러너를 활성화하거나 비활성화합니다. |
share_with_group_lock |
boolean | no | 이 그룹 내에서 프로젝트를 다른 그룹과 공유하지 못하도록 합니다. |
step_up_auth_required_oauth_provider |
string | no | 단계 상승 인증에 필요한 OAuth 공급자. 비활성화하려면 빈 문자열을 전달합니다. GitLab 18.4에서 도입되었습니다. omniauth_step_up_auth_for_namespace 기능 플래그가 활성화된 경우 사용할 수 있습니다. |
subgroup_creation_level |
string | no | 하위 그룹 생성이 허용되는 대상. owner(Owner 권한이 있는 사용자) 또는 maintainer(Maintainer 권한이 있는 사용자) 중 하나입니다. |
two_factor_grace_period |
integer | no | 2단계 인증이 강제되기까지의 시간(시간 단위). |
visibility |
string | no | 그룹의 공개 수준. private, internal, public 중 하나입니다. |
extra_shared_runners_minutes_limit |
integer | no | 관리자만 설정할 수 있습니다. 이 그룹의 추가 컴퓨팅 분. GitLab Self-Managed, Premium 및 Ultimate 전용. |
file_template_project_id |
integer | no | 사용자 지정 파일 템플릿을 불러올 프로젝트의 ID. Premium 및 Ultimate 전용. |
membership_lock |
boolean | no | 이 그룹의 프로젝트에 사용자를 추가할 수 없습니다. Premium 및 Ultimate 전용. |
prevent_forking_outside_group |
boolean | no | 활성화하면 사용자가 이 그룹의 프로젝트를 외부 네임스페이스로 포크할 수 없습니다. Premium 및 Ultimate 전용. |
shared_runners_minutes_limit |
integer | no | 관리자만 설정할 수 있습니다. 이 그룹의 월간 최대 컴퓨팅 분. nil(기본값, 시스템 기본값 상속), 0(무제한) 또는 > 0 일 수 있습니다. GitLab Self-Managed, Premium 및 Ultimate 전용. |
unique_project_download_limit |
integer | no | 사용자가 차단되기 전까지 지정된 기간 동안 다운로드할 수 있는 고유 프로젝트의 최대 수. 최상위 그룹에서만 사용할 수 있습니다. 기본값: 0, 최댓값: 10,000. Ultimate 전용. |
unique_project_download_limit_interval_in_seconds |
integer | no | 사용자가 차단되기 전까지 최대 개수의 프로젝트를 다운로드할 수 있는 기간. 최상위 그룹에서만 사용할 수 있습니다. 기본값: 0, 최댓값: 864,000초(10일). Ultimate 전용. |
unique_project_download_limit_allowlist |
array of strings | no | 고유 프로젝트 다운로드 제한에서 제외되는 사용자 이름 목록. 최상위 그룹에서만 사용할 수 있습니다. 기본값: [], 최댓값: 사용자 이름 100개. Ultimate 전용. |
unique_project_download_limit_alertlist |
array of integers | no | 고유 프로젝트 다운로드 제한을 초과했을 때 이메일을 받는 사용자 ID 목록. 최상위 그룹에서만 사용할 수 있습니다. 기본값: [], 최댓값: 사용자 ID 100개. Ultimate 전용. |
auto_ban_user_on_excessive_projects_download |
boolean | no | 활성화하면 사용자가 unique_project_download_limit 및 unique_project_download_limit_interval_in_seconds로 지정한 최대 고유 프로젝트 수보다 많이 다운로드할 때 그룹에서 자동으로 차단됩니다. Ultimate 전용. |
ip_restriction_ranges |
string | no | 그룹 액세스를 제한할 IP 주소 또는 서브넷 마스크의 쉼표로 구분된 목록. Premium 및 Ultimate 전용. |
allowed_email_domains_list |
string | no | 그룹 액세스를 허용할 이메일 주소 도메인의 쉼표로 구분된 목록. 17.4에서 도입되었습니다. GitLab Premium 및 Ultimate 전용. |
wiki_access_level |
string | no | 위키 액세스 수준. disabled, private, enabled 중 하나입니다. Premium 및 Ultimate 전용. |
duo_availability |
string | no | GitLab Duo 가용성 설정. 유효한 값은 default_on, default_off, never_on 입니다. 참고: UI에서 never_on은 "Always Off" 로 표시됩니다. |
experiment_features_enabled |
boolean | no | 이 그룹에 대해 실험 기능을 활성화합니다. |
ai_settings_attributes |
hash | no | 이 그룹의 AI 관련 설정. 사용 가능한 옵션은 ai_settings_attributes 옵션을 참고합니다. GitLab Duo 기능이 활성화되어 있어야 합니다. |
math_rendering_limits_enabled |
boolean | no | 이 그룹에 수식 렌더링 제한이 사용되는지 여부를 나타냅니다. |
lock_math_rendering_limits_enabled |
boolean | no | 모든 하위 그룹에 대해 수식 렌더링 제한이 잠겨 있는지 여부를 나타냅니다. |
require_sha_for_merge |
boolean | no | 이 그룹의 머지 리퀘스트가 머지 리퀘스트 병합 엔드포인트 호출에 유효한 커밋 SHA를 요구하는지 여부를 나타냅니다. GitLab 19.5에서 도입되었습니다. |
lock_require_sha_for_merge |
boolean | no | 모든 하위 그룹에 require_sha_for_merge 설정을 강제합니다. GitLab 19.5에서 도입되었습니다. |
duo_features_enabled |
boolean | no | 이 그룹에 대해 GitLab Duo 기능이 활성화되어 있는지 여부를 나타냅니다. GitLab Self-Managed, Premium 및 Ultimate 전용. |
lock_duo_features_enabled |
boolean | no | GitLab Duo 기능 활성화 설정이 모든 하위 그룹에 강제되는지 여부를 나타냅니다. GitLab Self-Managed, Premium 및 Ultimate 전용. |
ai_audit_events_storage_enabled |
boolean | no | 그룹에 대해 AI 감사 이벤트가 저장되는지 여부를 나타냅니다. GitLab 19.2에서 도입되었습니다. Premium 및 Ultimate 전용. |
lock_ai_audit_events_storage_enabled |
boolean | no | AI 감사 이벤트 저장 설정이 모든 하위 그룹과 프로젝트에 강제되는지 여부를 나타냅니다. GitLab 19.2에서 도입되었습니다. Premium 및 Ultimate 전용. |
max_artifacts_size |
integer | No | 개별 job 아티팩트의 최대 파일 크기(메가바이트). |
web_based_commit_signing_enabled |
boolean | No | GitLab UI에서 생성한 커밋에 대해 웹 기반 커밋 서명을 활성화합니다. GitLab.com의 최상위 그룹에서만 사용할 수 있습니다. 그룹에 대해 활성화하면 그룹의 모든 프로젝트에 적용됩니다. |
only_allow_merge_if_pipeline_succeeds |
boolean | no | 파이프라인이 성공한 경우에만 머지 리퀘스트 머지를 허용합니다. 그룹에 대해 활성화하면 그룹의 모든 프로젝트에 적용됩니다. Premium 및 Ultimate 전용. |
allow_merge_on_skipped_pipeline |
boolean | no | 파이프라인을 건너뛴 경우에도 머지 리퀘스트 머지를 허용합니다. only_allow_merge_if_pipeline_succeeds가 true 인 경우에만 적용됩니다. Premium 및 Ultimate 전용. |
| only_allow_merge_if_all_discussions_are_resolved | boolean | no | 모든 토론이 해결된 경우에만 머지 리퀘스트 머지를 허용합니다. 그룹에 대해 활성화하면 그룹의 모든 프로젝트에 적용됩니다. Premium 및 Ultimate 전용. |
| allow_personal_snippets | boolean | no | 이 그룹의 엔터프라이즈 사용자가 개인 스니펫을 생성할 수 있도록 허용합니다. 비활성화하면 엔터프라이즈 사용자는 개인 네임스페이스에서 스니펫을 생성할 수 없습니다. |
응답의 projects 및 shared_projects 속성은 지원이 중단되었으며 API v5에서 제거될 예정입니다.
그룹 내 모든 프로젝트의 세부 정보를 가져오려면 그룹의 프로젝트 목록 조회 또는 그룹의 공유 프로젝트 목록 조회 엔드포인트를 사용합니다.
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,
"require_sha_for_merge": false,
"lock_require_sha_for_merge": 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 |
이 그룹의 모든 프로젝트와 하위 그룹에 대해 인스턴스 러너를 활성화합니다. |
disabled_and_overridable |
이 그룹의 모든 프로젝트와 하위 그룹에 대해 인스턴스 러너를 비활성화하지만, 하위 그룹이 이 설정을 재정의할 수 있도록 허용합니다. |
disabled_and_unoverridable |
이 그룹의 모든 프로젝트와 하위 그룹에 대해 인스턴스 러너를 비활성화하며, 하위 그룹이 이 설정을 재정의하지 못하도록 합니다. |
disabled_with_override |
(지원 중단. disabled_and_overridable을 사용합니다.) 이 그룹의 모든 프로젝트와 하위 그룹에 대해 인스턴스 러너를 비활성화하지만, 하위 그룹이 이 설정을 재정의할 수 있도록 허용합니다. |
ai_settings_attributes 옵션#
히스토리
- GitLab 18.1에서
duo_workflow_mcp_enabled가 도입되었습니다. - GitLab 18.6에서
foundational_agents_default_enabled가 도입되었습니다. - GitLab 18.7에서
duo_agent_platform_enabled가 도입되었습니다. - GitLab 18.7에서
minimum_access_level_execute,minimum_access_level_execute_async,minimum_access_level_manage,minimum_access_level_enable_on_projects가 도입되었습니다. - GitLab 18.8에서
prompt_injection_protection_level이 도입되었습니다. - GitLab 18.9에서
ai_usage_data_collection_enabled가 도입되었습니다. - GitLab 19.0에서
include_recommended_allowed,allow_all_unix_sockets,allow_project_extension이 도입되었습니다. - GitLab 19.0에서
ai_catalog_restricted_to_group_hierarchy가 도입되었습니다. - GitLab 19.4에서
web_search_enabled가 도입되었습니다.
ai_settings_attributes 해시는 그룹의 AI 관련 설정을 구성합니다.
모든 속성은 선택 사항입니다.
| Attribute | Type | Description |
|---|---|---|
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 |
integer | 프로젝트에서 GitLab Duo Agent Platform을 활성화하는 데 필요한 최소 액세스 수준. 유효한 값: 30(Developer), 40(Maintainer), 50(Owner). dap_group_customizable_permissions 기능 플래그가 활성화된 경우 사용할 수 있습니다. |
minimum_access_level_execute |
integer | 사용자가 GitLab Duo Agent Platform 기능을 사용하는 데 필요한 최소 액세스 수준. 유효한 값: 10(Guest), 15(Planner), 20(Reporter), 30(Developer), 40(Maintainer), 50(Owner). dap_group_customizable_permissions 기능 플래그가 활성화된 경우 사용할 수 있습니다. |
minimum_access_level_execute_async |
integer | CI/CD에서 GitLab Duo Agent Platform 기능을 실행하는 데 필요한 최소 액세스 수준. 유효한 값: 30(Developer), 40(Maintainer), 50(Owner). dap_group_customizable_permissions 기능 플래그가 활성화된 경우 사용할 수 있습니다. |
minimum_access_level_manage |
integer | GitLab Duo Agent Platform을 관리하는 데 필요한 최소 액세스 수준. 유효한 값: 30(Developer), 40(Maintainer), 50(Owner). dap_group_customizable_permissions 기능 플래그가 활성화된 경우 사용할 수 있습니다. |
prompt_injection_protection_level |
string | 프롬프트 인젝션 보호 수준. 유효한 값: no_checks, log_only, interrupt. |
web_search_enabled |
boolean | true 인 경우 이 그룹의 GitLab Duo Chat에서 웹 검색을 활성화합니다. 최상위 그룹에서만 설정할 수 있습니다. |
그룹 아바타 업데이트#
그룹 아바타를 업데이트합니다.
그룹 아바타 다운로드#
그룹 아바타를 가져옵니다. 그룹이 공개적으로 접근 가능한 경우 이 엔드포인트는 인증 없이도 접근할 수 있습니다.
GET /groups/:id/avatar
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID. |
예시:
curl --request GET \
--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 헤더를 사용해 데이터를 전송합니다.
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 동기화#
지정된 그룹을 연결된 LDAP 그룹과 동기화합니다.
사전 요구 사항:
- 관리자이거나 그룹에서 Owner 권한이 있어야 합니다.
POST /groups/:id/ldap_sync
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 그룹의 ID 또는 URL 인코딩된 경로. |
자격증명 인벤토리 관리#
히스토리
GitLab.com의 엔터프라이즈 사용자 자격 증명을 조회, 취소, 교체합니다.
사전 요구 사항:
- 그룹에서 Owner 권한이 있어야 합니다.
그룹의 전체 개인 액세스 토큰 목록 조회#
히스토리
- GitLab 19.4에서 응답의
last_used_ips가 도입되었습니다.
최상위 그룹의 엔터프라이즈 사용자와 연결된 모든 개인 액세스 토큰을 나열합니다.
GET /groups/:id/manage/personal_access_tokens
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 그룹의 ID 또는 URL 인코딩된 경로. |
created_after |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이후에 생성된 토큰을 반환합니다. |
created_before |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이전에 생성된 토큰을 반환합니다. |
last_used_after |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이후에 마지막으로 사용된 토큰을 반환합니다. |
last_used_before |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이전에 마지막으로 사용된 토큰을 반환합니다. |
revoked |
boolean | No | true 이면 취소된 토큰만 반환합니다. |
search |
string | No | 정의한 경우 이름에 지정된 값이 포함된 토큰을 반환합니다. |
state |
string | No | 정의한 경우 지정된 상태의 토큰을 반환합니다. 가능한 값: active, inactive. |
sort |
string | No | 정의한 경우 지정된 값으로 결과를 정렬합니다. 가능한 값: created_asc, created_desc, expires_asc, expires_desc, last_used_asc, last_used_desc, name_asc, name_desc. |
요청 예시:
curl --request GET \
--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",
"last_used_ips": ["192.0.2.10"],
"active": true,
"expires_at": "2025-11-08"
}
]
그룹의 전체 그룹 및 프로젝트 액세스 토큰 목록 조회#
최상위 그룹과 연결된 모든 그룹 및 프로젝트 액세스 토큰을 나열합니다.
GET /groups/:id/manage/resource_access_tokens
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 그룹의 ID 또는 URL 인코딩된 경로. |
created_after |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이후에 생성된 토큰을 반환합니다. |
created_before |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이전에 생성된 토큰을 반환합니다. |
last_used_after |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이후에 마지막으로 사용된 토큰을 반환합니다. |
last_used_before |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이전에 마지막으로 사용된 토큰을 반환합니다. |
revoked |
boolean | No | true 이면 취소된 토큰만 반환합니다. |
search |
string | No | 정의한 경우 이름에 지정된 값이 포함된 토큰을 반환합니다. |
state |
string | No | 정의한 경우 지정된 상태의 토큰을 반환합니다. 가능한 값: active, inactive. |
sort |
string | No | 정의한 경우 지정된 값으로 결과를 정렬합니다. 가능한 값: created_asc, created_desc, expires_asc, expires_desc, last_used_asc, last_used_desc, name_asc, name_desc. |
요청 예시:
curl --request GET \
--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 | 그룹의 ID 또는 URL 인코딩된 경로. |
created_after |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이후에 생성된 SSH 키를 반환합니다. |
created_before |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이전에 생성된 SSH 키를 반환합니다. |
expires_before |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이전에 만료되는 SSH 키를 반환합니다. |
expires_after |
datetime (ISO 8601) | No | 정의한 경우 지정된 시간 이후에 만료되는 SSH 키를 반환합니다. |
curl --request GET \
--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 또는 키워드 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 또는 키워드 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. |
성공하면 204: No Content를 반환합니다.
그 밖에 가능한 응답:
- SSH 키가 삭제되지 않은 경우
400: Bad Request. - SSH 키가 유효하지 않은 경우
401: Unauthorized. - 사용자에게 필요한 권한이 없는 경우
403: Forbidden.
엔터프라이즈 사용자의 개인 액세스 토큰 교체#
최상위 그룹과 연결된 엔터프라이즈 사용자의 지정된 개인 액세스 토큰을 교체합니다. 이전 토큰은 취소되고 1주일 후에 만료되는 새 토큰이 생성됩니다.
POST groups/:id/manage/personal_access_tokens/:id/rotate
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 개인 액세스 토큰의 ID 또는 키워드 self. |
expires_at |
date | No | ISO 형식(YYYY-MM-DD)으로 지정하는 액세스 토큰의 만료 날짜. 교체 날짜로부터 1년 이내여야 합니다. 정의하지 않으면 토큰은 1주일 후에 만료됩니다. |
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,
"last_used_ips": [],
"active": true,
"expires_at": "2023-08-15",
"token": "s3cr3t"
}
세분화된 범위가 있는 토큰을 교체하면 새 토큰의 granular_scopes 속성에 해당 범위가 반환됩니다.
자세한 내용은 모든 개인 액세스 토큰 나열을 참고합니다.
성공하면 200: OK를 반환합니다.
그 밖에 가능한 응답:
- 교체에 실패한 경우
400: Bad Request. - 다음 조건 중 하나라도 해당하면
401: Unauthorized.- 토큰이 존재하지 않습니다.
- 토큰이 만료되었습니다.
- 토큰이 취소되었습니다.
- 지정된 토큰에 대한 액세스 권한이 없습니다.
- 토큰이 자체 교체를 허용하지 않는 경우
403: Forbidden. - 사용자에게 Owner 권한이 있지만 토큰이 존재하지 않는 경우
404: Not Found. - 토큰이 개인 액세스 토큰이 아닌 경우
405: Method Not Allowed.
엔터프라이즈 사용자의 그룹 또는 프로젝트 액세스 토큰 교체#
최상위 그룹과 연결된 엔터프라이즈 사용자의 지정된 그룹 또는 프로젝트 액세스 토큰을 교체합니다. 이전 토큰은 취소되고 1주일 후에 만료되는 새 토큰이 생성됩니다.
POST groups/:id/manage/resource_access_tokens/:id/rotate
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 개인 액세스 토큰의 ID 또는 키워드 self. |
expires_at |
date | No | ISO 형식(YYYY-MM-DD)으로 지정하는 액세스 토큰의 만료 날짜. 교체 날짜로부터 1년 이내여야 합니다. 정의하지 않으면 토큰은 1주일 후에 만료됩니다. |
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. - 사용자에게 Owner 권한이 있지만 토큰이 존재하지 않는 경우
404: Not Found.
Footnotes
-
searchURL 파라미터로 계산한 유사도 점수를 기준으로 결과를 정렬합니다.order_by=similarity를 사용하면sort파라미터는 무시됩니다.search파라미터를 제공하지 않으면 API는name기준으로 정렬한 프로젝트를 반환합니다. ↩