프로젝트 API

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

프로젝트와 상호 작용하기 위해 REST API를 사용하십시오.

프로젝트 가시성 수준

GitLab의 프로젝트는 비공개, 내부, 또는 공개일 수 있습니다. 가시성 수준은 프로젝트의 visibility 필드에 의해 결정됩니다.

세부 정보는 프로젝트 가시성을 참조하세요.

인증된 사용자의 권한에 따라 응답으로 반환된 필드가 다릅니다.

API v5에서 제거될 사항

다음 속성들은 폐기되었으며 API의 v5에서 제거될 예정입니다:

프로젝트 Merge 방법

merge_method는 다음 옵션을 사용할 수 있습니다:

  • merge: 모든 Merge에 대해 Merge 커밋이 생성되며 충돌이 없는 경우에만 Merge이 허용됩니다.
  • rebase_merge: 모든 Merge에 대해 Merge 커밋이 생성되지만, 빠른 순방향 Merge이 가능한 경우에만 Merge이 허용됩니다. 이 Merge Request이 빌드 및 Merge된 후에 대상 브랜치가 빌드됨을 보장할 수 있습니다.
  • ff: Merge 커밋이 생성되지 않고 모든 Merge이 빠른 순방향으로만 이루어집니다. 브랜치를 빠른 순방향으로만 Merge할 수 있습니다.

모든 프로젝트 나열

인증된 사용자를 위해 GitLab 전체에서 가시적인 모든 프로젝트의 디렉터리을 얻으세요. 인증 없이 액세스할 경우, 간단한 필드로 구성된 공개 프로젝트만 반환됩니다.

GET /projects
속성 타입 필수 설명
archived 부울 아니요 보관된 상태로 제한합니다.
id_after 정수 아니요 지정된 ID보다 큰 ID를 가진 프로젝트로 결과를 제한합니다.
id_before 정수 아니요 지정된 ID보다 작은 ID를 가진 프로젝트로 결과를 제한합니다.
imported 부울 아니요 현재 사용자에 의해 외부 시스템에서 가져온 프로젝트로 결과를 제한합니다.
include_hidden 부울 아니요 숨겨진 프로젝트를 포함합니다. (관리자 전용) Premium 및 Ultimate 전용.
include_pending_delete 부울 아니요 삭제 대기 중인 프로젝트를 포함합니다. (관리자 전용)
last_activity_after 날짜/시간 아니요 지정된 시간 이후의 프로젝트에 대한 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)
last_activity_before 날짜/시간 아니요 지정된 시간 이전의 프로젝트에 대한 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)
membership 부울 아니요 현재 사용자가 멤버인 프로젝트로 제한합니다.
min_access_level 정수 아니요 현재 사용자의 최소한의 역할 (access_level)로 제한합니다.
order_by 문자열 아니요 id, name, path, created_at, updated_at, last_activity_at, 또는 similarity 필드로 프로젝트를 정렬해서 반환합니다. repository_size, storage_size, packages_size 또는 wiki_size 필드는 관리자만 허용됩니다. similarity은 검색 시에만 사용 가능하며 현재 사용자가 멤버인 프로젝트로 제한됩니다. 기본값은 created_at입니다.
owned 부울 아니요 현재 사용자가 명시적으로 소유하는 프로젝트로 제한합니다.
repository_checksum_failed 부울 아니요 리포지터리 체크섬 계산에 실패한 프로젝트로 제한합니다. Premium 및 Ultimate 전용.
repository_storage 문자열 아니요 repository_storage에 저장된 프로젝트로 결과를 제한합니다. (관리자 전용)
search_namespaces 부울 아니요 검색 기준과 일치하는 조상 네임스페이스를 포함합니다. 기본값은 false입니다.
search 문자열 아니요 검색 기준과 일치하는 프로젝트 디렉터리을 반환합니다.
simple 부울 아니요 각 프로젝트에 대해 제한된 필드만 반환합니다. 인증되지 않은 경우에는 단순한 필드만 반환합니다.
sort 문자열 아니요 asc 또는 desc 순서로 프로젝트를 반환합니다. 기본값은 desc입니다.
starred 부울 아니요 현재 사용자가 주목한 프로젝트로 제한합니다.
statistics 부울 아니요 프로젝트 통계를 포함합니다. 최소한의 기자 역할을 가진 사용자에게만 사용 가능합니다.
topic_id 정수 아니요 주어진 토픽 ID에 의해 지정된 주제가 지정된 프로젝트로 결과를 제한합니다.
topic 문자열 아니요 모든 주어진 주제와 일치하는 프로젝트로 결과를 제한하는 쉼표로 구분된 주제 이름들을 반환합니다. topics 속성을 참조하세요.
updated_after 날짜/시간 아니요 지정된 시간 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다. 이 필터가 작동하려면 order_by 속성으로 updated_at을 함께 제공해야 합니다.
updated_before 날짜/시간 아니요 지정된 시간 이전에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다. 이 필터가 작동하려면 order_by 속성으로 updated_at을 함께 제공해야 합니다.
visibility 문자열 아니요 public, internal, 또는 private 가시성으로 제한합니다.
wiki_checksum_failed 부울 아니요 위키 체크섬 계산에 실패한 프로젝트로 결과를 제한합니다. Premium 및 Ultimate 전용.
with_custom_attributes 부울 아니요 응답에 사용자 정의 속성을 포함합니다. (관리자 전용)
with_issues_enabled 부울 아니요 사용 중인 이슈 기능으로 제한합니다.
with_merge_requests_enabled 부울 아니요 사용 중인 Merge Request 기능으로 제한합니다.
with_programming_language 문자열 아니요 주어진 프로그래밍 언어를 사용하는 프로젝트로 결과를 제한합니다.

이 엔드포인트는 선택한 order_by 옵션에 대해 키세트 페이지네이션을 지원합니다.

simple=true 또는 사용자가 인증되지 않은 경우, 다음과 유사한 결과를 반환합니다:

예제 요청:

curl --request GET "https://gitlab.example.com/api/v4/projects"

예제 응답:

[
  {
    "id": 4,
    "description": null,
    "name": "Diaspora Client",
    "name_with_namespace": "Diaspora / Diaspora Client",
    "path": "diaspora-client",
    "path_with_namespace": "diaspora/diaspora-client",
    "created_at": "2013-09-30T13:46:02Z",
    "default_branch": "main",
    "tag_list": [
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    "ssh_url_to_repo": "git@gitlab.example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "https://gitlab.example.com/diaspora/diaspora-client.git",
    "web_url": "https://gitlab.example.com/diaspora/diaspora-client",
    "avatar_url": "https://gitlab.example.com/uploads/project/avatar/4/uploads/avatar.png",
    "star_count": 0,
    "last_activity_at": "2013-09-30T13:46:02Z",
    "namespace": {
      "id": 2,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora",
      "parent_id": null,
      "avatar_url": null,
      "web_url": "https://gitlab.example.com/diaspora"
    }
  },
  {
    ...
  }
]

사용자가 인증되고 simple이 설정되어 있지 않은 경우, 다음과 유사한 결과를 반환합니다:

[
  {
    "id": 4,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "name": "Diaspora Client",
    "name_with_namespace": "Diaspora / Diaspora Client",
    "path": "diaspora-client",
    "path_with_namespace": "diaspora/diaspora-client",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "default_branch": "main",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    "ssh_url_to_repo": "git@gitlab.example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "https://gitlab.example.com/diaspora/diaspora-client.git",
    "web_url": "https://gitlab.example.com/diaspora/diaspora-client",
    "readme_url": "https://gitlab.example.com/diaspora/diaspora-client/blob/main/README.md",
    "avatar_url": "https://gitlab.example.com/uploads/project/avatar/4/uploads/avatar.png",
    "forks_count": 0,
    "star_count": 0,
    "last_activity_at": "2022-06-24T17:11:26.841Z",
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora",
      "parent_id": null,
      "avatar_url": "https://gitlab.example.com/uploads/project/avatar/6/uploads/avatar.png",
      "web_url": "https://gitlab.example.com/diaspora"
    },
    "container_registry_image_prefix": "registry.gitlab.example.com/diaspora/diaspora-client",
    "_links": {
      "self": "https://gitlab.example.com/api/v4/projects/4",
      "issues": "https://gitlab.example.com/api/v4/projects/4/issues",
      "merge_requests": "https://gitlab.example.com/api/v4/projects/4/merge_requests",
      "repo_branches": "https://gitlab.example.com/api/v4/projects/4/repository/branches",
      "labels": "https://gitlab.example.com/api/v4/projects/4/labels",
      "events": "https://gitlab.example.com/api/v4/projects/4/events",
      "members": "https://gitlab.example.com/api/v4/projects/4/members",
      "cluster_agents": "https://gitlab.example.com/api/v4/projects/4/cluster_agents"
    },
    "packages_enabled": true,
    "empty_repo": false,
    "archived": false,
    "visibility": "public",
    "resolve_outdated_diff_discussions": false,
    ...
  },
  {
    ...
  }
]
note
last_activity_at프로젝트 활동프로젝트 이벤트에 기반하여 업데이트됩니다. updated_at은 데이터베이스에서 프로젝트 레코드가 변경될 때마다 업데이트됩니다.

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

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

