그룹 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

REST API를 사용하여 그룹과 상호 작용합니다.

응답으로 반환되는 필드는 인증된 사용자의 권한에 따라 다양합니다.

그룹 디렉터리

인증된 사용자의 보이는 그룹 디렉터리을 가져옵니다. 인증되지 않은 경우에는 공개 그룹만 반환됩니다.

기본적으로, API 결과가 페이징되기 때문에 이 요청은 한 번에 20개의 결과를 반환합니다.

인증되지 않은 경우, 이 엔드포인트는 또한 키셋 페이징을 지원합니다:

  • 연속된 결과 페이지를 요청하는 경우, 키셋 페이징을 사용해야 합니다.
  • 특정 오프셋 제한을 넘어서면 오프셋 페이징을 사용할 수 없습니다. (오프셋 기반 페이징에 대한 REST API가 허용하는 최대 오프셋 제한으로 지정됨)

매개변수:

속성 유형 필수 설명
skip_groups 정수 배열 아니오 전달된 그룹 ID를 건너뜁니다
all_available 부울 아니오 액세스할 수 있는 모든 그룹을 표시합니다 (authenticated users의 기본값은 false, admintrue이며, 속성 ownedmin_access_level이 우선합니다)
search 문자열 아니오 검색 기준과 일치하는 권한이 있는 그룹 디렉터리을 반환합니다.
order_by 문자열 아니오 그룹을 name, path, id, 또는 similarity별로 정렬합니다. 기본값은 name입니다.
sort 문자열 아니오 그룹을 asc 또는 desc 순서대로 정렬합니다. 기본값은 asc입니다.
statistics 부울 아니오 그룹 통계를 포함합니다 (관리자 전용).
참고: REST API 응답은 UI에 표시되는 전체 RootStorageStatistics 데이터를 제공하지 않습니다. UI에서 데이터와 일치시키려면 REST 대신에 GraphQL을 사용하세요. 자세한 내용은 그룹 GraphQL API resource를 참조하세요.
visibility 문자열 아니오 public, internal, 또는 private 가시성을 갖는 그룹으로 제한합니다.
with_custom_attributes 부울 아니오 사용자 정의 속성을 응답에 포함합니다 (관리자 전용)
owned 부울 아니오 현재 사용자가 명시적으로 소유한 그룹으로 제한합니다
min_access_level 정수 아니오 현재 사용자가 적어도 이 역할(access_level)을 갖는 그룹으로 제한합니다
top_level_only 부울 아니오 모든 하위 그룹을 제외하고 최상위 레벨 그룹으로 제한합니다
repository_storage 문자열 아니오 그룹이 사용하는 리포지터리 스토리지로 필터링합니다 (관리자 전용). GitLab 16.3에서 소개됨. Premium 및 Ultimate 전용으로,
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를 추가하고 인증된 사용자가 관리자인 경우에는 추가적인 그룹 통계가 반환됩니다.

GET /groups?statistics=true
[
  {
    "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
    },
    "wiki_access_level": "private",
    "duo_features_enabled": true,
    "lock_duo_features_enabled": false,
  }
]

GitLab Premium 또는 Ultimate 사용자는 wiki_access_level, duo_features_enabled, lock_duo_features_enabled 속성도 볼 수 있습니다.

그룹 이름 또는 경로로 그룹을 검색할 수 있습니다.

다음과 같이 사용자 정의 속성으로 필터링할 수 있습니다:

GET /groups?custom_attributes[key]=value&custom_attributes[other_key]=other_value

그룹의 하위 그룹 디렉터리

이 그룹에 있는 직접 하위 그룹의 디렉터리을 가져옵니다.

기본적으로, API 결과가 페이징되기 때문에 이 요청은 한 번에 20개의 결과를 반환합니다.

다음과 같이 이 디렉터리을 요청했을 때:

  • 인증되지 않은 사용자는 응답으로 공개 그룹만 반환합니다.
  • 인증된 사용자는 응답으로 그룹에 속한 그룹만 반환하며, 공개 그룹은 포함되지 않습니다.

매개변수:

속성 유형 필수 설명
id integer/string 즉시 상위 그룹의 ID 또는 URL-encoded path(recursive-mode)
skip_groups 정수 배열 아니오 전달된 그룹 ID를 건너뜁니다
all_available 부울 아니오 액세스할 수 있는 모든 그룹을 표시합니다 (authenticated users의 기본값은 false, admintrue이며, 속성 ownedmin_access_level이 우선합니다)
search 문자열 아니오 검색 기준과 일치하는 권한이 있는 그룹 디렉터리을 반환합니다. 하위 그룹의 단축 경로만 검색됩니다 (전체 경로는 아님)
order_by 문자열 아니오 그룹을 name, path 또는 id 별로 정렬합니다. 기본값은 name입니다.
sort 문자열 아니오 그룹을 asc 또는 desc 순서대로 정렬합니다. 기본값은 asc입니다.
statistics 부울 아니오 그룹 통계를 포함합니다 (관리자 전용)
with_custom_attributes 부울 아니오 사용자 정의 속성을 응답에 포함합니다 (관리자 전용)
owned 부울 아니오 현재 사용자가 명시적으로 소유한 그룹으로 제한합니다
min_access_level 정수 아니오 현재 사용자가 적어도 이 역할(access_level)을 가진 그룹으로 제한합니다
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 속성도 볼 수 있습니다.

그룹의 하위 그룹 디렉터리

이 그룹의 하위 그룹을 가져옵니다. 인증 없이 액세스하는 경우 공개 그룹만 반환됩니다.

기본적으로 이 요청은 API 결과가 페이지 단위로 구성되기 때문에 한 번에 20개의 결과를 반환합니다.

매개변수:

