InfoGrab DocsInfoGrab Docs

그룹 API

요약

- 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_tokenenabled_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에 대한 응답 속성#

히스토리

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개의 결과를 반환합니다.

인증 없이 접근할 때, 이 엔드포인트는 키셋 페이지네이션도 지원합니다:

파라미터:

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.

각주:

  • search URL 파라미터에서 계산된 유사도 점수로 결과를 정렬합니다. 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

지정된 최상위 그룹의 모든 SAML 사용자를 나열합니다.

pageper_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
      }
    ]
  },
  ...
]

프로비저닝된 사용자 목록 조회#

Tier: Premium, Ultimate
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"
  }
]

감사 이벤트 목록 조회#

Tier: Premium, Ultimate
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

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

그룹을 보관합니다.

사전 조건:

  • 관리자이거나 그룹에서 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

그룹 보관을 해제합니다.

사전 조건:

  • 관리자이거나 그룹에서 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
}

그룹 이전#

그룹을 새 부모 그룹으로 이전하거나 서브그룹을 최상위 그룹으로 변환합니다.

사전 조건:

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

프로젝트를 그룹으로 이전#

Tier: Free, Premium, Ultimate
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_user removed.

  • web_based_commit_signing_enabled introduced in GitLab 18.2 with a feature flag named use_web_based_commit_signing_enabled. Disabled by default.

  • web_based_commit_signing_enabled generally available in GitLab 18.10. Feature flag use_web_based_commit_signing_enabled removed.

  • allow_personal_snippets introduced in GitLab 18.5 with a feature flag named allow_personal_snippets_setting. Disabled by default.

  • allow_personal_snippets generally available in GitLab 18.9. Feature flag allow_personal_snippets_setting removed.

  • built_in_project_templates_enabled and lock_built_in_project_templates_enabled introduced in GitLab 19.0 with a feature flag named use_built_in_project_templates_enabled. Disabled by default.

  • built_in_project_templates_enabled and lock_built_in_project_templates_enabled generally available in GitLab 19.2. Feature flag use_built_in_project_templates_enabled removed.

지정된 그룹의 속성을 업데이트합니다.

사전 조건:

  • 관리자이거나 그룹에서 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 동기화#

Tier: Premium, Ultimate
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.

자격증명 인벤토리 관리#

Tier: Premium, Ultimate
Offering: GitLab.com

History

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 역할이 있지만 토큰이 존재하지 않는 경우.

그룹 API

GitLab v19.2
Tier: Premium, Ultimate
Offering: 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_tokenenabled_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에 대한 응답 속성#

히스토리

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개의 결과를 반환합니다.

인증 없이 접근할 때, 이 엔드포인트는 키셋 페이지네이션도 지원합니다:

파라미터:

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.

각주:

  • search URL 파라미터에서 계산된 유사도 점수로 결과를 정렬합니다. 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

지정된 최상위 그룹의 모든 SAML 사용자를 나열합니다.

pageper_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
      }
    ]
  },
  ...
]

프로비저닝된 사용자 목록 조회#

Tier: Premium, Ultimate
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"
  }
]

감사 이벤트 목록 조회#

Tier: Premium, Ultimate
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

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

그룹을 보관합니다.

사전 조건:

  • 관리자이거나 그룹에서 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

그룹 보관을 해제합니다.

사전 조건:

  • 관리자이거나 그룹에서 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
}

그룹 이전#

그룹을 새 부모 그룹으로 이전하거나 서브그룹을 최상위 그룹으로 변환합니다.

사전 조건:

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

프로젝트를 그룹으로 이전#

Tier: Free, Premium, Ultimate
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_user removed.

  • web_based_commit_signing_enabled introduced in GitLab 18.2 with a feature flag named use_web_based_commit_signing_enabled. Disabled by default.

  • web_based_commit_signing_enabled generally available in GitLab 18.10. Feature flag use_web_based_commit_signing_enabled removed.

  • allow_personal_snippets introduced in GitLab 18.5 with a feature flag named allow_personal_snippets_setting. Disabled by default.

  • allow_personal_snippets generally available in GitLab 18.9. Feature flag allow_personal_snippets_setting removed.

  • built_in_project_templates_enabled and lock_built_in_project_templates_enabled introduced in GitLab 19.0 with a feature flag named use_built_in_project_templates_enabled. Disabled by default.

  • built_in_project_templates_enabled and lock_built_in_project_templates_enabled generally available in GitLab 19.2. Feature flag use_built_in_project_templates_enabled removed.

지정된 그룹의 속성을 업데이트합니다.

사전 조건:

  • 관리자이거나 그룹에서 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 동기화#

Tier: Premium, Ultimate
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.

자격증명 인벤토리 관리#

Tier: Premium, Ultimate
Offering: GitLab.com

History

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 역할이 있지만 토큰이 존재하지 않는 경우.