예제 요청:

curl --globoff --request GET "https://gitlab.example.com/api/v4/projects?custom_attributes[location]=Antarctica&custom_attributes[role]=Developer"

페이지네이션 제한

Offset-based pagination50,000개의 레코드로 제한됩니다. 이 한계를 초과하는 프로젝트를 검색하려면 Keyset pagination이 필요합니다.

Keyset 페이지네이션은 order_by=id만 지원합니다. 다른 정렬 옵션은 사용할 수 없습니다.

사용자 프로젝트 디렉터리

지정된 사용자가 소유한 가시적인 프로젝트 디렉터리을 가져옵니다. 인증되지 않은 경우에는 공개 프로젝트만 반환됩니다.

전제 조건:

  • 특정 속성을 보려면 관리자이거나 프로젝트의 소유자 역할이 있어야 합니다.
note
사용자의 (지정된 user_id) 네임스페이스에 있는 프로젝트만 반환됩니다. 그룹이나 서브그룹의 사용자가 소유한 프로젝트는 반환되지 않습니다. 프로필이 비공개로 설정된 경우 빈 디렉터리이 반환됩니다.

이 엔드포인트는 선택된 order_by 옵션에 대한 keyset pagination을 지원합니다.

GET /users/:user_id/projects
속성 타입 필수 설명
user_id 문자열 사용자의 ID 또는 사용자 이름
archived 부울 아니요 보관된 상태에 따라 제한
id_after 정수 아니요 지정된 ID보다 큰 ID를 가진 프로젝트로 결과를 제한
id_before 정수 아니요 지정된 ID보다 작은 ID를 가진 프로젝트로 결과를 제한
membership 부울 아니요 현재 사용자가 멤버인 프로젝트로 제한
min_access_level 정수 아니요 현재 사용자의 최소 역할 (access_level)로 제한
order_by 문자열 아니요 프로젝트를 id, name, path, created_at, updated_at, 또는 last_activity_at 필드로 정렬하여 반환. 기본값은 created_at.
owned 부울 아니요 현재 사용자가 명시적으로 소유한 프로젝트로 제한
search 문자열 아니요 검색 기준과 일치하는 프로젝트 디렉터리을 반환
simple 부울 아니요 각 프로젝트에 대해 제한된 필드만 반환합니다. 인증되지 않은 경우 이 작업은 무시됩니다. 간단한 필드만 반환됩니다.
sort 문자열 아니요 asc 또는 desc 순서로 정렬된 프로젝트 반환. 기본값은 desc.
starred 부울 아니요 현재 사용자가 즐겨찾기한 프로젝트로 제한
statistics 부울 아니요 프로젝트 통계를 포함합니다. 적어도 Reporter 역할을 가진 사용자에게만 사용 가능합니다.
updated_after 날짜 및 시간 아니요 특정 시간 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다.
updated_before 날짜 및 시간 아니요 특정 시간 이전에 마지막으로 업데이트된 프로젝트로 결과를 제한. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다.
visibility 문자열 아니요 public, internal, 또는 private의 가시성으로 제한
with_custom_attributes 부울 아니요 응답에 사용자 지정 속성을 포함합니다. (관리자 전용)
with_issues_enabled 부울 아니요 활성화된 이슈 기능으로 제한
with_merge_requests_enabled 부울 아니요 활성화된 머지 요청 기능으로 제한
with_programming_language 문자열 아니요 지정된 프로그래밍 언어를 사용하는 프로젝트로 제한
[
  {
    "id": 4,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
    "web_url": "http://example.com/diaspora/diaspora-client",
    "readme_url": "http://example.com/diaspora/diaspora-client/blob/main/README.md",
    "tag_list": [
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    "owner": {
      "id": 3,
      "name": "Diaspora",
      "created_at": "2013-09-30T13:46:02Z"
    },
    // ... (중략)
    "archived": false,
    "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
    // ... (중략)
  },
  {
    "id": 6,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
    "web_url": "http://example.com/brightbox/puppet",
    "readme_url": "http://example.com/brightbox/puppet/blob/main/README.md",
    "tag_list": [
      "example",
      "puppet"
    ],
    "topics": [
      "example",
      "puppet"
    ],
    "owner": {
      "id": 4,
      "name": "Brightbox",
      "created_at": "2013-09-30T13:46:02Z"
    },
    // ... (중략)
    "archived": false,
    "avatar_url": null,
    // ... (중략)
  }
]

사용자가 기여한 프로젝트 디렉터리

주어진 사용자가 기여한 가시적인 프로젝트 디렉터리을 얻습니다.

GET /users/:user_id/contributed_projects
속성 유형 필수 설명
user_id string Yes 사용자의 ID 또는 사용자 이름.
order_by string No 프로젝트를 id, name, path, created_at, updated_at, 또는 last_activity_at 필드로 정렬하여 반환합니다. 기본값은 created_at입니다.
simple boolean No 각 프로젝트에 대해 제한된 필드만 반환합니다. 인증 없이는 이 작업이 실행되지 않으며 간단한 필드만 반환됩니다.
sort string No 프로젝트를 asc 또는 desc 순서로 정렬하여 반환합니다. 기본값은 desc입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/users/5/contributed_projects"

예시 응답:

[
  {
    "id": 4,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
    "web_url": "http://example.com/diaspora/diaspora-client",
    "readme_url": "http://example.com/diaspora/diaspora-client/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    ...
  },
  {
    "id": 6,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
    "web_url": "http://example.com/brightbox/puppet",
    "readme_url": "http://example.com/brightbox/puppet/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "puppet"
    ],
    "topics": [
      "example",
      "puppet"
    ],
    ...
  }
]

사용자가 주목한 프로젝트 디렉터리

지정된 사용자가 주목한 가시적인 프로젝트 디렉터리을 가져옵니다. 인증 없이 접근할 경우 공개 프로젝트만 반환됩니다.

GET /users/:user_id/starred_projects
속성 유형 필수 여부 설명
user_id string 사용자의 ID 또는 사용자 이름.
archived boolean 아니요 보관된 상태로 제한합니다.
membership boolean 아니요 현재 사용자가 회원인 프로젝트로 제한합니다.
min_access_level integer 아니요 현재 사용자의 최소 역할(access_level)로 제한합니다.
order_by string 아니요 id, name, path, created_at, updated_at, 또는 last_activity_at 필드로 프로젝트를 정렬하여 반환합니다. 기본값은 created_at입니다.
owned boolean 아니요 명시적으로 현재 사용자가 소유한 프로젝트로 제한합니다.
search string 아니요 검색 기준과 일치하는 프로젝트 디렉터리을 반환합니다.
simple boolean 아니요 각 프로젝트에 대해 제한된 필드만 반환합니다. 인증 없이 이 작업은 수행되지 않으며, 간단한 필드만 반환됩니다.
sort string 아니요 asc 또는 desc 순서로 정렬된 프로젝트를 반환합니다. 기본값은 desc입니다.
starred boolean 아니요 현재 사용자가 주목한 프로젝트로 제한합니다.
statistics boolean 아니요 프로젝트 통계를 포함합니다. 적어도 Reporter 역할을 가진 사용자에게만 사용할 수 있습니다.
updated_after datetime 아니요 지정된 시간 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 포맷: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다.
updated_before datetime 아니요 지정된 시간 이전에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 포맷: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다.
visibility string 아니요 public, internal, 또는 private 가시성으로 제한합니다.
with_custom_attributes boolean 아니요 응답에 사용자 정의 속성을 포함합니다. (관리자 전용)
with_issues_enabled boolean 아니요 활성화된 이슈 기능으로 제한합니다.
with_merge_requests_enabled boolean 아니요 활성화된 Merge Request 기능으로 제한합니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/users/5/starred_projects"

예시 응답:

[
  {
    "id": 4,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
    "web_url": "http://example.com/diaspora/diaspora-client",
    "readme_url": "http://example.com/diaspora/diaspora-client/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    "owner": {
      "id": 3,
      "name": "Diaspora",
      "created_at": "2013-09-30T13:46:02Z"
    },
    "name": "Diaspora Client",
    "name_with_namespace": "Diaspora / Diaspora Client",
    "path": "diaspora-client",
    "path_with_namespace": "diaspora/diaspora-client",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora"
    },
    ...
  },
  {
    "id": 6,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
    "web_url": "http://example.com/brightbox/puppet",
    "readme_url": "http://example.com/brightbox/puppet/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "puppet"
    ],
    "topics": [
      "example",
      "puppet"
    ],
    "owner": {
      "id": 4,
      "name": "Brightbox",
      "created_at": "2013-09-30T13:46:02Z"
    },
    "name": "Puppet",
    "name_with_namespace": "Brightbox / Puppet",
    "path": "puppet",
    "path_with_namespace": "brightbox/puppet",
    ...
  }
]