속성 유형 필수 여부 설명
id 정수/문자열 즉시 상위 그룹의 ID 또는 URL-인코딩된 경로
skip_groups 정수 배열 아니요 전달 된 그룹 ID 건너뜀
all_available 부울 아니요 액세스 권한이 있는 모든 그룹 표시(인증된 사용자의 경우 기본값은 false, 관리자의 경우 기본값은 true). 소유최소 액세스 레벨이 우선함
search 문자열 아니요 검색 기준과 일치하는 허가된 그룹 디렉터리 반환. 하위 그룹 축약 경로만 검색(전체 경로 아님)
order_by 문자열 아니요 그룹을 이름, 경로, 또는 id로 정렬. 기본값은 name
sort 문자열 아니요 그룹을 asc 또는 desc 순서로 정렬. 기본값은 asc
statistics 부울 아니요 그룹 통계 포함(관리자 전용)
with_custom_attributes 부울 아니요 응답에 사용자 정의 속성을 포함(관리자 전용)
owned 부울 아니요 현재 사용자가 명시적으로 소유한 그룹으로 제한
min_access_level 정수 아니요 현재 사용자가 적어도 이 역할 (access_level)을 가진 그룹으로 제한
GET /groups/:id/descendant_groups
[
  {
    "id": 2,
    "name": "Bar Group",
    "path": "bar",
    "description": "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": "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 속성도 볼 수 있습니다.

그룹의 프로젝트 디렉터리

이 그룹의 프로젝트 디렉터리을 가져옵니다. 인증 없이 액세스하는 경우 공개 프로젝트만 반환됩니다.

기본적으로 이 요청은 API 결과가 페이지 단위로 구성되기 때문에 한 번에 20개의 결과를 반환합니다.

GET /groups/:id/projects

매개변수:

속성 유형 필수 여부 설명
id 정수/문자열 인증된 사용자가 소유한 그룹의 ID 또는 URL-인코딩된 경로
archived 부울 아니요 보관된 상태로 제한
visibility 문자열 아니요 가시성 public, internal, 또는 private으로 제한
order_by 문자열 아니요 id, name, path, created_at, updated_at, similarity 1, star_count 또는 last_activity_at 필드로 정렬된 프로젝트 반환. 기본값은 created_at
sort 문자열 아니요 asc 또는 desc 순서로 정렬된 프로젝트 반환. 기본값은 desc
search 문자열 아니요 검색 기준과 일치하는 허가된 프로젝트 디렉터리 반환
simple 부울 아니요 각 프로젝트에 대해 제한된 필드만 반환. 인증 없는 경우 간단한 필드만 반환됩니다.
owned 부울 아니요 현재 사용자가 소유한 프로젝트로 제한
starred 부울 아니요 현재 사용자가 즐겨찾기 한 프로젝트로 제한
topic 문자열 아니요 주제와 일치하는 프로젝트 반환
with_issues_enabled 부울 아니요 이슈 기능이 활성화된 프로젝트로 제한. 기본값은 false
with_merge_requests_enabled 부울 아니요 Merge Request 기능이 활성화된 프로젝트로 제한. 기본값은 false
with_shared 부울 아니요 이 그룹에 공유된 프로젝트 포함. 기본값은 true
include_subgroups 부울 아니요 이 그룹의 하위 그룹에 있는 프로젝트 포함. 기본값은 false
min_access_level 정수 아니요 현재 사용자가 적어도 이 역할 (access_level)을 가진 프로젝트로 제한
with_custom_attributes 부울 아니요 응답에 사용자 정의 속성을 포함(관리자 전용)
with_security_reports 부울 아니요 어떠한 빌드에도 보안 보고서 어티팩트가 있는 프로젝트만 반환. 이는 “보안 보고서가 활성화된” 프로젝트만 반환합니다. 기본값은 false. Ultimate 전용.

각주:

  1. 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
  }
]
note
그룹 내 프로젝트와 그룹과 공유된 프로젝트를 구별하기 위해 namespace 속성을 사용할 수 있습니다. 프로젝트가 그룹에 공유되면 요청을 위해 사용된 그룹과 다른 namespace를 가지고 있습니다.

그룹의 공유 프로젝트 디렉터리

이 그룹에 공유된 프로젝트 디렉터리을 가져옵니다. 인증 없이 액세스하면 공개된 공유 프로젝트만 반환됩니다.

기본적으로 이 요청은 API 결과가 페이지별로 20개씩 반환됩니다.

GET /groups/:id/projects/shared

매개변수:

속성 유형 필수 설명
id integer/string yes 인증된 사용자가 소유한 그룹의 ID 또는 URL 인코딩된 경로
archived boolean no 보관된 상태로 제한합니다.
visibility string no public, internal, 또는 private으로 가시성 제한
order_by string no 프로젝트를 id, name, path, created_at, updated_at, star_count 또는 last_activity_at 필드로 정렬하여 반환합니다. 기본값은 created_at
sort string no 프로젝트를 asc 또는 desc 순서로 정렬하여 반환합니다. 기본값은 desc
search string no 검색 기준과 일치하는 인증된 프로젝트 디렉터리을 반환합니다.
simple boolean no 각 프로젝트에 대해 제한된 필드만 반환합니다. 인증 없이는 단순 필드만 반환됩니다.
starred boolean no 현재 사용자가 즐겨찾기한 프로젝트로 제한합니다.
with_issues_enabled boolean no 이슈 기능이 활성화된 프로젝트로 제한합니다. 기본값은 false
with_merge_requests_enabled boolean no Merge Request 기능이 활성화된 프로젝트로 제한합니다. 기본값은 false
min_access_level integer no 현재 사용자가 적어도 이 역할(access_level)을 가진 프로젝트로 제한합니다.
with_custom_attributes boolean no 응답에 사용자 정의 속성을 포함합니다 (관리자 전용)

예시 응답:

[
   {
      "id":8,
      "description":"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":"7일",
         "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"
   }
]

그룹의 세부 정보

그룹의 모든 세부 정보를 가져옵니다. 이 엔드포인트는 그룹이 공개적으로 접근 가능한 경우 인증 없이 액세스할 수 있습니다. 인증된 경우, 사용자가 관리자이거나 그룹 소유자인 경우 그룹의 runners_tokenenabled_git_access_protocol도 반환됩니다.

GET /groups/:id

매개변수:

속성 유형 필수 설명
id integer/string yes 인증된 사용자가 소유한 그룹의 ID 또는 URL 인코딩된 경로
with_custom_attributes boolean no 응답에 사용자 정의 속성을 포함합니다 (관리자 전용).
with_projects boolean no 지정된 그룹에 속하는 프로젝트의 세부 정보를 포함합니다 (기본값은 true). (사용 예정, API v5에서 삭제 예정 예정. 그룹 내 모든 프로젝트의 세부 정보를 얻으려면 그룹의 프로젝트 디렉터리 엔드포인트를 사용하십시오.)
note
응답의 projectsshared_projects 속성은 사용 예정이며 API v5에서 삭제 예정입니다. 그룹 내 모든 프로젝트의 세부 정보를 얻으려면 그룹의 프로젝트 디렉터리 또는 그룹의 공유 프로젝트 디렉터리 엔드포인트 중 하나를 사용하십시오.
curl --header "PRIVATE-TOKEN: <your_access_token>" "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,
  ...
}

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

추가적인 응답 속성:

{
  "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,
  ...
}

매개변수 with_projects=false를 추가하면 프로젝트가 반환되지 않습니다.

curl --header "PRIVATE-TOKEN: <your_access_token>" "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
}

그룹 아바타 다운로드

그룹 아바타를 가져옵니다. 이 엔드포인트는 해당 그룹이 공개적으로 접근 가능한 경우에는 인증없이 접근할 수 있습니다.

GET /groups/:id/avatar
속성 유형 필수 설명
id integer/string yes 그룹의 ID

예시:

curl --header "PRIVATE-TOKEN: $GITLAB_LOCAL_TOKEN" \
  --remote-header-name \
  --remote-name \
  "https://gitlab.example.com/api/v4/groups/4/avatar"

새 그룹

note
GitLab SaaS에서는 부모 그룹이 없는 그룹을 생성하려면 GitLab UI를 사용해야 합니다. API를 사용하여 이 작업을 수행할 수 없습니다.

새로운 프로젝트 그룹을 생성합니다. 그룹을 생성할 수 있는 사용자에게만 사용할 수 있습니다.

POST /groups

매개변수:

속성 유형 필수 설명
name string yes 그룹의 이름
path string yes 그룹의 경로
auto_devops_enabled boolean no 이 그룹 내의 모든 프로젝트에 대해 기본 Auto DevOps 파이프라인으로 기본 설정합니다.
avatar mixed no 그룹의 아바타 이미지 파일
default_branch string no 그룹의 프로젝트의 기본 브랜치 이름. GitLab 16.11부터 도입됨.
default_branch_protection integer no GitLab 17.0에서 폐기됨. default_branch_protection_defaults를 사용하세요.
default_branch_protection_defaults hash no default_branch_protection_defaults의 옵션 참조
description string no 그룹의 설명
enabled_git_access_protocol string no Git 액세스에 대해 활성화된 프로토콜입니다. ssh, http, all 값을 허용하여 두 가지 프로토콜을 모두 허용합니다. GitLab 16.9부터 도입됨.
emails_disabled boolean no 이메일 알림을 비활성화합니다. emails_enabled를 대신 사용하세요. (GitLab 16.5에서 폐기됨)
emails_enabled boolean no 이메일 알림을 활성화합니다.
lfs_enabled boolean no 이 그룹의 프로젝트에서 대용량 파일 리포지터리(LFS)를 활성화/비활성화합니다.
mentions_disabled boolean no 그룹이 언급되는 기능을 비활성화합니다.
organization_id integer no 그룹의 조직 ID
parent_id integer no 중첩 그룹을 생성하기 위한 부모 그룹 ID
project_creation_level string no 개발자가 그룹 내에서 프로젝트를 생성할 수 있는지 여부를 결정합니다. noone (아무도), maintainer (Maintainer 역할 사용자), developer (Developer 또는 Maintainer 역할 사용자) 중 하나일 수 있습니다.
request_access_enabled boolean no 사용자가 회원 액세스를 요청할 수 있도록 허용합니다.
require_two_factor_authentication boolean no 이 그룹의 모든 사용자가 이중 인증을 설정하도록 요구합니다.
share_with_group_lock boolean no 이 그룹 내의 다른 그룹과의 프로젝트 공유를 방지합니다.
subgroup_creation_level string no 하위 그룹을 생성할 수 있는 권한입니다. owner (소유자) 또는 maintainer (Maintainer 역할 사용자)일 수 있습니다.
two_factor_grace_period integer no 이중 인증이 적용되기 전의 기간(시간 단위)입니다.
visibility string no 그룹의 가시성입니다. private, internal, or public 중 하나일 수 있습니다.
membership_lock boolean no 사용자가 이 그룹의 프로젝트에 추가되지 않도록 합니다. Premium 및 Ultimate 전용입니다.
extra_shared_runners_minutes_limit integer no 관리자만 설정할 수 있습니다. 이 그룹의 추가 컴퓨팅 분. Self-Managed, Premium 및 Ultimate 전용입니다.
shared_runners_minutes_limit integer no 관리자만 설정할 수 있습니다. 이 그룹의 월별 최대 컴퓨팅 분 수. nil (기본값; 시스템 기본값 상속), 0 (무제한), 또는 > 0 중 하나일 수 있습니다. Self-Managed, Premium 및 Ultimate 전용입니다.
wiki_access_level string no 위키 접근 수준입니다. disabled, private, 또는 enabled 중 하나일 수 있습니다. Premium 및 Ultimate 전용입니다.

default_branch_protection의 옵션

default_branch_protection 속성은 Developer 또는 Maintainer 역할 사용자가 해당 기본 브랜치로 푸시할 수 있는지 여부를 다음 표에 설명된 대로 결정합니다:

설명
0 보호 없음. Developer 또는 Maintainer 역할 사용자가 다음을 수행할 수 있습니다:
- 새 커밋 푸시
- 변경된 내용 강제 푸시
- 브랜치 삭제
1 부분적인 보호. Developer 또는 Maintainer 역할 사용자가 새 커밋을 푸시할 수 있습니다.
2 완전한 보호. Maintainer 역할 사용자만 새 커밋을 푸시할 수 있습니다.
3 푸시로부터 보호됨. Maintainer 역할 사용자가 다음을 수행할 수 있습니다:
- 새 커밋 푸시
- 변경된 내용 강제 푸시
- MR 승인
Developer 역할 사용자가 다음을 수행할 수 있습니다:
- MR 승인
4 초기 푸시 후 완전한 보호. Developer 역할 사용자가 빈 리포지터리에 커밋을 푸시할 수 있습니다.
Maintainer 역할 사용자가 다음을 수행할 수 있습니다:
- 새 커밋 푸시
- MR 승인

default_branch_protection_defaults의 옵션

default_branch_protection_defaults 속성은 기본 브랜치 보호 기본값을 설명합니다. 모든 매개변수가 선택 사항입니다.

유형 설명
allowed_to_push array 푸시할 수 있는 액세스 수준의 배열. Developer (30) 또는 Maintainer (40)를 지원합니다.
allow_force_push boolean 모든 푸시 액세스 사용자에 대해 강제 푸시를 허용합니다.
allowed_to_merge array Merge할 수 있는 액세스 수준의 배열. Developer (30) 또는 Maintainer (40)를 지원합니다.
developer_can_initial_push boolean 개발자가 초기 푸시를 수행할 수 있습니다.

새 하위 그룹

새 그룹 만들기와 유사합니다. 그룹 디렉터리 호출에서 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> }' \
     "https://gitlab.example.com/api/v4/groups/"

프로젝트를 그룹으로 이동

프로젝트를 그룹 네임스페이스로 이동합니다. 인스턴스 관리자만 사용할 수 있지만, 대체 API 엔드포인트을 사용하면 인스턴스에서 관리자 액세스가 필요하지 않습니다. 프로젝트를 이동하는 동안 프로젝트 리포지터리에 태그 달린 패키지가 있는 경우 이동이 실패할 수 있습니다.

POST  /groups/:id/projects/:project_id

매개변수:

속성 타입 필수 설명
id integer/string yes 대상 그룹의 ID 또는 URL-인코딩된 경로
project_id integer/string yes 프로젝트의 ID 또는 URL-인코딩된 경로
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/groups/4/projects/56"

사용자가 그룹을 이전할 수 있는 그룹 가져오기

사용자가 그룹을 이전할 수 있는 그룹의 디렉터리을 검색합니다.

GET /groups/:id/transfer_locations
속성 타입 필수 설명
id integer or string Yes 전송할 그룹의 ID 또는 URL-인코딩된 경로.
search string No 검색할 그룹 이름입니다.

예시 요청:

curl --request GET "https://gitlab.example.com/api/v4/groups/1/transfer_locations"

예시 응답:

[
  {
    "id": 27,
    "web_url": "https://gitlab.example.com/groups/gitlab",
    "name": "GitLab",
    "avatar_url": null,
    "full_name": "GitLab",
    "full_path": "GitLab"
  },
  {
    "id": 31,
    "web_url": "https://gitlab.example.com/groups/foobar",
    "name": "FooBar",
    "avatar_url": null,
    "full_name": "FooBar",
    "full_path": "FooBar"
  }
]

그룹을 새 상위 그룹으로 이전/하위 그룹을 최상위 그룹으로 전환

그룹을 새 상위 그룹으로 이동하거나 하위 그룹을 최상위 그룹으로 전환합니다. 관리자 및 사용자:

POST  /groups/:id/transfer

매개변수:

속성 타입 필수 설명
id integer yes 전송할 그룹의 ID.
group_id integer no 새 상위 그룹의 ID. 지정되지 않으면 전송할 그룹이 대신 최상위 그룹으로 전환됩니다.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/groups/4/transfer?group_id=7"

그룹 업데이트

  • unique_project_download_limit, unique_project_download_limit_interval_in_seconds, 및 unique_project_download_limit_allowlist가 기본적으로 사용되지 않습니다. GitLab 15.3에서 도입됨, limit_unique_project_downloads_per_namespace_user라는 플래그가 있습니다.

프로젝트 그룹을 업데이트합니다. 그룹 소유자 및 관리자만 사용할 수 있습니다.

PUT /groups/:id
속성 타입 필수 설명
id integer yes 그룹의 ID.
name string no 그룹의 이름.
path string no 그룹의 경로.
auto_devops_enabled boolean no 이 그룹의 모든 프로젝트에 대해 Auto DevOps 파이프라인을 기본값으로 설정합니다.
avatar mixed no 그룹 아바타의 이미지 파일.
default_branch string no 그룹의 프로젝트에 대한 기본 브랜치 이름. GitLab 16.11에서 도입됨.
default_branch_protection integer no GitLab 17.0에서 사용 중닩됨. 대신 default_branch_protection_defaults를 사용하십시오.
default_branch_protection_defaults hash no default_branch_protection_defaults에 대한 옵션은 여기를 참조하십시오.
description string no 그룹의 설명.
enabled_git_access_protocol string no Git 액세스에 대한 활성화된 프로토콜. 허용되는 값은: ssh, http, 및 all (두 프로토콜을 허용)입니다. GitLab 16.9에서 도입됨.
emails_disabled boolean no (GitLab 16.5에서 사용 중닩됨. 이메일 알림 비활성화. 대신 emails_enabled를 사용하십시오.
emails_enabled boolean no 이메일 알림 활성화.
lfs_enabled boolean no 이 그룹의 프로젝트에서 대형 파일 저장 (LFS)을 활성화/비활성화합니다.
mentions_disabled boolean no 그룹의 언급 기능 비활성화.
prevent_sharing_groups_outside_hierarchy boolean no 그룹 계층 외부에서의 그룹 공유 방지. 이 속성은 최상위 그룹에서만 사용할 수 있습니다.
project_creation_level string no 개발자가 그룹 내에서 프로젝트를 생성할 수 있는지 여부를 결정합니다. noone (아무도), maintainer (Maintainer 역할의 사용자), 또는 developer (Developer 또는 Maintainer 역할의 사용자)일 수 있습니다.
request_access_enabled boolean no 사용자가 멤버 액세스를 요청할 수 있도록 합니다.
require_two_factor_authentication boolean no 이 그룹의 모든 사용자가 이중 인증 설정을 해야 하는지 여부를 결정합니다.
shared_runners_setting string no shared_runners_setting에 대한 옵션은 여기를 참조하십시오. 그룹의 하위 그룹 및 프로젝트에 대한 공유 러너를 활성화 또는 비활성화합니다.
share_with_group_lock boolean no 이 그룹 내에서 다른 그룹과 프로젝트를 공유하는 것을 방지합니다.
subgroup_creation_level string no 하위 그룹을 생성할 수 있는 권한을 결정합니다. owner (소유자), 또는 maintainer (Maintainer 역할의 사용자)일 수 있습니다.
two_factor_grace_period integer no 이중 인증이 강제되기 전까지의 시간(시간 단위).
visibility string no 그룹의 가시성 수준. private, internal, 또는 public이 될 수 있습니다.
extra_shared_runners_minutes_limit integer no 관리자만 설정할 수 있습니다. 이 그룹에 대한 추가 계산 분. Self-Managed, Premium 및 Ultimate 전용.
file_template_project_id integer no 커스텀 파일 템플릿을 로드할 프로젝트의 ID. Premium 및 Ultimate 전용.
membership_lock boolean no 사용자가 이 그룹의 프로젝트에 추가될 수 없습니다. Premium 및 Ultimate 전용.
prevent_forking_outside_group boolean no 활성화되면 사용자는 이 그룹에서 외부 네임스페이스로 프로젝트를 포크할 수 없습니다. Premium 및 Ultimate 전용.
shared_runners_minutes_limit integer no 관리자만 설정할 수 있습니다. 이 그룹에 대한 월별 최대 계산 분. nil (기본; 시스템 기본값 상속), 0 (무제한), 또는 > 0 일 수 있습니다. Self-Managed, Premium 및 Ultimate 전용.
unique_project_download_limit integer no 사용자가 금지되기 전에 지정된 시간 동안 다운로드할 수 있는 고유 프로젝트의 최대 수. 최상위 그룹에서만 사용할 수 있습니다. 기본값: 0, 최대값: 10,000. Ultimate 전용.
unique_project_download_limit_interval_in_seconds integer no 사용자가 금지되기 전에 최대 양의 프로젝트를 다운로드할 수 있는 시간 기간. 최상위 그룹에서만 사용할 수 있습니다. 기본값: 0, 최대값: 864,000초 (10일). Ultimate 전용.
unique_project_download_limit_allowlist array of strings no 고유 프로젝트 다운로드 제한에서 제외된 사용자명 디렉터리. 최상위 그룹에서만 사용할 수 있습니다. 기본값: [], 최대값: 100 사용자명. Ultimate 전용.
unique_project_download_limit_alertlist array of integers no 고유 프로젝트 다운로드 제한을 초과한 경우 이메일을 받는 사용자 ID 디렉터리. GitLab 15.9에서 도입됨. Ultimate 전용.
auto_ban_user_on_excessive_projects_download boolean no 활성화되면 사용자가 unique_project_download_limitunique_project_download_limit_interval_in_seconds로 지정된 시간 동안 최대 양의 프로젝트를 다운로드하면 그룹에서 자동으로 금지됩니다. GitLab 15.4에서 도입됨. Ultimate 전용.
ip_restriction_ranges string no 그룹 액세스를 제한하기 위해 쉼표로 구분된 IP 주소 또는 서브넷 마스크 디렉터리. GitLab 15.4에서 도입됨. Premium 및 Ultimate 전용.
wiki_access_level string no 위키 액세스 수준. disabled, private, 또는 enabled가 될 수 있습니다. Premium 및 Ultimate 전용.
math_rendering_limits_enabled boolean no 이 그룹에 대한 수학 렌더링 한도를 사용하는지 여부를 나타냅니다.
lock_math_rendering_limits_enabled boolean no 모든 하위 그룹에 대한 수학 렌더링 한도가 잠겨 있는지 나타냅니다.
duo_features_enabled boolean no 이 그룹에 대해 GitLab Duo 기능이 활성화되었는지를 나타냅니다. GitLab 16.10에서 도입됨. Self-Managed, Premium 및 Ultimate 전용.
lock_duo_features_enabled boolean no GitLab Duo 기능이 활성화되었는지 설정이 하위 그룹에 강제되는지를 나타냅니다. GitLab 16.10에서 도입됨. Self-Managed, Premium 및 Ultimate 전용.

참고 사항: 응답에 있는 projectsshared_projects 속성은 API v5에서 제거될 예정이며, 삭제가 예정된 속성입니다. 그룹 내의 모든 프로젝트의 세부 정보를 얻으려면 그룹의 프로젝트 디렉터리 또는 그룹의 공유 프로젝트 디렉터리 엔드포인트를 사용하십시오.

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
     "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",
  "

### `shared_runners_setting` 옵션

`shared_runners_setting` 속성은 그룹의 서브그룹 및 프로젝트에 대한 공유 러너의 활성화 여부를 결정합니다.

| 값                           | 설명                                                                                                                             |
|------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
| `enabled`                    | 이 그룹의 모든 프로젝트 및 서브그룹에 대해 공유 러너를 활성화합니다.                                                             |
| `disabled_and_overridable`   | 이 그룹의 모든 프로젝트 및 서브그룹에 대해 공유 러너를 비활성화하지만, 서브그룹이이 설정을 재정의할 수 있습니다.                 |
| `disabled_and_unoverridable` | 이 그룹의 모든 프로젝트 및 서브그룹에 대해 공유 러너를 비활성화하며, 서브그룹이이 설정을 재정의하는 것을 방지합니다.             |
| `disabled_with_override`     | (사용 중단됨. `disabled_and_overridable`을 사용하십시오) 이 그룹의 모든 프로젝트 및 서브그룹에 대해 공유 러너를 비활성화하지만, 서브그룹이이 설정을 재정의할 수 있습니다. |

### 그룹 아바타 업로드

파일 시스템에서 아바타 파일을 업로드하려면 `--form` 인수를 사용하십시오. 이렇게 하면
curl이 `Content-Type: multipart/form-data` 헤더를 사용하여 데이터를 게시하게 됩니다.
`file=` 매개변수는 파일 시스템의 파일을 가리켜야 하며, `@`로 선행되어야 합니다. 예:

```shell
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/22" \
     --form "avatar=@/tmp/example.png"

그룹 아바타 제거

그룹 아바타를 제거하려면 avatar 속성에 공백 값을 사용하십시오.

예시 요청:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/22" \
     --data "avatar="

그룹 삭제

그룹 소유자 및 관리자에게만 사용할 수 있습니다.

이 엔드포인트:

  • Premium 및 Ultimate 티어에서 그룹을 삭제로 표시합니다. 기본적으로 7일 후에 삭제가 발생하지만 인스턴스 설정에서 보관 기간을 변경할 수 있습니다.
  • 프리 티어에서 즉시 그룹을 제거하고 그룹 내의 모든 프로젝트를 삭제하는 백그라운드 작업을 대기열에 넣습니다.
  • 서브그룹이 삭제로 표시된 경우 (GitLab 15.4 이상), 그룹을 즉시 삭제합니다. 이 엔드포인트에서는 최상위 그룹을 즉시 삭제하지 않습니다.
DELETE /groups/:id

매개변수:

속성 유형 필수 설명
id 정수/문자열 그룹의 ID 또는 URL 인코딩된 경로
permanently_remove 부울/문자열 아니 삭제로 표시된 서브그룹을 즉시 삭제합니다. GitLab 15.4에서 도입됨. Premium 및 Ultimate 전용.
full_path 문자열 아니 permanently_remove와 함께 사용할 서브그룹의 전체 경로. GitLab 15.4에서 도입됨. 서브그룹 경로를 찾으려면 그룹 세부 정보를 확인하세요. Premium 및 Ultimate 전용.

사용자가 권한을 가지고 있으면 응답은 202 Accepted입니다.

note
GitLab.com 그룹은 구독에 연결되어 있는 경우 삭제할 수 없습니다. 해당 그룹을 삭제하려면 먼저 구독을 다른 그룹에 연결하십시오.

삭제로 표시된 그룹 복원

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

삭제로 표시된 그룹을 복원합니다.

POST /groups/:id/restore

매개변수:

속성 유형 필수 설명
id 정수/문자열 그룹의 ID 또는 URL 인코딩된 경로

그룹 검색

이름 또는 경로에서 문자열과 일치하는 모든 그룹을 가져옵니다.

GET /groups?search=foobar
[
  {
    "id": 1,
    "name": "Foobar Group",
    "path": "foo-bar",
    "description": "흥미로운 그룹"
  }
]

제공된 사용자 디렉터리

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

특정 그룹에서 프로비저닝된 사용자 디렉터리을 가져옵니다. 서브그룹은 포함되지 않습니다.

그룹에서 적어도 Maintainer 역할이 필요합니다.

GET /groups/:id/provisioned_users

매개변수:

속성 유형 필수 설명
id 정수/문자열 그룹의 ID 또는 URL 인코딩된 경로
username 문자열 아니 특정 사용자 이름의 단일 사용자를 반환합니다.
search 문자열 아니 이름, 이메일, 사용자 이름으로 사용자를 검색합니다.
active 부울 아니 활성 사용자만 반환합니다.
blocked 부울 아니 차단된 사용자만 반환합니다.
created_after 일시 아니 지정된 시간 이후에 생성된 사용자를 반환합니다.
created_before 일시 아니 지정된 시간 이전에 생성된 사용자를 반환합니다.

예시 응답:

[
  {
    "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": "",
    "skype": "",
    "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
  },
  ...
]

그룹 사용자 디렉터리

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated Status: Experiment

그룹의 사용자 디렉터리을 가져옵니다. 이 엔드포인트는 현재 멤버십 여부에 관계없이 최상위 그룹과 관련된 사용자를 반환합니다. 예를 들어, 그룹 또는 하위 그룹에서 만든 SAML 식별자가 연결된 사용자 또는 서비스 계정이 있습니다.

이 엔드포인트는 실험적이며 사전 통지없이 변경 또는 삭제될 수 있습니다.

그룹에서 Owner 역할이 필요합니다.

GET /groups/:id/users
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/345/users?include_saml_users=true&include_service_accounts=true"

매개변수:

속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path.
include_saml_users boolean yes (설명 참조) SAML 식별자가 있는 사용자를 포함합니다. 이 값이나 include_service_accounts 중 하나는 true여야 합니다.
include_service_accounts boolean yes (설명 참조) 서비스 계정 사용자를 포함합니다. 이 값이나 include_saml_users 중 하나는 true여야 합니다.
search string no 사용자의 이름, 이메일, 사용자 이름으로 검색합니다.

성공할 경우, 200 OK 및 다음과 같은 응답 속성을 반환합니다:

응답 예시:

[
  {
    "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": "",
    "skype": "",
    "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
  },
  ...
]

서비스 계정

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

서비스 계정 사용자 생성

  • GitLab 16.1에서 도입되었습니다.
  • 기본 이름이 Service account user이고 사용자 이름이 자동으로 생성된 기능은 GitLab 16.10에서 도입되었습니다.

서비스 계정 사용자를 생성합니다. 사용자 이름과 이름을 지정할 수 있습니다. 이러한 속성을 지정하지 않으면 기본 이름은 Service account user이고 사용자 이름은 자동으로 생성됩니다.

이 API 엔드포인트는 최상위 그룹에서만 작동합니다. 하위 그룹에서는 작동하지 않습니다.

POST /groups/:id/service_accounts
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/345/service_accounts"

지원되는 속성:

속성 유형 필수 설명
name string no 사용자의 이름
username string no 사용자의 사용자 이름

응답 예시:

{
  "id": 57,
  "username": "service_account_group_345_6018816a18e515214e0c34c2b33523fc",
  "name": "Service account user"
}

서비스 계정 사용자를 위한 개인 액세스 토큰 생성

POST /groups/:id/service_accounts/:user_id/personal_access_tokens

이 API 엔드포인트는 최상위 그룹에서만 작동합니다. 하위 그룹에서는 작동하지 않습니다.

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/35/service_accounts/71/personal_access_tokens" --data "scopes[]=api,read_user,read_repository" --data "name=service_accounts_token"

응답 예시:

{
  "id":6,
  "name":"service_accounts_token",
  "revoked":false,
  "created_at":"2023-06-13T07:47:13.900Z",
  "scopes":["api"],
  "user_id":71,
  "last_used_at":null,
  "active":true,
  "expires_at":"2024-06-12",
  "token":"<token_value>"
}
속성 유형 필수 설명
name string yes 개인 액세스 토큰의 이름
scopes array yes 개인 액세스 토큰의 스코프 배열입니다. 가능한 값은 개인 액세스 토큰 스코프를 참조하세요.
expires_at date no 개인 액세스 토큰 만료 날짜. 비워 둘 경우, 토큰은 개인 액세스 토큰 만료의 기본 규칙을 따릅니다.

서비스 계정 사용자를 위한 개인 액세스 토큰 회전

POST /groups/:id/service_accounts/:user_id/personal_access_tokens/:token_id/rotate

이 API 엔드포인트는 최상위 그룹에서만 작동합니다. 하위 그룹에서는 작동하지 않습니다.

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/35/service_accounts/71/personal_access_tokens/6/rotate"

응답 예시:

{
  "id":7,
  "name":"service_accounts_token",
  "revoked":false,
  "created_at":"2023-06-13T07:54:49.962Z",
  "scopes":["api"],
  "user_id":71,
  "last_used_at":null,
  "active":true,
  "expires_at":"2023-06-20",
  "token":"<token_value>"
}

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

그룹 훅 및 웹훅으로도 불립니다. 시스템 전역인 시스템 훅 및 프로젝트 단위인 프로젝트 훅과는 다릅니다.

그룹 훅 디렉터리

그룹 훅 디렉터리을 가져옵니다.

GET /groups/:id/hooks
속성 유형 필수여부 설명
id integer/string yes 그룹의 ID 또는 URL 인코딩된 경로

그룹 훅 가져오기

특정 그룹의 훅을 가져옵니다.

속성 유형 필수여부 설명
id integer/string yes 그룹의 ID 또는 URL 인코딩된 경로
hook_id integer yes 그룹 훅의 ID
GET /groups/:id/hooks/:hook_id
{
  "id": 1,
  "url": "http://example.com/hook",
  "name": "Hook name",
  "description": "Hook description",
  "group_id": 3,
  "push_events": true,
  "push_events_branch_filter": "",
  "issues_events": true,
  "confidential_issues_events": true,
  "merge_requests_events": true,
  "tag_push_events": true,
  "note_events": true,
  "confidential_note_events": true,
  "job_events": true,
  "pipeline_events": true,
  "wiki_page_events": true,
  "deployment_events": true,
  "releases_events": true,
  "subgroup_events": true,
  "member_events": true,
  "enable_ssl_verification": true,
  "repository_update_events": false,
  "alert_status": "executable",
  "disabled_until": null,
  "url_variables": [ ],
  "created_at": "2012-10-12T17:04:47Z",
  "resource_access_token_events": true,
  "custom_webhook_template": "{\"event\":\"{{object_kind}}\"}"
}

그룹 훅 추가

지정된 그룹에 훅을 추가합니다.

POST /groups/:id/hooks
속성 유형 필수여부 설명
id integer/string yes 그룹의 ID 또는 URL 인코딩된 경로
url string yes 훅 URL
name string no 훅의 이름 (GitLab 17.1에서 소개)
description string no 훅의 설명 (GitLab 17.1에서 소개)
push_events boolean no 푸시 이벤트에서 훅 트리거
push_events_branch_filter string no 일치하는 브랜치에서의 푸시 이벤트에서 훅 트리거
issues_events boolean no 이슈 이벤트에서 훅 트리거
confidential_issues_events boolean no 기밀 이슈 이벤트에서 훅 트리거
merge_requests_events boolean no Merge Request 이벤트에서 훅 트리거
tag_push_events boolean no 태그 푸시 이벤트에서 훅 트리거
note_events boolean no 노트 이벤트에서 훅 트리거
confidential_note_events boolean no 기밀 노트 이벤트에서 훅 트리거
job_events boolean no 작업 이벤트에서 훅 트리거
pipeline_events boolean no 파이프라인 이벤트에서 훅 트리거
wiki_page_events boolean no 위키 페이지 이벤트에서 훅 트리거
deployment_events boolean no 배포 이벤트에서 훅 트리거
releases_events boolean no 릴리스 이벤트에서 훅 트리거
subgroup_events boolean no 서브그룹 이벤트에서 훅 트리거
member_events boolean no 멤버 이벤트에서 훅 트리거
enable_ssl_verification boolean no 훅 트리거 시 SSL 검증 수행
token string no 받은 페이로드를 유효성 검사하기 위한 비밀 토큰; 응답에는 반환되지 않음
resource_access_token_events boolean no 프로젝트 액세스 토큰 만료 이벤트에서 훅 트리거
custom_webhook_template string no 훅의 커스텀 웹훅 템플릿

그룹 훅 편집

지정된 그룹의 훅을 편집합니다.

PUT /groups/:id/hooks/:hook_id
속성 유형 필수여부 설명
id integer 또는 string yes 그룹의 ID 또는 URL 인코딩된 경로.
hook_id integer yes 그룹 훅의 ID.
url string yes 훅 URL.
name string no 훅의 이름 (GitLab 17.1에서 소개).
description string no 훅의 설명 (GitLab 17.1에서 소개).
push_events boolean no 푸시 이벤트에서 훅 트리거.
push_events_branch_filter string no 일치하는 브랜치에서의 푸시 이벤트에서 훅 트리거.
issues_events boolean no 이슈 이벤트에서 훅 트리거.
confidential_issues_events boolean no 기밀 이슈 이벤트에서 훅 트리거.
merge_requests_events boolean no Merge Request 이벤트에서 훅 트리거.
tag_push_events boolean no 태그 푸시 이벤트에서 훅 트리거.
note_events boolean no 노트 이벤트에서 훅 트리거.
confidential_note_events boolean no 기밀 노트 이벤트에서 훅 트리거.
job_events boolean no 작업 이벤트에서 훅 트리거.
pipeline_events boolean no 파이프라인 이벤트에서 훅 트리거.
wiki_page_events boolean no 위키 페이지 이벤트에서 훅 트리거.
deployment_events boolean no 배포 이벤트에서 훅 트리거.
releases_events boolean no 릴리스 이벤트에서 훅 트리거.
subgroup_events boolean no 서브그룹 이벤트에서 훅 트리거.
member_events boolean no 멤버 이벤트에서 훅 트리거.
enable_ssl_verification boolean no 훅 트리거 시 SSL 검증 수행.
service_access_tokens_expiration_enforced boolean no 서비스 계정 액세스 토큰에 만료 날짜가 있어야 함.
token string no 받은 페이로드를 유효성 검사하기 위한 비밀 토큰. 웹훅 URL을 변경하면 시크릿 토큰이 재설정되고 유지되지 않습니다.
resource_access_token_events boolean no 프로젝트 액세스 토큰 만료 이벤트에서 훅 트리거.
custom_webhook_template string no 훅의 커스텀 웹훅 템플릿.

그룹 후크 삭제

그룹에서 후크를 제거합니다. 이 방법은 멱등성이 있으며 여러 번 호출할 수 있습니다. 후크가 있는지 여부에 상관없이 작동합니다.

DELETE /groups/:id/hooks/:hook_id
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
hook_id integer yes 그룹 후크의 ID

그룹 감사 이벤트

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

그룹 감사 이벤트는 그룹 감사 이벤트 API를 통해 액세스할 수 있습니다.

LDAP로 그룹 동기화

Tier: Premium, Ultimate Offering: Self-Managed

해당 그룹을 연결된 LDAP 그룹과 동기화합니다. 그룹 소유자 및 관리자만 사용할 수 있습니다.

POST /groups/:id/ldap_sync

매개변수:

  • id (필수) - 사용자 그룹의 ID 또는 경로

그룹 구성원

그룹 구성원 문서를 참조하십시오.

LDAP 그룹 링크

LDAP 그룹 링크를 나열하고 추가하고 삭제합니다.

LDAP 그룹 링크 나열

Tier: Premium, Ultimate Offering: Self-Managed

LDAP 그룹 링크를 나열합니다.

GET /groups/:id/ldap_group_links
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path

CN 또는 필터로 LDAP 그룹 링크 추가

Tier: Premium, Ultimate Offering: Self-Managed

CN 또는 필터를 사용하여 LDAP 그룹 링크를 추가합니다. 필터를 사용한 그룹 링크 추가는 Premium 및 Ultimate 티어에서만 지원됩니다.

POST /groups/:id/ldap_group_links
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
cn string no LDAP 그룹의 CN
filter string no 그룹의 LDAP 필터
group_access integer yes LDAP 그룹 구성원을 위한 역할(access_level)
provider string yes LDAP 그룹 링크의 LDAP 제공자
note
LDAP 그룹 링크를 정의하려면 cn 또는 filter 중 하나를 제공하되 둘 다 제공하지 마십시오.

LDAP 그룹 링크 삭제

Tier: Premium, Ultimate Offering: Self-Managed

LDAP 그룹 링크를 삭제합니다. 사용이 중단된 기능으로 향후 릴리스에서 제거될 예정입니다.

DELETE /groups/:id/ldap_group_links/:cn
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
cn string yes LDAP 그룹의 CN

특정 LDAP 제공자의 LDAP 그룹 링크를 삭제합니다. 사용이 중단된 기능으로 향후 릴리스에서 제거될 예정입니다.

DELETE /groups/:id/ldap_group_links/:provider/:cn
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
cn string yes LDAP 그룹의 CN
provider string yes LDAP 그룹 링크의 LDAP 제공자

CN 또는 필터로 LDAP 그룹 링크 삭제

Tier: Premium, Ultimate Offering: Self-Managed

CN 또는 필터를 사용하여 LDAP 그룹 링크를 삭제합니다. 필터별 삭제는 Premium 및 Ultimate 티어에서만 지원됩니다.

DELETE /groups/:id/ldap_group_links
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
cn string no LDAP 그룹의 CN
filter string no 그룹의 LDAP 필터
provider string yes LDAP 그룹 링크의 LDAP 제공자
note
LDAP 그룹 링크를 삭제하려면 cn 또는 filter 중 하나를 제공하되 둘 다 제공하지 마십시오.

SAML 그룹 링크

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

SAML 그룹 링크를 나열하고 가져오고 추가하고 삭제합니다.

SAML 그룹 링크 나열

SAML 그룹 링크를 나열합니다.

GET /groups/:id/saml_group_links

지원되는 속성:

속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path

성공하면 200을 반환하며 다음과 같은 응답 속성을 반환합니다:

속성 유형 설명
[].name string SAML 그룹의 이름
[].access_level integer SAML 그룹 구성원을 위한 역할(access_level). 해당 속성은 GitLab 15.3.0에서 GitLab 15.3.3까지 string 유형이었습니다.
[].member_role_id integer SAML 그룹 구성원을 위한 구성원 역할 ID(member_role_id)

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/saml_group_links"

예시 응답:

[
  {
    "name": "saml-group-1",
    "access_level": 10,
    "member_role_id": 12
  },
  {
    "name": "saml-group-2",
    "access_level": 40,
    "member_role_id": 99
  }
]

SAML 그룹 링크 가져오기

그룹의 SAML 그룹 링크를 가져옵니다.

GET /groups/:id/saml_group_links/:saml_group_name

지원되는 속성:

속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL로 인코딩된 경로
saml_group_name string yes SAML 그룹의 이름

성공하면 200 및 다음과 같은 응답 속성이 반환됩니다:

속성 유형 설명
name string SAML 그룹의 이름
access_level integer SAML 그룹의 구성원을 위한 역할(access_level). 해당 속성은 GitLab 15.3.0부터 GitLab 15.3.3까지 문자열 유형이었습니다.
member_role_id integer SAML 그룹의 구성원을 위한 구성원 역할 ID(member_role_id).

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/saml_group_links/saml-group-1"

예시 응답:

{
"name": "saml-group-1",
"access_level": 10,
"member_role_id": 12
}

SAML 그룹 링크 추가

그룹에 SAML 그룹 링크를 추가합니다.

POST /groups/:id/saml_group_links

지원되는 속성:

속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL로 인코딩된 경로
saml_group_name string yes SAML 그룹의 이름
access_level integer yes SAML 그룹의 구성원을 위한 역할(access_level)
member_role_id integer no SAML 그룹의 구성원을 위한 구성원 역할 ID(member_role_id)

성공하면 201 및 다음과 같은 응답 속성이 반환됩니다:

속성 유형 설명
name string SAML 그룹의 이름
access_level integer SAML 그룹의 구성원을 위한 역할(access_level). 해당 속성은 GitLab 15.3.0부터 GitLab 15.3.3까지 문자열 유형이었습니다.
member_role_id integer SAML 그룹의 구성원을 위한 구성원 역할 ID(member_role_id).

예시 요청:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data '{ "saml_group_name": "<your_saml_group_name`>", "access_level": <chosen_access_level>, "member_role_id": <chosen_member_role_id> }' --url  "https://gitlab.example.com/api/v4/groups/1/saml_group_links"

예시 응답:

{
"name": "saml-group-1",
"access_level": 10,
"member_role_id": 12
}

SAML 그룹 링크 삭제

그룹의 SAML 그룹 링크를 삭제합니다.

DELETE /groups/:id/saml_group_links/:saml_group_name

지원되는 속성:

속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL로 인코딩된 경로
saml_group_name string yes SAML 그룹의 이름

성공하면 응답 본문 없이 204 상태 코드가 반환됩니다.

예시 요청:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/saml_group_links/saml-group-1"

그룹 내 네임스페이스

기본적으로 API 결과가 페이지로 구분되어 있기 때문에 한 번에 그룹에서는 20개의 네임스페이스만 받습니다.

추가로 받으려면(최대 100까지), API 호출에 다음을 인자로 전달하세요:

/groups?per_page=100

그리고 다른 페이지로 전환하려면 다음을 추가하세요:

/groups?per_page=100&page=2

그룹 뱃지

그룹 뱃지 문서에서 자세히 읽어보세요.

그룹 가져오기/내보내기

그룹 가져오기/내보내기에 대해 자세히 읽어보세요:

그룹과 그룹 공유

이 엔드포인트는 그룹을 다른 그룹과 공유하는 링크를 생성하고 삭제합니다. 자세한 정보는 GitLab 그룹 페이지의 관련 토론을 참조하세요.

그룹을 다른 그룹과 공유하는 링크 생성

다른 그룹과 공유에 대한 링크를 생성합니다. 성공하면 200그룹 세부 정보가 반환됩니다.

POST /groups/:id/share
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL로 인코딩된 경로
group_id integer yes 공유할 그룹의 ID
group_access integer yes 그룹에 부여할 역할(access_level)
expires_at string no ISO 8601 형식의 공유 만료 날짜: 2016-09-26

다른 그룹과 공유 중인 그룹 링크 삭제

그룹을 다른 그룹과 공유 링크를 삭제합니다. 성공하면 204와 내용이 없는 상태입니다.

DELETE /groups/:id/share/:group_id
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL로 인코딩된 경로
group_id integer yes 공유할 그룹의 ID

푸시 규칙

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

그룹 푸시 규칙 가져오기

그룹의 푸시 규칙을 가져옵니다.

그룹 소유자 및 관리자만 사용할 수 있습니다.

GET /groups/:id/push_rule
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL로 인코딩된 경로
{
  "id": 2,
  "created_at": "2020-08-17T19:09:19.580Z",
  "commit_committer_check": true,
  "commit_committer_name_check": true,
  "reject_unsigned_commits": false,
  "commit_message_regex": "[a-zA-Z]",
  "commit_message_negative_regex": "[x+]",
  "branch_name_regex": "[a-z]",
  "deny_delete_tag": true,
  "member_check": true,
  "prevent_secrets": true,
  "author_email_regex": "^[A-Za-z0-9.]+@gitlab.com$",
  "file_name_regex": "(exe)$",
  "max_file_size": 100
}

그룹 푸시 규칙 추가

지정된 그룹에 푸시 규칙을 추가합니다.

그룹 소유자 및 관리자만 사용할 수 있습니다.

POST /groups/:id/push_rule
속성 유형 필수 여부 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
deny_delete_tag boolean no 태그 삭제 거부
member_check boolean no GitLab 사용자만 커밋 작성 허용
prevent_secrets boolean no 비밀 정보를 포함할 가능성이 있는 파일 거부
commit_committer_name_check boolean no 사용자는 커밋 작성자 이름이 GitLab 계정 이름과 일치할 때만 리포지터리로 커밋을 푸시할 수 있습니다
commit_message_regex string no 모든 커밋 메시지는 예를 들어 Fixed \d+\..*와 같이 제공된 정규 표현식과 일치해야 합니다
commit_message_negative_regex string no 이 속성에서 제공된 정규 표현식과 일치하는 커밋 메시지는 허용되지 않습니다. 예: ssh\:\/\/
branch_name_regex string no 모든 브랜치 이름은 예를 들어 (feature|hotfix)/*와 같이 제공된 정규 표현식과 일치해야 합니다
author_email_regex string no 모든 커밋 작성자 이메일은 이 속성에서 제공된 정규 표현식과 일치해야 합니다. 예를 들어 @my-company.com$
file_name_regex string no 이 속성에서 제공된 정규 표현식과 일치하는 파일 이름은 허용되지 않습니다. 예: (jar|exe)$
max_file_size integer no 허용된 최대 파일 크기(MB)
commit_committer_check boolean no 확인된 이메일을 사용하여 푸시된 커밋만 허용됩니다
reject_unsigned_commits boolean no 서명된 커밋만 허용됩니다
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/19/push_rule"

응답:

{
    "id": 19,
    "created_at": "2020-08-31T15:53:00.073Z",
    "commit_committer_name_check": false,
    "commit_message_regex": "[a-zA-Z]",
    "commit_message_negative_regex": "[x+]",
    "branch_name_regex": null,
    "deny_delete_tag": false,
    "member_check": false,
    "prevent_secrets": false,
    "author_email_regex": "^[A-Za-z0-9.]+@gitlab.com$",
    "file_name_regex": null,
    "max_file_size": 100
}

그룹 푸시 규칙 편집

지정된 그룹의 푸시 규칙을 편집합니다.

그룹 소유자 및 관리자만 사용할 수 있습니다.

PUT /groups/:id/push_rule
속성 유형 필수 여부 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
deny_delete_tag boolean no 태그 삭제 거부
member_check boolean no 기존 GitLab 사용자에 의해 작성된 커밋에 제한을 둡니다
prevent_secrets boolean no 비밀 정보를 포함할 가능성이 있는 파일 거부
commit_committer_name_check boolean no 사용자는 커밋 작성자 이름이 GitLab 계정 이름과 일치할 때만 리포지터리로 커밋을 푸시할 수 있습니다
commit_message_regex string no 모든 커밋 메시지는 예를 들어 Fixed \d+\..*와 같이 제공된 정규 표현식과 일치해야 합니다
commit_message_negative_regex string no 이 속성에서 제공된 정규 표현식과 일치하는 커밋 메시지는 허용되지 않습니다. 예: ssh\:\/\/
branch_name_regex string no 모든 브랜치 이름은 예를 들어 (feature|hotfix)/*와 같이 제공된 정규 표현식과 일치해야 합니다
author_email_regex string no 모든 커밋 작성자 이메일은 이 속성에서 제공된 정규 표현식과 일치해야 합니다. 예를 들어 @my-company.com$
file_name_regex string no 이 속성에서 제공된 정규 표현식과 일치하는 파일 이름은 허용되지 않습니다. 예: (jar|exe)$
max_file_size integer no 허용된 최대 파일 크기(MB)
commit_committer_check boolean no 확인된 이메일을 사용하여 푸시된 커밋만 허용됩니다
reject_unsigned_commits boolean no 서명된 커밋만 허용됩니다
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/19/push_rule"

응답:

{
    "id": 19,
    "created_at": "2020-08-31T15:53:00.073Z",
    "commit_committer_name_check": false,
    "commit_message_regex": "[a-zA-Z]",
    "commit_message_negative_regex": "[x+]",
    "branch_name_regex": null,
    "deny_delete_tag": false,
    "member_check": false,
    "prevent_secrets": false,
    "author_email_regex": "^[A-Za-z0-9.]+@staging.gitlab.com$",
    "file_name_regex": null,
    "max_file_size": 100
}

그룹 푸시 규칙 삭제

그룹의 푸시 규칙을 삭제합니다.

그룹 소유자 및 관리자만 사용할 수 있습니다.

DELETE /groups/:id/push_rule
속성 유형 필수 여부 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path