단일 프로젝트 가져오기

특정 프로젝트를 가져옵니다. 프로젝트가 공개적으로 접근 가능한 경우,이 엔드포인트에는 인증 없이 액세스할 수 있습니다.

GET /projects/:id
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
license 부울 아니요 프로젝트 라이선스 데이터 포함.
statistics 부울 아니요 프로젝트 통계 포함. 적어도 기자 역할을 가진 사용자에게만 사용 가능합니다.
with_custom_attributes 부울 아니요 응답에 사용자 정의 속성 포함. (관리자 전용)
{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "private",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  "owner": {
    "id": 3,
    "name": "Diaspora",
    "created_at": "2013-09-30T13:46:02Z"
  },
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
  "issues_enabled": true,
  "open_issues_count": 1,
  "merge_requests_enabled": true,
  "jobs_enabled": true,
  "wiki_enabled": true,
  "snippets_enabled": false,
  "can_create_merge_request_in": true,
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "disabled",
  "security_and_compliance_access_level": "disabled",
  "container_expiration_policy": {
    "cadence": "7d",
    "enabled": false,
    "keep_n": null,
    "older_than": null,
    "name_regex": null, // to be deprecated in GitLab 13.0 in favor of `name_regex_delete`
    "name_regex_delete": null,
    "name_regex_keep": null,
    "next_run_at": "2020-01-07T21:42:58.658Z"
  },
  "created_at": "2013-09-30T13:46:02Z",
  "updated_at": "2013-09-30T13:46:02Z",
  "last_activity_at": "2013-09-30T13:46:02Z",
  "creator_id": 3,
  "namespace": {
    "id": 3,
    "name": "Diaspora",
    "path": "diaspora",
    "kind": "group",
    "full_path": "diaspora",
    "avatar_url": "http://localhost:3000/uploads/group/avatar/3/foo.jpg",
    "web_url": "http://localhost:3000/groups/diaspora"
  },
  "import_url": null,
  "import_type": null,
  "import_status": "none",
  "import_error": null,
  "permissions": {
    "project_access": {
      "access_level": 10,
      "notification_level": 3
    },
    "group_access": {
      "access_level": 50,
      "notification_level": 3
    }
  },
  "archived": false,
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE",
  "license": {
    "key": "lgpl-3.0",
    "name": "GNU Lesser General Public License v3.0",
    "nickname": "GNU LGPLv3",
    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
  },
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "forks_count": 0,
  "star_count": 0,
  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
  "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,
  "ci_separated_caches": true,
  "ci_restrict_pipeline_cancellation_role": "developer",
  "public_jobs": true,
  "shared_with_groups": [
    {
      "group_id": 4,
      "group_name": "Twitter",
      "group_full_path": "twitter",
      "group_access_level": 30
    },
    {
      "group_id": 3,
      "group_name": "Gitlab Org",
      "group_full_path": "gitlab-org",
      "group_access_level": 10
    }
  ],
  "repository_storage": "default",
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": false,
  "restrict_user_defined_variables": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": false,
  "printing_merge_requests_link_enabled": true,
  "request_access_enabled": false,
  "merge_method": "merge",
  "squash_option": "default_on",
  "auto_devops_enabled": true,
  "auto_devops_deploy_strategy": "continuous",
  "approvals_before_merge": 0, // Deprecated. Use merge request approvals API instead.
  "mirror": false,
  "mirror_user_id": 45,
  "mirror_trigger_builds": false,
  "only_mirror_protected_branches": false,
  "mirror_overwrites_diverged_branches": false,
  "external_authorization_classification_label": null,
  "packages_enabled": true,
  "service_desk_enabled": false,
  "service_desk_address": null,
  "autoclose_referenced_issues": true,
  "suggestion_commit_message": null,
  "enforce_auth_checks_on_uploads": true,
  "merge_commit_template": null,
  "squash_commit_template": null,
  "issue_branch_template": "gitlab/%{id}-%{title}",
  "marked_for_deletion_at": "2020-04-03", // Deprecated and will be removed in API v5 in favor of marked_for_deletion_on
  "marked_for_deletion_on": "2020-04-03",
  "compliance_frameworks": [ "sox" ],
  "warn_about_potentially_unwanted_characters": true,
  "statistics": {
    "commit_count": 37,
    "storage_size": 1038090,
    "repository_size": 1038090,
    "wiki_size" : 0,
    "lfs_objects_size": 0,
    "job_artifacts_size": 0,
    "pipeline_artifacts_size": 0,
    "packages_size": 0,
    "snippets_size": 0,
    "uploads_size": 0
  },
  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
  "_links": {
    "self": "http://example.com/api/v4/projects",
    "issues": "http://example.com/api/v4/projects/1/issues",
    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
    "labels": "http://example.com/api/v4/projects/1/labels",
    "events": "http://example.com/api/v4/projects/1/events",
    "members": "http://example.com/api/v4/projects/1/members",
    "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
  }
}

GitLab Ultimate 사용자는 GitLab 15.5 이상에서 only_allow_merge_if_all_status_checks_passed 매개변수도 볼 수 있습니다.

{
  "id": 1,
  "project_id": 3,
  "only_allow_merge_if_all_status_checks_passed": false,
  ...
}

프로젝트가 포크인 경우, 응답에 forked_from_project 필드가 나타납니다. 이 필드에 대해, 원본 프로젝트가 비공개인 경우 인증을 제공해야 합니다. 또한 mr_default_target_self 필드가 나타납니다. 이 값이 false인 경우, 모든 Merge Request은 기본적으로 상위 프로젝트를 대상으로 합니다.

{
   "id":3,
   
   ...
   
   "mr_default_target_self": false,
   "forked_from_project":{
      "id":13083,
      "description":"GitLab Community Edition",
      "name":"GitLab Community Edition",
      "name_with_namespace":"GitLab.org / GitLab Community Edition",
      "path":"gitlab-foss",
      "path_with_namespace":"gitlab-org/gitlab-foss",
      "created_at":"2013-09-26T06:02:36.000Z",
      "default_branch":"main",
      "tag_list":[], //deprecated, use `topics` instead
      "topics":[],
      "ssh_url_to_repo":"git@gitlab.com:gitlab-org/gitlab-foss.git",
      "http_url_to_repo":"https://gitlab.com/gitlab-org/gitlab-foss.git",
      "web_url":"https://gitlab.com/gitlab-org/gitlab-foss",
      "avatar_url":"https://gitlab.com/uploads/-/system/project/avatar/13083/logo-extra-whitespace.png",
      "license_url": "https://gitlab.com/gitlab-org/gitlab/-/blob/main/LICENSE",
      "license": {
        "key": "mit",
        "name": "MIT License",
        "nickname": null,
        "html_url": "http://choosealicense.com/licenses/mit/",
        "source_url": "https://opensource.org/licenses/MIT"
      },
      "star_count":3812,
      "forks_count":3561,
      "last_activity_at":"2018-01-02T11:40:26.570Z",
      "namespace": {
            "id": 72,
            "name": "GitLab.org",
            "path": "gitlab-org",
            "kind": "group",
            "full_path": "gitlab-org",
            "parent_id": null
      },
      "repository_storage": "default"
   }
   
   ...

}

이슈 및 Merge Request을 위한 템플릿

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

GitLab Premium 또는 Ultimate 사용자는 관리하기 위한 이슈 템플릿Merge Request 템플릿 매개변수를 볼 수 있습니다. 이슈 및 Merge Request 설명 템플릿 관리를 위한 여러 가지 방법을 알아볼 수 있습니다.

{
  "id": 3,
  "issues_template": null,
  "merge_requests_template": null,
  ...
}

프로젝트 사용자 가져오기

프로젝트의 사용자 디렉터리 가져오기.

GET /projects/:id/users
속성 타입 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩 된 경로
search 문자열 아니요 특정 사용자 검색
skip_users 정수 배열 아니요 지정된 ID를 가진 사용자 제외하기
[
  {
    "id": 1,
    "username": "john_smith",
    "name": "John Smith",
    "state": "active",
    "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
    "web_url": "http://localhost:3000/john_smith"
  },
  {
    "id": 2,
    "username": "jack_smith",
    "name": "Jack Smith",
    "state": "blocked",
    "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
    "web_url": "http://localhost:3000/jack_smith"
  }
]

프로젝트의 그룹 디렉터리

이 프로젝트의 상위 그룹 디렉터리을 가져옵니다.

GET /projects/:id/groups
속성 타입 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩 된 경로
search 문자열 아니요 특정 그룹 검색
shared_min_access_level 정수 아니요 공유 그룹을 최소한 이 역할(access_level)로 제한.
shared_visible_only 부울 아니요 사용자가 액세스 할 수 있는 공유 그룹으로 제한.
skip_groups 정수 배열 아니요 전달 된 그룹 ID 건너뛰기
with_shared 부울 아니요 이 그룹과 공유 된 프로젝트 포함. 기본값은 false.
[
  {
    "id": 1,
    "name": "Foobar Group",
    "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",
    "web_url": "http://localhost:3000/groups/foo-bar",
    "full_name": "Foobar Group",
    "full_path": "foo-bar"
  },
  {
    "id": 2,
    "name": "Shared Group",
    "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/bar.jpg",
    "web_url": "http://gitlab.example.com/groups/foo/bar",
    "full_name": "Shared Group",
    "full_path": "foo/shared"
  }
]

프로젝트와 공유 가능한 그룹 디렉터리

프로젝트와 공유할 수 있는 그룹 디렉터리을 가져옵니다.

GET /projects/:id/share_locations
속성 타입 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩 된 경로
search 문자열 아니요 특정 그룹 검색
[
  {
    "id": 22,
    "web_url": "http://127.0.0.1:3000/groups/gitlab-org",
    "name": "Gitlab Org",
    "avatar_url": null,
    "full_name": "Gitlab Org",
    "full_path": "gitlab-org"
  },
  {
    "id": 25,
    "web_url": "http://127.0.0.1:3000/groups/gnuwget",
    "name": "Gnuwget",
    "avatar_url": null,
    "full_name": "Gnuwget",
    "full_path": "gnuwget"
  }
]

프로젝트 이벤트 가져오기

이벤트 API 문서를 참조하십시오.

프로젝트 생성

인증 된 사용자가 소유한 새 프로젝트를 생성합니다.

만약 HTTP 리포지터리가 공개적으로 접근할 수 없다면, URL에 https://username:password@gitlab.company.com/group/project.git의 인증정보를 추가하세요. 여기서 passwordapi 스코프가 활성화된 공개 액세스 키입니다.

POST /projects

예시 요청:

curl --request POST --header "PRIVATE-TOKEN: <your-token>" \
     --header "Content-Type: application/json" --data '{
        "name": "new_project", "description": "New Project", "path": "new_project",
        "namespace_id": "42", "initialize_with_readme": "true"}' \
     --url "https://gitlab.example.com/api/v4/projects/"
속성 타입 필수 설명
name 문자열 (만약 path가 제공되지 않는 경우) 예 새로운 프로젝트의 이름입니다. 제공되지 않으면 경로와 동일합니다.
path 문자열 (만약 name이 제공되지 않는 경우) 예 새 프로젝트의 리포지터리 이름. 제공되지 않으면 생성된 이름을 기반으로 생성됩니다. 경로는 특수 문자로 시작하거나 끝나거나 연속된 특수 문자를 포함해서는 안됩니다.
allow_merge_on_skipped_pipeline 부울 아니요 스킵된 작업으로 Merge Request 허용 여부 설정
analytics_access_level 문자열 아니요 disabled, private, 또는 enabled 중 하나
approvals_before_merge 정수 아니요 기본적으로 Merge Request에 몇 명의 승인자가 필요한지 설정. 승인 규칙을 구성하려면 Merge Request 승인 API를 참조하십시오. GitLab 16.0에서 폐기되었습니다. Premium 및 Ultimate 전용.
auto_cancel_pending_pipelines 문자열 아니요 보류 중인 파이프라인 자동 취소 설정. 이 작업은 활성 상태와 비활성 상태 사이를 전환하는 동작으로, 부울 값이 아닙니다.
auto_devops_deploy_strategy 문자열 아니요 자동 배포 전략 (continuous, manual, 또는 timed_incremental).
auto_devops_enabled 부울 아니요 이 프로젝트를 위해 Auto DevOps를 활성화합니다.
autoclose_referenced_issues 부울 아니요 기본 브랜치의 참조된 이슈를 자동으로 닫을지 여부 설정
avatar 기타 아니요 프로젝트의 아바타에 대한 이미지 파일
build_git_strategy 문자열 아니요 Git 전략. fetch로 기본 설정됩니다.
build_timeout 정수 아니요 작업 실행이 가능한 최대 시간(초)
builds_access_level 문자열 아니요 disabled, private, 또는 enabled 중 하나
ci_config_path 문자열 아니요 CI 구성 파일의 경로
     

(중략됨)

사용자용 프로젝트 생성

- operations_access_levelGitLab 16.0에서 삭제되었습니다. - model_registry_access_levelGitLab 16.7에서 도입되었습니다.

지정된 사용자가 소유한 새 프로젝트를 생성합니다. 관리자 전용 기능입니다.

만약 HTTP 리포지터리가 공개적으로 접근할 수 없다면, 인증 정보를 다음 URL에 추가하십시오. https://username:password@gitlab.company.com/group/project.git 여기서 passwordapi 스코프가 활성화된 공개 액세스 키입니다.

POST /projects/user/:user_id

| 속성 | 타입 | 필요 여부 | 설명 | |——————————————————————–|———-|———-|————-| | name | string | 예 | 새 프로젝트의 이름입니다. | | user_id | integer | 예 | 프로젝트 소유자의 사용자 ID입니다. | | allow_merge_on_skipped_pipeline | boolean | 아니요 | 머지 요청이 스킵된 작업으로 Merge될 수 있는지 여부를 설정합니다. | | analytics_access_level | string | 아니요 | disabled, private, 또는 enabled 중 하나입니다. | | approvals_before_merge | integer | 아니요 | 기본적으로 몇 명의 승인자가 머지 요청을 승인해야 하는지 설정합니다. GitLab 16.0에서는 폐기 예정되었습니다. 승인 규칙을 구성하려면 Merge Request 승인 API를 참조하십시오. Premium 및 Ultimate 전용 기능입니다. | …

(전체 내용은 생략되었습니다.)

프로젝트 편집

기존 프로젝트를 업데이트합니다.

만약 HTTP 리포지터리에 공개적으로 접근할 수 없다면, 인증 정보를 URL https://username:password@gitlab.company.com/group/project.git에 추가하세요. 여기서 passwordapi 스코프가 활성화된 공개 액세스 키입니다.

PUT /projects/:id

예를 들어, GitLab.com 프로젝트의 공유 러너 설정을 토글하려면:

curl --request PUT --header "PRIVATE-TOKEN: <your-token>" \
     --url "https://gitlab.com/api/v4/projects/<your-project-ID>" \
     --data "shared_runners_enabled=true" # 끄려면: "shared_runners_enabled=false"

지원되는 속성:

속성 유형 필수여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
allow_merge_on_skipped_pipeline 부울 아니오 건너뛴 작업으로 Merge Request을 Merge할 수 있는지 여부를 설정합니다.
allow_pipeline_trigger_approve_deployment 부울 아니오 파이프라인 트리거가 배포를 승인할 수 있는지 여부를 설정합니다. Premium 및 Ultimate 전용.
only_allow_merge_if_all_status_checks_passed 부울 아니오 모든 상태 확인이 통과하지 않으면 Merge Request을 차단해야 하는지 여부를 나타냅니다. 기본 설정은 false입니다.

이 기능은 기본적으로 비활성화된 feature flag only_allow_merge_if_all_status_checks_passedGitLab 15.5에 도입되었습니다. 이 기능은 GitLab 15.9에서 기본적으로 활성화되었습니다. Ultimate 전용.
analytics_access_level 문자열 아니오 disabled, private, 또는 enabled 중 하나
approvals_before_merge 정수 아니오 기본적으로 Merge Request을 몇 명의 승인자가 승인해야 하는지를 나타냅니다. GitLab 16.0에서 사용 중단. 승인 규칙을 구성하려면 Merge Request 승인 API를 참조하세요. Premium 및 Ultimate 전용.
… (이하 생략) …

프로젝트 포크

인증된 사용자의 사용자 네임스페이스 또는 제공된 네임스페이스로 프로젝트를 포크합니다.

프로젝트의 포킹 작업은 비동기적으로 진행되며 백그라운드 작업으로 완료됩니다. 요청은 즉시 반환됩니다. 프로젝트의 포킹이 완료되었는지 확인하려면 새 프로젝트의 import_status를 질의하십시오.

POST /projects/:id/fork
속성 유형 필수여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
branches 문자열 아니요 포크할 브랜치 (모든 브랜치는 비움).
description 문자열 아니요 포킹 후 결과 프로젝트에 할당된 설명.
mr_default_target_self 부울값 아니요 포크된 프로젝트의 경우, 대상 Merge Request을 이 프로젝트로 지정합니다. false인 경우 대상은 상위 프로젝트입니다.
name 문자열 아니요 포킹 후 결과 프로젝트에 할당된 이름.
namespace_id 정수 아니요 프로젝트가 포크된 네임스페이스의 ID.
namespace_path 문자열 아니요 프로젝트가 포크된 네임스페이스의 경로.
namespace 정수 또는 문자열 아니요 (사용하지 않음) 프로젝트가 포크된 네임스페이스의 ID 또는 경로.
path 문자열 아니요 포킹 후 결과 프로젝트에 할당된 경로.
visibility 문자열 아니요 포킹 후 결과 프로젝트에 할당된 가시성 수준.

프로젝트 포크 디렉터리

지정된 프로젝트와 설정된 포크된 관계를 가지는 호출자 사용자가 액세스할 수 있는 프로젝트 디렉터리을 나열합니다.

GET /projects/:id/forks
속성 유형 필수여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
archived 부울값 아니요 보관된 상태로 제한합니다.
membership 부울값 아니요 현재 사용자가 멤버인 프로젝트로 제한합니다.
min_access_level 정수 아니요 현재 사용자의 최소 역할(access_level)로 제한합니다.
order_by 문자열 아니요 id,name,path,created_at,updated_at,last_activity_at 필드로 정렬된 프로젝트를 반환합니다. 기본값은 created_at입니다.
owned 부울값 아니요 현재 사용자가 명시적으로 소유한 프로젝트로 제한합니다.
search 문자열 아니요 검색 기준과 일치하는 프로젝트 디렉터리을 반환합니다.
simple 부울값 아니요 각 프로젝트에 대해 제한된 필드만 반환합니다. 인증되지 않은 경우, 이 작업은 무효입니다. 간단한 필드만 반환됩니다.
sort 문자열 아니요 프로젝트를 asc 또는desc순으로 정렬합니다. 기본값은 desc입니다.
starred 부울값 아니요 현재 사용자가 별표를 한 프로젝트로 제한합니다.
statistics 부울값 아니요 프로젝트 통계를 포함합니다. 최소한 Reporter 역할을 가진 사용자만 사용할 수 있습니다.
updated_after 날짜 및 시간 아니요 결과를 지정된 시간 이후에 마지막으로 업데이트된 프로젝트로 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다.
updated_before 날짜 및 시간 아니요 결과를 지정된 시간 이전에 마지막으로 업데이트된 프로젝트로 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입되었습니다.
visibility 문자열 아니요 public, internal, 또는 private 가시성으로 제한합니다.
with_custom_attributes 부울값 아니요 응답에 사용자 정의 속성을 포함합니다. (관리자 전용)
with_issues_enabled 부울값 아니요 활성화된 이슈 기능으로 제한합니다.
with_merge_requests_enabled 부울값 아니요 활성화된 Merge Request 기능으로 제한합니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/forks"

예시 응답:

[
  {
    "id": 3,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "internal",
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
    "web_url": "http://example.com/diaspora/diaspora-project-site",
    "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora project"
    ],
    "topics": [
      "example",
      "disapora project"
    ],
    "name": "Diaspora Project Site",
    "name_with_namespace": "Diaspora / Diaspora Project Site",
    "path": "diaspora-project-site",
    "path_with_namespace": "diaspora/diaspora-project-site",
    "repository_object_format": "sha1",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora"
    },
    "import_status": "none",
    "archived": true,
    "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "forks_count": 0,
    "star_count": 1,
    "public_jobs": true,
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": false,
    "restrict_user_defined_variables": false,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": false,
    "request_access_enabled": false,
    "merge_method": "merge",
    "squash_option": "default_on",
    "autoclose_referenced_issues": true,
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
    "_links": {
      "self": "http://example.com/api/v4/projects",
      "issues": "http://example.com/api/v4/projects/1/issues",
      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
      "labels": "http://example.com/api/v4/projects/1/labels",
      "events": "http://example.com/api/v4/projects/1/events",
      "members": "http://example.com/api/v4/projects/1/members",
      "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
    }
  }
]

프로젝트에 별표 표시하기

주어진 프로젝트에 별표를 표시합니다. 프로젝트가 이미 별표가 표시된 경우 상태 코드 304가 반환됩니다.

POST /projects/:id/star
속성 유형 필수여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/star"

예시 응답:

{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "internal",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
  "repository_object_format": "sha1",
  "issues_enabled": true,
  "open_issues_count": 1,
  "merge_requests_enabled": true,
  "jobs_enabled": true,
  "wiki_enabled": true,
  "snippets_enabled": false,
  "can_create_merge_request_in": true,
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "disabled",
  "security_and_compliance_access_level": "disabled",
  "created_at": "2013-09-30T13:46:02Z",
  "updated_at": "2013-09-30T13:46:02Z",
  "last_activity_at": "2013-09-30T13:46:02Z",
  "creator_id": 3,
  "namespace": {
    "id": 3,
    "name": "Diaspora",
    "path": "diaspora",
    "kind": "group",
    "full_path": "diaspora"
  },
  "import_status": "none",
  "archived": true,
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "license_url": "http://example.com/diaspora/diaspora-client/blob/master/LICENSE",
  "license": {
    "key": "lgpl-3.0",
    "name": "GNU Lesser General Public License v3.0",
    "nickname": "GNU LGPLv3",
    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
  },
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "forks_count": 0,
  "star_count": 1,
  "public_jobs": true,
  "shared_with_groups": [],
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": false,
  "restrict_user_defined_variables": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": false,
  "request_access_enabled": false,
  "merge_method": "merge",
  "squash_option": "default_on",
  "autoclose_referenced_issues": true,
  "enforce_auth_checks_on_uploads": true,
  "suggestion_commit_message": null,
  "merge_commit_template": null,
  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
  "_links": {
    "self": "http://example.com/api/v4/projects",
    "issues": "http://example.com/api/v4/projects/1/issues",
    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
    "labels": "http://example.com/api/v4/projects/1/labels",
    "events": "http://example.com/api/v4/projects/1/events",
    "members": "http://example.com/api/v4/projects/1/members",
    "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
  }
}

프로젝트의 별표 제거

주어진 프로젝트의 별표를 제거합니다. 프로젝트에 이미 별표가 표시되지 않았을 경우 상태 코드 304가 반환됩니다.

POST /projects/:id/unstar
속성 유형 필수여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/unstar"

예시 응답:

{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "internal",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
  "repository_object_format": "sha1",
  "issues_enabled": true,
  "open_issues_count": 1,
  "merge_requests_enabled": true,
  "jobs_enabled": true,
  "wiki_enabled": true,
  "snippets_enabled": false,
  "can_create_merge_request_in": true,
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "disabled",
  "security_and_compliance_access_level": "disabled",
  "created_at": "2013-09-30T13:46:02Z",
  "updated_at": "2013-09-30T13:46:02Z",
  "last_activity_at": "2013-09-30T13:46:02Z",
  "creator_id": 3,
  "namespace": {
    "id": 3,
    "name": "Diaspora",
    "path": "diaspora",
    "kind": "group",
    "full_path": "diaspora"
  },
  "import_status": "none",
  "archived": true,
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE",
  "license": {
    "key": "lgpl-3.0",
    "name": "GNU Lesser General Public License v3.0",
    "nickname": "GNU LGPLv3",
    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
  },
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "forks_count": 0,
  "star_count": 0,
  "public_jobs": true,
  "shared_with_groups": [],
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": false,
  "restrict_user_defined_variables": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": false,
  "request_access_enabled": false,
  "merge_method": "merge",
  "squash_option": "default_on",
  "autoclose_referenced_issues": true,
  "enforce_auth_checks_on_uploads": true,
  "suggestion_commit_message": null,
  "merge_commit_template": null,
  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
  "_links": {
    "self": "http://example.com/api/v4/projects",
    "issues": "http://example.com/api/v4/projects/1/issues",
    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
    "labels": "http://example.com/api/v4/projects/1/labels",
    "events": "http://example.com/api/v4/projects/1/events",
    "members": "http://example.com/api/v4/projects/1/members",
    "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
  }
}

프로젝트 스타를 표시하는 사용자 디렉터리

지정된 프로젝트를 스타 처리한 사용자 디렉터리을 표시합니다.

GET /projects/:id/starrers
속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
search 문자열 아니요 특정 사용자를 검색합니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/starrers"

예시 응답:

[
  {
    "starred_since": "2019-01-28T14:47:30.642Z",
    "user": {
      "id": 1,
      "username": "jane_smith",
      "name": "Jane Smith",
      "state": "active",
      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
      "web_url": "http://localhost:3000/jane_smith"
    }
  },
  {
    "starred_since": "2018-01-02T11:40:26.570Z",
    "user": {
      "id": 2,
      "username": "janine_smith",
      "name": "Janine Smith",
      "state": "blocked",
      "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
      "web_url": "http://localhost:3000/janine_smith"
    }
  }
]

사용된 언어

프로젝트에 사용된 언어와 해당 언어의 백분율 값을 가져옵니다.

GET /projects/:id/languages
속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/languages"

예시 응답:

{
  "Ruby": 66.69,
  "JavaScript": 22.98,
  "HTML": 7.91,
  "CoffeeScript": 2.42
}

프로젝트 아카이브

사용자가 관리자이거나 이 프로젝트의 소유자인 경우 프로젝트를 아카이브 처리합니다. 이 작업은 멱등성을 가지므로 이미 아카이브된 프로젝트를 아카이브 처리해도 프로젝트가 변경되지 않습니다.

POST /projects/:id/archive
속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/archive"

예시 응답:

{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "private",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  ...
}

프로젝트 다시 시작하기

사용자가 관리자이거나 이 프로젝트의 소유자인 경우 프로젝트를 다시 시작합니다. 이 작업은 멱등성을 가지므로 아카이브되지 않은 프로젝트를 다시 시작해도 프로젝트에는 변화가 없습니다.

POST /projects/:id/unarchive
속성 유형 필수여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/unarchive"

예시 응답:

{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "private",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  "owner": {
    "id": 3,
    "name": "Diaspora",
    "created_at": "2013-09-30T13:46:02Z"
  },
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
  "repository_object_format": "sha1",
  "issues_enabled": true,
  "open_issues_count": 1,
  "merge_requests_enabled": true,
  "jobs_enabled": true,
  "wiki_enabled": true,
  "snippets_enabled": false,
  "can_create_merge_request_in": true,
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "disabled",
  "security_and_compliance_access_level": "disabled",
  "created_at": "2013-09-30T13:46:02Z",
  "updated_at": "2013-09-30T13:46:02Z",
  "last_activity_at": "2013-09-30T13:46:02Z",
  "creator_id": 3,
  "namespace": {
    "id": 3,
    "name": "Diaspora",
    "path": "diaspora",
    "kind": "group",
    "full_path": "diaspora"
  },
  "import_status": "none",
  "import_error": null,
  "permissions": {
    "project_access": {
      "access_level": 10,
      "notification_level": 3
    },
    "group_access": {
      "access_level": 50,
      "notification_level": 3
    }
  },
  "archived": false,
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE",
  "license": {
    "key": "lgpl-3.0",
    "name": "GNU Lesser General Public License v3.0",
    "nickname": "GNU LGPLv3",
    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
  },
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "forks_count": 0,
  "star_count": 0,
  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
  "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,
  "ci_separated_caches": true,
  "ci_restrict_pipeline_cancellation_role": "developer",
  "public_jobs": true,
  "shared_with_groups": [],
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": false,
  "restrict_user_defined_variables": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": false,
  "request_access_enabled": false,
  "merge_method": "merge",
  "squash_option": "default_on",
  "autoclose_referenced_issues": true,
  "enforce_auth_checks_on_uploads": true,
  "suggestion_commit_message": null,
  "merge_commit_template": null,
  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
  "_links": {
    "self": "http://example.com/api/v4/projects",
    "issues": "http://example.com/api/v4/projects/1/issues",
    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
    "labels": "http://example.com/api/v4/projects/1/labels",
    "events": "http://example.com/api/v4/projects/1/events",
    "members": "http://example.com/api/v4/projects/1/members",
    "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
  }
}

프로젝트 삭제

이 엔드포인트는 다음과 같습니다:

  • 사용자 또는 통합 사진 아직 고정이 안되었습니다.
  • 삭제되어 있으면 즉시 삭제하지 않고 일정을 따로 두어 해당 프로젝트를 지연시킵니다.
  • Premium이나 Ultimate으로 시작할 경우 프로젝트를 이미 삭제 했거나, ‘permanently_remove’ 및 ‘full_path’ 매개변수가 전달된 경우 프로젝트를 즉시 삭제합니다.
  • Premium이나 Ultimate으로 시작한 경우, 디폴트 삭제 지연시간에 지정된 날짜 후에 삭제됩니다.
    관리자 영어:
    https://about.gitlab.com/pricing
  • WARNING:
  • Admin Area DELETE 예약 프로젝트 삭제 설정은 GitLab 15.9에서 사라졌으며 GitLab 16.0에서 제거되었습니다.
DELETE /projects/:id

| 속성 | 유형 | 필수여부 | 설명 | |———————-|———————–|———-|—————————————————–| | id | 정수 또는 문자열 | 예 | 프로젝트의 ID 또는 [URL 인코딩된 경로](rest/index.md#namespaced-path-encoding). | | full_path | 문자열 | no | permanently_remove과 함께 사용하는 프로젝트의 전체 경로. Https://about.gitlab-re-modelling.com이용하면 get single project에서 path_with_namespace을 사용하여 프로젝트 경로를 찾을 수 있습니다. Premium 및 Ultimate 전용입니다. | | permanently_remove | 부울/문자열 | no | 삭제 표시된 프로젝트를 즉시 삭제합니다. Https://about.gitlab-re-modelling.com/이용하면 get single project에서 path_with_namespace`을 사용하여 프로젝트 경로를 찾을 수 있습니다. Premium 및 Ultimate 전용입니다. |

삭제 대상으로 표시된 프로젝트 복원

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

삭제 대상으로 표시된 프로젝트를 복원합니다.

POST /projects/:id/restore
속성 타입 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.

파일 업로드

지정된 프로젝트에 파일을 업로드하여 이슈 또는 Merge Request 설명 또는 코멘트에 사용합니다.

POST /projects/:id/uploads
속성 타입 필수 설명
file 문자열 업로드할 파일.
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.

파일을 파일 시스템에서 업로드하려면 --form 인수를 사용하세요. 이렇게 하면 cURL이 Content-Type: multipart/form-data 헤더를 사용하여 데이터를 게시합니다. file= 매개변수는 파일 시스템의 파일을 가리키고 @로 시작해야 합니다. 예시:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "file=@dk.png" "https://gitlab.example.com/api/v4/projects/5/uploads"

반환된 객체:

{
  "alt": "dk",
  "url": "/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
  "full_path": "/namespace1/project1/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
  "markdown": "![dk](/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png)"
}

반환된 url은 프로젝트 경로를 기준으로 상대적입니다. 반환된 full_path는 파일의 절대 경로입니다. Markdown 컨텍스트에서는 markdown 형식을 사용할 때 링크가 확장됩니다.

프로젝트 아바타 업로드

지정된 프로젝트에 아바타를 업로드합니다.

PUT /projects/:id
속성 타입 필수 설명
avatar 문자열 업로드할 파일.
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.

파일 시스템에서 아바타를 업로드하려면 --form 인수를 사용하세요. 이렇게 하면 cURL이 Content-Type: multipart/form-data 헤더를 사용하여 데이터를 게시합니다. file= 매개변수는 파일 시스템의 이미지 파일을 가리키고 @로 시작해야 합니다. 예시:

예시 요청:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "avatar=@dk.png" "https://gitlab.example.com/api/v4/projects/5"

반환된 객체:

{
  "avatar_url": "https://gitlab.example.com/uploads/-/system/project/avatar/2/dk.png"
}

프로젝트 아바타 다운로드

프로젝트 아바타를 가져옵니다. 프로젝트가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 액세스할 수 있습니다.

GET /projects/:id/avatar
속성 타입 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.

예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/avatar"

프로젝트 아바타 제거

프로젝트 아바타를 제거하려면 avatar 속성에 공백 값을 사용하세요.

예시 요청:

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

그룹과 프로젝트 공유

그룹과 프로젝트를 공유할 수 있습니다.

POST /projects/:id/share
속성 타입 필수 설명
group_access 정수 그룹에 부여할 역할(access_level).
group_id 정수 공유할 그룹의 ID.
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
expires_at 문자열 아니요 ISO 8601 형식의 공유 만료 날짜. 예: 2016-09-26.

그룹 내에서 공유된 프로젝트 링크 삭제

그룹에서 프로젝트의 공유를 해제합니다. 성공하면 204와 내용 없음을 반환합니다.

DELETE /projects/:id/share/:group_id
속성 타입 필수 설명
group_id 정수 그룹의 ID.
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/share/17"

프로젝트 멤버 가져오기

다른 프로젝트에서 멤버를 가져옵니다.

대상 프로젝트에서의 중요성에 따라 가져온 멤버의 역할이 다릅니다:

  • 유지보수자(Maintainer): 소스 프로젝트에서 소유자 역할을 하는 멤버는 유지보수자 역할로 가져옵니다.
  • 소유자(Owner): 소스 프로젝트에서 소유자 역할을 하는 멤버는 소유자 역할로 가져옵니다.
POST /projects/:id/import_project_members/:project_id
속성 타입 필수 설명
id 정수 또는 문자열 멤버를 받을 대상 프로젝트의 ID 또는 URL-인코딩된 경로.
project_id 정수 또는 문자열 멤버를 가져올 소스 프로젝트의 ID 또는 URL-인코딩된 경로.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/import_project_members/32"

반환: - 성공하면 200 OK. - 대상 또는 소스 프로젝트가 존재하지 않거나 요청자가 액세스할 수 없으면 404 Project Not Found. - 프로젝트 멤버 가져오기가 완료되지 않으면 422 Unprocessable Entity.

예시 응답:

모든 이메일이 성공적으로 전송된 경우 (200 HTTP 상태 코드):

{  "status":  "success"  }

1명 이상의 멤버를 가져오는 중에 오류가 있는 경우 (200 HTTP 상태 코드):

{
  "status": "error",
  "message": {
               "john_smith": "Some individual error message",
               "jane_smith": "Some individual error message"
             },
  "total_members_count": 3
}

시스템 오류가 있는 경우 (404422 HTTP 상태 코드):

{  "message":  "Import failed"  }

훅 (Hooks)

프로젝트 훅(Project Hooks) 또는 웹훅(Webhooks)로도 불립니다. 이것들은 시스템 전체에 대한 시스템 훅(System Hooks)과는 다릅니다.

프로젝트 훅 디렉터리

프로젝트 훅 디렉터리을 가져옵니다.

GET /projects/:id/hooks
속성 유형 필수 설명
id integer or string Yes 프로젝트의 ID 또는 URL-encoded path.

프로젝트 훅 가져오기

특정 프로젝트의 훅을 가져옵니다.

GET /projects/:id/hooks/:hook_id
속성 유형 필수 설명
hook_id integer Yes 프로젝트 훅의 ID입니다.
id integer or string Yes 프로젝트의 ID 또는 URL-encoded path.
{
  "id": 1,
  "url": "http://example.com/hook",
  "name": "Hook name",
  "description": "Hook description",
  "project_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,
  "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 /projects/:id/hooks
속성 유형 필수 설명
id integer or string Yes 프로젝트의 ID 또는 URL-encoded path.
url string Yes 훅 URL입니다.
name string No 훅의 이름 (GitLab 17.1에서 도입되었음).
description string No 훅의 설명 (GitLab 17.1에서 도입되었음).
confidential_issues_events boolean No 기밀 이슈 이벤트에서 훅을 트리거합니다.
confidential_note_events boolean No 기밀 노트 이벤트에서 훅을 트리거합니다.
deployment_events boolean No 배포 이벤트에서 훅을 트리거합니다.
enable_ssl_verification boolean No 훅을 트리거할 때 SSL 검증을 수행합니다.
issues_events boolean No 이슈 이벤트에서 훅을 트리거합니다.
job_events boolean No 작업 이벤트에서 훅을 트리거합니다.
merge_requests_events boolean No Merge Request 이벤트에서 훅을 트리거합니다.
note_events boolean No 노트 이벤트에서 훅을 트리거합니다.
pipeline_events boolean No 파이프라인 이벤트에서 훅을 트리거합니다.
push_events_branch_filter string No 일치하는 브랜치에 대한 푸시 이벤트에서 훅을 트리거합니다.
push_events boolean No 푸시 이벤트에서 훅을 트리거합니다.
releases_events boolean No 릴리스 이벤트에서 훅을 트리거합니다.
tag_push_events boolean No 태그 푸시 이벤트에서 훅을 트리거합니다.
token string No 받은 페이로드를 확인하기 위한 비밀 토큰; 응답에는 토큰이 포함되지 않습니다.
wiki_page_events boolean No 위키 이벤트에서 훅을 트리거합니다.
resource_access_token_events boolean No 프로젝트 액세스 토큰 만료 이벤트에서 훅을 트리거합니다.
custom_webhook_template string No 훅을 위한 사용자 정의 웹훅 템플릿입니다.

프로젝트 훅 편집

지정된 프로젝트의 훅을 편집합니다.

PUT /projects/:id/hooks/:hook_id
속성 유형 필수 설명
hook_id integer Yes 프로젝트 훅의 ID입니다.
id integer or string Yes 프로젝트의 ID 또는 URL-encoded path.
url string Yes 훅의 URL입니다.
name string No 훅의 이름 (GitLab 17.1에서 도입되었음).
description string No 훅의 설명 (GitLab 17.1에서 도입되었음).
confidential_issues_events boolean No 기밀 이슈 이벤트에서 훅을 트리거합니다.
confidential_note_events boolean No 기밀 노트 이벤트에서 훅을 트리거합니다.
deployment_events boolean No 배포 이벤트에서 훅을 트리거합니다.
enable_ssl_verification boolean No 훅을 트리거할 때 SSL 검증을 수행합니다.
issues_events boolean No 이슈 이벤트에서 훅을 트리거합니다.
job_events boolean No 작업 이벤트에서 훅을 트리거합니다.
merge_requests_events boolean No Merge Request 이벤트에서 훅을 트리거합니다.
note_events boolean No 노트 이벤트에서 훅을 트리거합니다.
pipeline_events boolean No 파이프라인 이벤트에서 훅을 트리거합니다.
push_events_branch_filter string No 일치하는 브랜치에 대한 푸시 이벤트에서 훅을 트리거합니다.
push_events boolean No 푸시 이벤트에서 훅을 트리거합니다.
releases_events boolean No 릴리스 이벤트에서 훅을 트리거합니다.
tag_push_events boolean No 태그 푸시 이벤트에서 훅을 트리거합니다.
token string No 받은 페이로드를 확인하기 위한 비밀 토큰입니다. 응답에는 토큰이 포함되지 않습니다. 웹훅 URL을 변경하면 비밀 토큰은 리셋되고 유지되지 않습니다.
wiki_page_events boolean No 위키 페이지 이벤트에서 훅을 트리거합니다.
resource_access_token_events boolean No 프로젝트 액세스 토큰 만료 이벤트에서 훅을 트리거합니다.
custom_webhook_template string No 훅을 위한 사용자 정의 웹훅 템플릿입니다.

프로젝트 훅 삭제

프로젝트에서 훅을 제거합니다. 이 메서드는 멱등성을 갖고 있으며 여러 번 호출될 수 있습니다. 훅이 사용 가능하든 그렇지 않든지에 상관없습니다.

DELETE /projects/:id/hooks/:hook_id
속성 유형 필수 설명
hook_id integer Yes 프로젝트 훅의 ID입니다.
id integer or string Yes 프로젝트의 ID 또는 URL-encoded path.

프로젝트 훅이 사용 가능한 경우 JSON 응답이 반환되거나 빈 응답이 반환됩니다.

테스트 프로젝트 후크 트리거

  • GitLab 16.11에서 도입
  • GitLab 17.0에서 특별 속도 제한 도입됨. 기본적으로 web_hook_test_api_endpoint_rate_limit라는 플래그와 함께.

지정된 프로젝트에 대해 테스트 후크를 트리거합니다.

GitLab 17.0 이상에서이 엔드포인트는 프로젝트 후크 당 분당 세 개의 특별한 속도 제한이 있습니다. Self-Managed형 GitLab 및 GitLab Dedicated에서이 제한을 해제하려면 관리자가 web_hook_test_api_endpoint_rate_limit라는 피처 플래그를 비활성화 할 수 있습니다.

POST /projects/:id/hooks/:hook_id/test/:trigger
속성 유형 필수 설명
hook_id integer Yes 프로젝트 후크의 ID입니다.
id integer 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩 된 경로.
trigger 문자열 Yes push_events, tag_push_events, issues_events, confidential_issues_events, note_events, merge_requests_events, job_events, pipeline_events, wiki_page_events, releases_events, emoji_events, 또는 resource_access_token_events 중 하나.
{"message":"201 Created"}

포크 관계

기존 프로젝트 간의 포크 관계 수정을 허용합니다. 프로젝트 소유자 및 관리자만 가능합니다.

기존 프로젝트 간의 포크 관계 생성

POST /projects/:id/fork/:forked_from_id
속성 유형 필수 설명
forked_from_id ID Yes 포크된 프로젝트의 ID입니다.
id integer 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩 된 경로.

기존 포크 관계 삭제

DELETE /projects/:id/fork
속성 유형 필수 설명
id integer 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩 된 경로.

프로젝트 이름별 검색

인증된 사용자가 접근할 수있는 이름으로 프로젝트 검색합니다. 이 엔드포인트는 프로젝트가 공개적으로 접근 가능한 경우 인증없이 액세스 할 수 있습니다.

GET /projects
속성 유형 필수 설명
search 문자열 Yes 프로젝트 이름에 포함된 문자열입니다.
order_by 문자열 No id, name, created_at 또는 last_activity_at 필드로 정렬된 결과를 반환합니다.
sort 문자열 No asc 또는 desc 순서로 정렬된 요청을 반환합니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects?search=test"

프로젝트의 Housekeeping 작업 시작

POST /projects/:id/housekeeping
속성 유형 필수 설명
id integer 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩 된 경로.
task 문자열 No 매뉴얼으로 도달 할 수없는 개체 삭제를 시작하려면 prune을 사용하려면 eager를 사용합니다.

푸시 규칙

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

프로젝트 푸시 규칙 가져오기

프로젝트의 푸시 규칙을 가져옵니다.

GET /projects/:id/push_rule
속성 유형 필수 설명
id integer 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩 된 경로
{
  "id": 1,
  "project_id": 3,
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "ssh\\:\\/\\/",
  "branch_name_regex": "",
  "deny_delete_tag": false,
  "created_at": "2012-10-12T17:04:47Z",
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 5,
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false
}

프로젝트 푸시 규칙 추가

지정된 프로젝트에 푸시 규칙을 추가합니다.

POST /projects/:id/push_rule
속성 유형 필수 설명
id integer 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩 된 경로.
author_email_regex 문자열 No 모든 커밋 작성자 이메일은이와 일치해야합니다. 예 : @my-company.com$.
branch_name_regex 문자열 No 모든 브랜치 이름은이와 일치해야합니다. 예 : (feature|hotfix)\/*.
commit_committer_check 부울 No 사용자는 검증 된 이메일 중 하나가 자신의 것이 아니면이 리포지터리에 커밋을 푸시 할 수 있습니다.
commit_committer_name_check 부울 No 사용자는 커밋 작성자 이름이 자체 GitLab 계정 이름과 일치하는 경우에만이 리포지터리로 커밋 할 수 있습니다.
commit_message_negative_regex 문자열 No 어떤 커밋 메시지도이와 일치하지 않습니다. 예 : ssh\:\/\/.
commit_message_regex 문자열 No 모든 커밋 메시지는이와 일치해야합니다. 예 : Fixed \d+\..*.
deny_delete_tag 부울 No 태그를 삭제하지 못하게합니다.
file_name_regex 문자열 No 제출 된 파일 이름은이와 일치하지 않아야합니다. 예 : (jar|exe)$.
max_file_size 정수 No 최대 파일 크기 (MB).
member_check 부울 No 커밋을 기존 GitLab 사용자의 작성자 (이메일)로 제한합니다.
prevent_secrets 부울 No GitLab이 비밀을 포함 할 것으로 생각되는 파일을 거부합니다.
reject_unsigned_commits 부울 No 서명되지 않은 커밋을 거부합니다.

프로젝트 푸시 규칙 편집

지정된 프로젝트에 대해 푸시 규칙을 편집합니다.

PUT /projects/:id/push_rule
속성 유형 필수 설명
id integer 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩 된 경로.
author_email_regex 문자열 No 모든 커밋 작성자 이메일은이와 일치해야합니다. 예 : @my-company.com$.
branch_name_regex 문자열 No 모든 브랜치 이름은이와 일치해야합니다. 예 : (feature|hotfix)\/*.
commit_committer_check 부울 No 사용자는 검증 된 이메일 중 하나가 자신의 것이 아니면이 리포지터리에 커밋을 푸시 할 수 있습니다.
commit_committer_name_check 부울 No 사용자는 커밋 작성자 이름이 자체 GitLab 계정 이름과 일치하는 경우에만이 리포지터리로 커밋 할 수 있습니다.
commit_message_negative_regex 문자열 No 어떤 커밋 메시지도이와 일치하지 않습니다. 예 : ssh\:\/\/.
commit_message_regex 문자열 No 모든 커밋 메시지는이와 일치해야합니다. 예 : Fixed \d+\..*.
deny_delete_tag 부울 No 태그를 삭제하지 못하게합니다.
file_name_regex 문자열 No 제출 된 파일 이름은이와 일치하지 않아야합니다. 예 : (jar|exe)$.
max_file_size 정수 No 최대 파일 크기 (MB).
member_check 부울 No 커밋을 기존 GitLab 사용자의 작성자 (이메일)로 제한합니다.
prevent_secrets 부울 No GitLab이 비밀을 포함 할 것으로 생각되는 파일을 거부합니다.
reject_unsigned_commits 부울 No 서명되지 않은 커밋을 거부합니다.

프로젝트 푸시 규칙 삭제

  • 13.9에서 GitLab Premium으로 이동되었습니다.

프로젝트에서 푸시 규칙을 제거합니다.

DELETE /projects/:id/push_rule
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩 된 경로.

사용자가 프로젝트를 전송할 수있는 그룹 가져 오기

사용자가 프로젝트를 전송 할 수있는 그룹의 디렉터리을 검색합니다.

GET /projects/:id/transfer_locations
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩 된 경로.
search 문자열 아니오 검색 할 그룹 이름.

예시 요청:

curl --request GET "https://gitlab.example.com/api/v4/projects/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"
  }
]

프로젝트를 새 네임 스페이스로 전송합니다

프로젝트를 전송하기 전에 프로젝트 문서를 확인하십시오.

PUT /projects/:id/transfer
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩 된 경로.
namespace 정수 또는 문자열 프로젝트를 전송 할 네임 스페이스의 ID 또는 경로.

예시 요청:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/transfer?namespace=14"

예시 응답:

  {
  "id": 7,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "name": "hello-world",
  "name_with_namespace": "cute-cats / hello-world",
  "path": "hello-world",
  "path_with_namespace": "cute-cats/hello-world",
  "created_at": "2020-10-15T16:25:22.415Z",
  "updated_at": "2020-10-15T16:25:22.415Z",
  "default_branch": "main",
  ...
  (이하 생략)
  ...
  "compliance_frameworks": [],
  "warn_about_potentially_unwanted_characters": true
}

브랜치

Branches 문서에서 자세히 알아보기.

프로젝트 가져오기/내보내기

Project import/export 문서에서 자세히 알아보기.

프로젝트 구성원

Project members 문서에서 자세히 알아보기.

프로젝트 취약점

Project vulnerabilities 문서에서 자세히 알아보기.

프로젝트의 풀 미러 세부 정보 가져오기

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

프로젝트의 풀 미러의 세부 정보를 반환합니다.

GET /projects/:id/mirror/pull

지원되는 속성:

속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.

요청 예시:

curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/mirror/pull"

응답 예시:

{
  "id": 101486,
  "last_error": null,
  "last_successful_update_at": "2020-01-06T17:32:02.823Z",
  "last_update_at": "2020-01-06T17:32:02.823Z",
  "last_update_started_at": "2020-01-06T17:31:55.864Z",
  "update_status": "finished",
  "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git"
}

프로젝트의 풀 미러 구성

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

풀 미러 구성을 변경하여, 원격 리포지터리가 공개적으로 접근 가능하거나 username:token 인증을 통해 API를 통해 새 프로젝트를 생성하거나 기존 프로젝트를 업데이트할 수 있습니다.

HTTP 리포지터리가 공개적으로 접근이 불가능한 경우, URL에 인증 정보를 추가할 수 있습니다. 예시: https://username:token@gitlab.company.com/group/project.git. 여기서 token은 API 스코프가 활성화된 개인 액세스 토큰입니다.

속성 유형 필수 설명
import_url 문자열 미러링할 원격 리포지터리의 URL (user:token이 필요한 경우).
mirror 부울 true로 설정하면 프로젝트에 대한 풀 미러링을 활성화시킵니다.
mirror_trigger_builds 부울 아니요 true로 설정하면 미러 업데이트를 위해 파이프라인을 트리거합니다.
only_mirror_protected_branches 부울 아니요 true로 설정하면 보호된 브랜치에 대해서만 미러링을 제한합니다.
mirror_branch_regex 문자열 아니요 정규 표현식을 포함합니다. 정규 표현식과 일치하는 이름의 브랜치만 미러링됩니다. only_mirror_protected_branches가 비활성화되어 있어야 합니다.

풀 미러가 포함된 프로젝트 생성 예시:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
 --header "Content-Type: application/json" \
 --data '{
  "name": "new_project",
  "namespace_id": "1",
  "mirror": true,
  "import_url": "https://username:token@gitlab.example.com/group/project.git"
 }' \
 --url "https://gitlab.example.com/api/v4/projects/"

풀 미러 추가 예시:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
 --url "https://gitlab.example.com/api/v4/projects/:id" \
 --data "mirror=true&import_url=https://username:token@gitlab.example.com/group/project.git"

풀 미러 제거 예시:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
 --url "https://gitlab.example.com/api/v4/projects/:id"  \
 --data "mirror=false"

프로젝트에 대한 풀 미러링 프로세스 시작

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated
  • 13.9에서 GitLab Premium로 이전되었습니다.
POST /projects/:id/mirror/pull
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/mirror/pull"

프로젝트 뱃지

Project Badges 문서에서 자세히 알아보기.

Git 리포지터리의 스냅샷 다운로드

이 엔드포인트는 관리자 사용자만 접근할 수 있습니다.

프로젝트 (또한 위키, 요청시) Git 리포지터리의 스냅샷을 다운로드합니다. 이 스냅샷은 항상 압축되지 않는 tar 형식입니다.

리포지터리가 git clone이 작동하지 않을 정도로 손상된 경우, 스냅샷은 데이터의 일부를 검색할 수 있게 해줄 수 있습니다.

GET /projects/:id/snapshot
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
wiki 부울 아니요 프로젝트 리포지터리 대신 위키를 다운로드할지 여부.

리포지터리 스토리지 경로 가져오기

Gitaly 클러스터가 사용되지 않을 경우, 지정된 프로젝트의 리포지터리 스토리지 경로를 가져옵니다. Gitaly 클러스터가 사용 중인 경우, Praefect-generated replica paths를 참조하세요.

관리자만 사용할 수 있습니다.

GET /projects/:id/storage
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-인코딩된 경로.
[
  {
    "project_id": 1,
    "disk_path": "@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
    "created_at": "2012-10-12T17:04:47Z",
    "repository_storage": "default"
  }
]