- 프로젝트 가시성 수준
- 사용되지 않는 속성
- 모든 프로젝트 나열
- 사용자의 프로젝트 목록
- 사용자가 기여한 프로젝트 목록
- 프로젝트 이름으로 프로젝트 검색
- 단일 프로젝트 얻기
- 프로젝트 사용자 가져오기
- 프로젝트 그룹 목록
- 프로젝트 공유 가능한 그룹 목록
- 프로젝트 생성
- 사용자용 프로젝트 생성
- 프로젝트 수정
- 프로젝트로 초대된 그룹 목록 나열
- 프로젝트에서 사용된 프로그래밍 언어 목록 및 사용률 가져오기
- 프로젝트 아카이브
- 프로젝트 언아카이브
- 프로젝트 삭제
- 삭제가 표시된 프로젝트 복원
- 프로젝트 아바타 업로드
- 프로젝트 아바타 다운로드
- 프로젝트 아바타 제거
- 그룹과 프로젝트 공유
- 그룹 내에서 공유된 프로젝트 링크 삭제
- 사용자가 프로젝트를 전송할 수있는 그룹 가져오기
- 프로젝트를 새로운 네임스페이스로 전송
- 프로젝트 구성원 가져오기
- 프로젝트의 housekeeping 작업 시작
- 실시간 보안 스캔
- Git 저장소의 스냅샷 다운로드
- 저장소 저장 경로 가져오기
프로젝트 API
REST API를 사용하여 프로젝트를 관리합니다.
사용자별:
- 프로젝트의 기본 역할 중 하나를 가진 사용자는 프로젝트의 속성을 읽을 수 있습니다.
- 소유자 또는 유지관리자 역할을 하는 사용자는 프로젝트의 속성을 편집할 수도 있습니다.
프로젝트 가시성 수준
GitLab의 프로젝트는 다음 중 하나의 가시성 수준을 가질 수 있습니다:
- 비공개
- 내부
- 공개
가시성 수준은 프로젝트의 visibility
필드에 의해 결정됩니다.
더 많은 정보는 프로젝트 가시성을 참조하세요.
응답으로 반환되는 필드는 인증된 사용자의 권한에 따라 다릅니다.
사용되지 않는 속성
이러한 속성들은 사용되지 않으며 향후 REST API 버전에서 제거될 수 있습니다. 대신 대체 속성을 사용하세요.
사용되지 않는 속성 | 대체 속성 |
---|---|
tag_list
|
topics 속성
|
marked_for_deletion_at
|
marked_for_deletion_on . 프리미엄 및 얼티밋 티어 전용.
|
approvals_before_merge
| 병합 요청 승인 API. 프리미엄 및 얼티밋 티어 전용. |
모든 프로젝트 나열
- 응답의
_links.cluster_agents
속성은 GitLab 15.0에서 소개되었습니다.
인증된 사용자를 위해 GitLab 전체에서 가시적인 모든 프로젝트의 목록을 가져옵니다. 인증 없이 액세스할 때에는 간단한 필드만을 가진 공개 프로젝트만 반환됩니다.
GET /projects
지원되는 속성:
속성 | 유형 | 필수여부 | 설명 |
---|---|---|---|
archived
| boolean | 아니요 | 아카이브된 상태로 제한합니다. |
id_after
| integer | 아니요 | 지정된 ID보다 큰 ID를 가진 프로젝트로 결과를 제한합니다. |
id_before
| integer | 아니요 | 지정된 ID보다 작은 ID를 가진 프로젝트로 결과를 제한합니다. |
imported
| boolean | 아니요 | 현재 사용자가 외부 시스템에서 가져온 프로젝트로 결과를 제한합니다. |
include_hidden
| boolean | 아니요 | 숨겨진 프로젝트를 포함합니다. (관리자 전용) 프리미엄 및 얼티밋 전용. |
include_pending_delete
| boolean | 아니요 | 삭제 대기 중인 프로젝트를 포함합니다. (관리자 전용) |
last_activity_after
| datetime | 아니요 | 지정된 시간 이후의 마지막 활동을 가진 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ )
|
last_activity_before
| datetime | 아니요 | 지정된 시간 이전의 마지막 활동을 가진 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ )
|
membership
| boolean | 아니요 | 현재 사용자가 멤버인 프로젝트로 제한합니다. |
min_access_level
| integer | 아니요 | 현재 사용자의 최소 역할 (access_level )로 제한합니다.
|
order_by
| string | 아니요 |
id , name , path , created_at , updated_at , star_count , last_activity_at , 또는 similarity 필드로 프로젝트를 정렬하여 반환합니다. repository_size , storage_size , packages_size 또는 wiki_size 필드는 관리자에게만 허용됩니다. similarity 은 검색 시에만 사용 가능하며 현재 사용자가 멤버인 프로젝트로 제한됩니다. 기본값은 created_at 입니다.
|
owned
| boolean | 아니요 | 암시적으로 현재 사용자에게 속한 프로젝트로 제한합니다. |
repository_checksum_failed
| boolean | 아니요 | 리포지토리 체크섬 계산에 실패한 프로젝트로 제한합니다. 프리미엄 및 얼티밋 전용. |
repository_storage
| string | 아니요 |
repository_storage 에 저장된 프로젝트로 결과를 제한합니다. (관리자 전용)
|
search_namespaces
| boolean | 아니요 | 검색 기준과 일치하는 조상 네임스페이스를 포함합니다. 기본값은 false 입니다.
|
search
| string | 아니요 | 검색 기준과 일치하는 프로젝트 목록을 반환합니다. |
simple
| boolean | 아니요 | 각 프로젝트의 제한된 필드만 반환합니다. 인증 없이는 simple 필드만 반환됩니다.
|
sort
| string | 아니요 |
asc 또는 desc 순서로 정렬된 프로젝트를 반환합니다. 기본값은 desc 입니다.
|
starred
| boolean | 아니요 | 현재 사용자가 스타를 표시한 프로젝트로 제한합니다. |
statistics
| boolean | 아니요 | 프로젝트 통계를 포함합니다. 적어도 Reporter 역할을 가진 사용자에게만 사용 가능합니다. |
topic_id
| integer | 아니요 | 주제 ID로 지정된 주제를 가진 프로젝트로 결과를 제한합니다. |
topic
| string | 아니요 | 쉼표로 구분된 주제 이름입니다. 모든 주제를 참조하는 프로젝트로 결과를 제한합니다. topics 속성을 확인하세요.
|
updated_after
| datetime | 아니요 | 지정된 시간 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ ). [GitLab 15.10에서 소개]되었습니다. 이 필터가 작동하려면 order_by 속성으로 updated_at 을 제공해야 합니다.
|
updated_before
| datetime | 아니요 | 지정된 시간 이전에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ ). [GitLab 15.10에서 소개]되었습니다. 이 필터가 작동하려면 order_by 속성으로 updated_at 을 제공해야 합니다.
|
visibility
| string | 아니요 |
public , internal , 또는 private 가시성으로 결과를 제한합니다.
|
wiki_checksum_failed
| boolean | 아니요 | 위키 체크섬 계산에 실패한 프로젝트로 결과를 제한합니다. 프리미엄 및 얼티밋 전용. |
with_custom_attributes
| boolean | 아니요 | 응답에 사용자 지정 속성을 포함합니다. (관리자 전용) |
with_issues_enabled
| boolean | 아니요 | 활성화된 이슈 기능으로 결과를 제한합니다. |
with_merge_requests_enabled
| boolean | 아니요 | 활성화된 병합 요청 기능으로 결과를 제한합니다. |
with_programming_language
| string | 아니요 | 주어진 프로그래밍 언어를 사용하는 프로젝트로 결과를 제한합니다. |
marked_for_deletion_on
| date | 아니요 | 프로젝트가 삭제로 표시된 날짜로 필터링합니다. [GitLab 17.1에서 소개]되었습니다. 프리미엄 및 얼티밋 전용. |
이 엔드포인트는 선택된 order_by
옵션에 대해 keyset 페이지네이션을 지원합니다.
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",
...
},
{
...
}
]
참고:
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 pagination을 사용하여 최대 50,000개의 프로젝트에 액세스할 수 있습니다.
이 제한을 초과하는 프로젝트를 검색하려면 keyset pagination을 사용하세요.
Keyset pagination은 order_by=id
만 지원합니다. 다른 정렬 옵션은 사용할 수 없습니다.
사용자의 프로젝트 목록
주어진 사용자가 소유한 가시적인 프로젝트 목록을 가져옵니다. 인증 없이 액세스할 경우, 공개 프로젝트만 반환됩니다.
필수 조건:
- 특정 속성을 보려면, 프로젝트의 관리자거나 소유자 역할이어야 합니다.
참고:
특정 사용자(user_id
로 지정된)의 네임스페이스에 있는 프로젝트만 반환됩니다. 사용자가 단일 그룹이나 하위 그룹에 있는 프로젝트는 반환되지 않습니다. 프로필이 비공개로 설정된 경우 빈 목록이 반환됩니다.
이 엔드포인트는 선택된 order_by
옵션에 대한 keyset pagination을 지원합니다.
GET /users/:user_id/projects
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
user_id
| string | Yes | 사용자의 ID 또는 사용자 이름입니다. |
archived
| boolean | No | 보관된 상태로 제한합니다. |
id_after
| integer | No | 지정된 ID보다 큰 ID를 가진 프로젝트로 결과를 제한합니다. |
id_before
| integer | No | 지정된 ID보다 작은 ID를 가진 프로젝트로 결과를 제한합니다. |
membership
| boolean | No | 현재 사용자가 멤버인 프로젝트로 제한합니다. |
min_access_level
| integer | No | 현재 사용자의 최소 역할 (access_level )로 제한합니다.
|
order_by
| string | No | 프로젝트를 id , name , path , created_at , updated_at , star_count , 또는 last_activity_at 필드로 정렬하여 반환합니다. 기본값은 created_at 입니다.
|
owned
| boolean | No | 현재 사용자가 명시적으로 소유한 프로젝트로 제한합니다. |
search
| string | No | 검색 기준과 일치하는 프로젝트 목록을 반환합니다. |
simple
| boolean | No | 각 프로젝트의 제한된 필드만 반환합니다. 인증 없이는 작동하지 않으며, 단순한 필드만 반환됩니다. |
sort
| string | No |
asc 또는 desc 순서로 정렬된 프로젝트를 반환합니다. 기본값은 desc 입니다.
|
starred
| boolean | No | 현재 사용자가 스타를 표시한 프로젝트로 제한합니다. |
statistics
| boolean | No | 프로젝트 통계 정보를 포함합니다. 적어도 기록자 역할을 가진 사용자에게만 제공됩니다. |
updated_after
| datetime | No | 지정된 시간 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ ). GitLab 15.10에 도입되었습니다.
|
updated_before
| datetime | No | 지정된 시간 이전에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ ). GitLab 15.10에 도입되었습니다.
|
visibility
| string | No |
public , internal , 또는 private 가시성으로 제한합니다.
|
with_custom_attributes
| boolean | No | 응답에 사용자 정의 속성을 포함합니다. (관리자만) |
with_issues_enabled
| boolean | No | 활성화된 이슈 기능으로 제한합니다. |
with_merge_requests_enabled
| boolean | No | 활성화된 병합 요청 기능으로 제한합니다. |
with_programming_language
| string | No | 주어진 프로그래밍 언어를 사용하는 프로젝트로 제한합니다. |
예시 응답:
[
{
"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"
],
...
},
...
]
사용자가 기여한 프로젝트 목록
주어진 사용자가 기여한 가시적인 프로젝트 목록을 가져옵니다.
GET /users/:user_id/contributed_projects
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
user_id
| string | 예 | 사용자의 ID 또는 사용자 이름. |
order_by
| string | 아니오 | 프로젝트를 id , name , path , created_at , updated_at , star_count , 또는 last_activity_at 필드로 정렬하여 반환합니다. 기본값은 created_at 입니다.
|
simple
| boolean | 아니오 | 각 프로젝트에 대해 제한된 필드만 반환합니다. 인증되지 않은 경우, 이 작업은 아무런 작업을 수행하지 않으며 각 필드만 반환됩니다. |
sort
| string | 아니오 | 프로젝트를 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"
],
"owner": {
"id": 3,
"name": "Diaspora",
"created_at": "2013-09-30T13:46:02Z"
},
...
},
{
"id": 6,
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
...
}
]
프로젝트 이름으로 프로젝트 검색
인증된 사용자에게 액세스 가능한 프로젝트의 이름으로 프로젝트를 검색합니다. 인증 없이 이 엔드포인트에 액세스하면 공개적으로 액세스 가능한 프로젝트가 나열됩니다.
GET /projects
예시 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
search
| string | Yes | 프로젝트 이름에 포함된 문자열 |
order_by
| string | No |
id , name , created_at , star_count , 또는 last_activity_at 필드별로 정렬된 요청을 반환합니다.
|
sort
| string | No |
asc 또는 desc 순서로 정렬된 요청을 반환합니다.
|
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects?search=test"
단일 프로젝트 얻기
특정 프로젝트를 얻습니다. 이 엔드포인트는 프로젝트가 공개적으로 액세스 가능한 경우에는 인증 없이 액세스할 수 있습니다.
GET /projects/:id
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| integer or string | Yes | 프로젝트의 ID 또는 URL-encoded path of the project |
license
| boolean | No | 프로젝트 라이센스 데이터를 포함합니다. |
statistics
| boolean | No | 프로젝트 통계를 포함합니다. 적어도 리포터 역할을 가진 사용자에게만 제공됩니다. |
with_custom_attributes
| boolean | No | 응답에 사용자 정의 속성을 포함합니다. (관리자 전용) |
예시 응답:
{
"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>",
...
"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,
...
}
프로젝트가 Fork된 경우, 응답에 forked_from_project
필드가 표시됩니다. 이 필드의 경우 상위 프로젝트가 비공개인 경우 인증을 위한 유효한 토큰을 제공해야 합니다. 또한 mr_default_target_self
값이 표시됩니다. 이 값이 false
이면 기본적으로 모든 병합 요청이 상위 프로젝트를 대상으로 합니다.
{
"id":3,
...
"mr_default_target_self": false,
"forked_from_project":{
"id":13083,
"description":"GitLab Community Edition",
...
}
...
}
이슈 및 병합 요청을 위한 템플릿
Tier: 프리미엄, 얼티밋
Offering: GitLab.com, Self-managed, GitLab Dedicated
GitLab 프리미엄 또는 얼티밋 사용자는 이슈 및 병합 요청 설명 템플릿을 관리하기 위한 issues_template
및 merge_requests_template
매개변수를 볼 수 있습니다.
{
"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"
}
]
프로젝트 생성
operations_access_level
제거됨 in GitLab 16.0.model_registry_access_level
GitLab 16.7에서 등장.
인증된 사용자가 소유한 새 프로젝트를 만듭니다.
만약 HTTP 저장소가 공개적으로 접근 불가능하면 URL에 인증 정보를 추가하세요: https://username:password@gitlab.company.com/group/project.git
, password
는 api
범위가 활성화된 공개 엑세스 키입니다.
POST /projects
지원되는 일반 프로젝트 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
name
| 문자열 | 경로가 제공되지 않으면 예 | 새 프로젝트의 이름. 제공되지 않으면 경로와 동등합니다. |
path
| 문자열 | 이름이 제공되지 않으면 예 | 새 프로젝트의 리포지토리 이름. 제공되지 않으면 이름을 기반으로 생성됩니다(소문자 및 대시가 포함된 문자열로 생성). 경로는 특수 문자로 시작하거나 끝나면 안 되며 연속된 특수 문자를 포함해서는 안 됩니다. |
allow_merge_on_skipped_pipeline
| 부울 | 아니요 | 건너뜀 작업으로 병합 요청을 병합할 수 있는지 여부를 설정합니다. |
approvals_before_merge
| 정수 | 아니요 | 기본적으로 몇 명의 승인자가 병합 요청을 승인해야 하는지 설정합니다. 승인 규칙을 구성하려면 병합 요청 승인 API를 참조하세요. GitLab 16.0에서 사용 중단. 프리미엄 및 얼티밋 전용입니다. |
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
| 정수 | 아니요 | 작업이 실행될 수 있는 최대 시간(초)입니다. |
ci_config_path
| 문자열 | 아니요 | CI 구성 파일 경로입니다. |
container_expiration_policy_attributes
| 해시 | 아니요 | 이 프로젝트의 이미지 정리 정책을 업데이트합니다. cadence (문자열), keep_n (정수), older_than (문자열), name_regex (문자열), name_regex_delete (문자열), name_regex_keep (문자열), enabled (부울)을 허용합니다. cadence , keep_n , older_than 값에 대해 자세한 내용은 container registry 문서를 참조하십시오.
|
container_registry_enabled
| 부울 | 아니요 |
(사용 중단) 이 프로젝트에 대한 컨테이너 레지스트리를 활성화합니다. 대신 container_registry_access_level 을 사용하세요.
|
default_branch
| 문자열 | 아니요 |
기본 브랜치 이름입니다. initialize_with_readme 가 true 여야 합니다.
|
description
| 문자열 | 아니요 | 짧은 프로젝트 설명입니다. |
emails_disabled
| 부울 | 아니요 |
(사용 중단) 이메일 알림을 비활성화합니다. emails_enabled 을 사용하세요
|
emails_enabled
| 부울 | 아니요 | 이메일 알림을 활성화합니다. |
external_authorization_classification_label
| 문자열 | 아니요 | 프로젝트의 분류 라벨입니다. 프리미엄 및 얼티밋만 해당됩니다. |
group_runners_enabled
| 부울 | 아니요 | 이 프로젝트에 대해 그룹 러너를 활성화합니다. |
group_with_project_templates_id
| 정수 | 아니요 | 그룹 수준 사용자 정의 템플릿의 경우 모든 사용자 정의 프로젝트 템플릿이 가져오는 그룹의 ID를 지정합니다. 인스턴스 수준 템플릿의 경우 비워두세요. use_custom_template 이 true인 경우 필요합니다. 프리미엄 및 얼티밋 전용입니다.
|
import_url
| 문자열 | 아니요 | 리포지토리를 가져올 URL입니다. URL 값이 비어 있을 때는 initialize_with_readme 를 true 로 설정해서는 안 됩니다. 이렇게 하면 다음 오류가 발생할 수 있습니다: not a git repository .
|
initialize_with_readme
| 부울 | 아니요 | Git 리포지토리에 단순히 README.md 파일만을 가진 새로운 Git 리포지토리를 만들지 여부입니다. 기본값은 false 입니다. 부울이 true일 때는 리포지토리의 대체 콘텐츠를 지정하는 이 엔드포인트의 다른 속성을 전달해서는 안 됩니다. 이렇게 하면 다음 오류가 발생할 수 있습니다: not a git repository . 그런데 이를 자세히 알려면 다음을 확인하십시오.
|
issues_enabled
| 부울 | 아니요 |
(사용 중단) 이 프로젝트에 대해 이슈를 활성화합니다. 대신 issues_access_level 을 사용하세요.
|
jobs_enabled
| 부울 | 아니요 |
(사용 중단) 이 프로젝트에 대해 작업을 활성화합니다. 대신 builds_access_level 을 사용하세요.
|
lfs_enabled
| 부울 | 아니요 | LFS를 활성화합니다. |
merge_method
| 문자열 | 아니요 | 프로젝트의 병합 방법을 설정합니다. merge (병합 커밋), rebase_merge (반복되는 선형 히스토리로 병합 커밋), 또는 ff (빠른 전진 병합)이 될 수 있습니다.
|
merge_pipelines_enabled
| 부울 | 아니요 | 병합된 결과 파이프라인을 활성화하거나 비활성화합니다. |
merge_requests_enabled
| 부울 | 아니요 |
(사용 중단) 이 프로젝트에 대해 병합 요청을 활성화합니다. 대신 merge_requests_access_level 을 사용하세요.
|
merge_trains_enabled
| 부울 | 아니요 | 병합 트레인을 활성화하거나 비활성화합니다. |
merge_trains_skip_train_allowed
| 부울 | 아니요 | 병합 트레인 병합 요청을 파이프라인을 기다릴 필요 없이 병합할 수 있도록 허용합니다. |
mirror_trigger_builds
| 부울 | 아니요 | Pull 미러링이 트리거되면 빌드를 실행합니다. 프리미엄 및 얼티밋 전용입니다. |
mirror
| 부울 | 아니요 | 프로젝트 내에서 Pull 미러링을 활성화합니다. 프리미엄 및 얼티밋 전용입니다. |
namespace_id
| 정수 | 아니요 | 새 프로젝트의 네임스페이스(기본값은 현재 사용자의 네임스페이스). |
only_allow_merge_if_all_discussions_are_resolved
| 부울 | 아니요 | 병합 요청은 모든 토론이 해결되었을 때만 병합될 수 있도록 설정합니다. |
only_allow_merge_if_all_status_checks_passed
| 부울 | 아니요 | 모든 상태 확인이 통과할 때까지 병합 요청의 병합을 차단해야 하는지 여부를 설정합니다. 기본값은 false입니다. GitLab 15.5에서 [도입되었으며](https://gitlab.com/gitlab-org/gitlab/-/issues/369859 |
사용자용 프로젝트 생성
사용자용 프로젝트 생성.
전제 조건:
- 관리자여야 합니다.
HTTP 저장소가 공개적으로 접근할 수 없는 경우 URL에 인증 정보를 추가하세요. 예를 들어, https://username:password@gitlab.company.com/group/project.git
에서 password
는 api
스코프가 활성화된 공개 액세스 키입니다.
POST /projects/user/:user_id
지원되는 일반 프로젝트 속성:
속성 | 유형 | 필요 여부 | 설명 |
---|---|---|---|
name
| string | 예 | 새 프로젝트의 이름. |
user_id
| integer | 예 | 프로젝트 소유자의 사용자 ID. |
allow_merge_on_skipped_pipeline
| boolean | 아니요 | 건너뛴 작업으로 병합 요청을 병합할 수 있는지 여부 설정. |
approvals_before_merge
| integer | 아니요 | 기본적으로 몇 명의 승인자가 병합 요청을 승인해야 하는지 설정. GitLab 16.0에서 사용 중단됨. 승인 규칙을 구성하려면 병합 요청 승인 API를 참조하세요. 프리미엄 및 얼티밋 전용. |
… 이하 생략 … |
프로젝트 기능 가시성 설정 및 액세스 제어 옵션은 다음 중 하나일 수 있습니다:
-
disabled
: 기능을 비활성화합니다. -
private
: 기능을 프로젝트 멤버만 사용할 수 있도록 설정합니다. -
enabled
: 기능을 접근 권한 있는 모든 사용자가 사용할 수 있도록 설정합니다.
속성 | 유형 | 필요 여부 | 설명 |
---|---|---|---|
analytics_access_level
| string | 아니요 | 분석 가시성을 설정합니다. |
builds_access_level
| string | 아니요 | 파이프라인의 가시성을 설정합니다. |
container_registry_access_level
| string | 아니요 | 컨테이너 레지스트리의 가시성을 설정합니다. |
… 이하 생략 … |
프로젝트 수정
기존 프로젝트를 업데이트하세요.
만약 HTTP 저장소가 공개적으로 접근할 수 없다면, 인증 정보를 URL https://username:password@gitlab.company.com/group/project.git
에 추가하고, 여기서 password
는 api
스코프가 활성화된 공개 액세스 키입니다.
PUT /projects/:id
지원되는 일반 프로젝트 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
allow_merge_on_skipped_pipeline
| 부울 | 아니오 | 스킵된 작업으로 병합 요청을 병합할 수 있는지 여부를 설정합니다. |
allow_pipeline_trigger_approve_deployment
| 부울 | 아니오 | 파이프라인 트리거가 배포를 승인할 수 있는지 여부를 설정합니다. 프리미엄 및 얼티밋 전용. |
… | … | … | … |
예를 들어, 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"
프로젝트 기능 가시성 접근 제어 옵션으로 하나 설정할 수 있습니다.:
-
disabled
: 기능 비활성화 -
private
: 기능을 프로젝트 멤버만 활성화합니다. -
enabled
: 기능을 모든 접근 권한이 있는 사람 에게 활성화합니다.
지원되는 프로젝트 가시성 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
analytics_access_level
| 문자열 | 아니오 | 분석 가시성을 설정합니다. |
builds_access_level
| 문자열 | 아니오 | 파이프라인 가시성을 설정합니다. |
… | … | … | … |
프로젝트로 초대된 그룹 목록 나열
프로젝트로 초대된 그룹 목록을 가져옵니다. 인증되지 않은 경우에는 공개적으로 초대된 그룹만 반환됩니다.
이 엔드포인트는 분당 60번의 요청으로 제한됩니다:
- 인증된 사용자의 경우, 사용자당.
- 인증되지 않은 사용자의 경우, IP 주소당.
기본적으로 이 요청은 페이지네이션되어 한 번에 20개의 결과를 반환합니다.
GET /projects/:id/invited_groups
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로 |
search
| 문자열 | 아니오 | 검색 기준과 일치하는 권한이 있는 그룹의 목록 반환 |
min_access_level
| 정수 | 아니오 | 현재 사용자가 최소한 지정된 역할 (access_level )을 가진 그룹으로 제한
|
relation
| 문자열 배열 | 아니오 | 관계(직접 또는 상속)에 따라 그룹을 필터링 |
with_custom_attributes
| 부울 | 아니오 | 응답에 사용자 정의 속성 포함(관리자 전용) |
예시 응답:
[
{
"id": 35,
"web_url": "https://gitlab.example.com/groups/twitter",
"name": "Twitter",
"avatar_url": null,
"full_name": "Twitter",
"full_path": "twitter"
}
]
프로젝트에서 사용된 프로그래밍 언어 목록 및 사용률 가져오기
프로젝트에서 사용된 프로그래밍 언어의 목록과 사용률을 가져옵니다.
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"],
"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": 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,
"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",
"ci_pipeline_variables_minimum_override_role": "maintainer",
"ci_push_repository_for_job_token_allowed": false,
"public_jobs": true,
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": false,
"allow_pipeline_trigger_approve_deployment": 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"
}
}
프로젝트 언아카이브
프로젝트를 언아카이브합니다.
전제 조건:
- 프로젝트의 관리자이거나 프로젝트에 대한 소유자 역할이 할당되어 있어야 합니다.
이 엔드포인트는 멱등성을 가지고 있습니다. 보관 중이 아닌 프로젝트를 언아카이브해도 프로젝트에 변경이 발생하지 않습니다.
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",
"ci_pipeline_variables_minimum_override_role": "maintainer",
"ci_push_repository_for_job_token_allowed": false,
"public_jobs": true,
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": false,
"allow_pipeline_trigger_approve_deployment": 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"
}
}
프로젝트 삭제
프로젝트를 삭제합니다. 이 엔드포인트는 다음 작업을 수행합니다:
- 이슈와 병합 요청을 포함한 모든 관련 리소스를 삭제합니다.
- 프리미엄 또는 얼티밋 티어에서 사용 가능한 경우, 활성화된 경우 지연된 프로젝트 삭제가 적용됩니다.
-
GitLab 15.11부터, 프리미엄 또는 얼티밋 티어에서 프로젝트가 즉시 삭제됩니다:
- 프로젝트가 이미 삭제로 표시된 경우
-
permanently_remove
및full_path
매개 변수가 전달된 경우
- GitLab 16.0부터, 프리미엄 또는 얼티밋 티어에서 지연된 프로젝트 삭제가 기본적으로 활성화됩니다. 삭제는 기본 삭제 지연에서 지정된 일수 후에 발생합니다.
경고: 관리자 영역의 삭제 보호 설정에서 프로젝트를 즉시 삭제하는 옵션이 GitLab 15.9에서 사용되지 않게 표시되었으며, GitLab 16.0에서 제거되었습니다.
DELETE /projects/:id
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
full_path
| 문자열 | 아니오 |
permanently_remove 와 함께 사용할 프로젝트의 전체 경로입니다. GitLab 15.11부터 도입되었습니다. 프로젝트 경로를 찾으려면 단일 프로젝트 가져오기에서 path_with_namespace 를 사용하십시오. 프리미엄 및 얼티밋 전용입니다.
|
permanently_remove
| 부울/문자열 | 아니오 | 삭제가 표시된 경우 프로젝트를 즉시 삭제합니다. GitLab 15.11에서 도입되었습니다. 프리미엄 및 얼티밋 전용입니다. |
삭제가 표시된 프로젝트 복원
삭제가 표시된 프로젝트를 복원합니다.
POST /projects/:id/restore
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
프로젝트 아바타 업로드
지정된 프로젝트에 아바타를 업로드합니다.
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"
}
프로젝트 아바타 다운로드
- GitLab 16.9에서 도입되었습니다.
프로젝트 아바타를 다운로드합니다. 프로젝트가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 액세스할 수 있습니다.
GET /projects/:id/avatar
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/avatar"
프로젝트 아바타 제거
- GitLab 15.4에서 도입되었습니다.
프로젝트 아바타를 제거하려면 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"
사용자가 프로젝트를 전송할 수있는 그룹 가져오기
- GitLab 15.4에서 소개됨
사용자가 프로젝트를 전송할 수있는 그룹 목록을 검색합니다.
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",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"ssh_url_to_repo": "git@gitlab.example.com:cute-cats/hello-world.git",
"http_url_to_repo": "https://gitlab.example.com/cute-cats/hello-world.git",
"web_url": "https://gitlab.example.com/cute-cats/hello-world",
"readme_url": "https://gitlab.example.com/cute-cats/hello-world/-/blob/main/README.md",
"avatar_url": null,
"forks_count": 0,
"star_count": 0,
"last_activity_at": "2020-10-15T16:25:22.415Z",
"namespace": {
"id": 18,
"name": "cute-cats",
"path": "cute-cats",
"kind": "group",
"full_path": "cute-cats",
"parent_id": null,
"avatar_url": null,
"web_url": "https://gitlab.example.com/groups/cute-cats"
},
"container_registry_image_prefix": "registry.example.com/cute-cats/hello-world",
"_links": {
"self": "https://gitlab.example.com/api/v4/projects/7",
"issues": "https://gitlab.example.com/api/v4/projects/7/issues",
"merge_requests": "https://gitlab.example.com/api/v4/projects/7/merge_requests",
"repo_branches": "https://gitlab.example.com/api/v4/projects/7/repository/branches",
"labels": "https://gitlab.example.com/api/v4/projects/7/labels",
"events": "https://gitlab.example.com/api/v4/projects/7/events",
"members": "https://gitlab.example.com/api/v4/projects/7/members"
},
"packages_enabled": true,
"empty_repo": false,
"archived": false,
"visibility": "private",
"resolve_outdated_diff_discussions": false,
"container_registry_enabled": true, // deprecated, use container_registry_access_level instead
"container_registry_access_level": "enabled",
"container_expiration_policy": {
"cadence": "7d",
"enabled": false,
"keep_n": null,
"older_than": null,
"name_regex": null,
"name_regex_keep": null,
"next_run_at": "2020-10-22T16:25:22.746Z"
},
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"service_desk_enabled": false,
"service_desk_address": null,
"can_create_merge_request_in": true,
"issues_access_level": "enabled",
"repository_access_level": "enabled",
"merge_requests_access_level": "enabled",
"forking_access_level": "enabled",
"analytics_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,
"group_runners_enabled": true,
"lfs_enabled": true,
"creator_id": 2,
"import_status": "none",
"open_issues_count": 0,
"ci_default_git_depth": 50,
"public_jobs": true,
"build_timeout": 3600,
"auto_cancel_pending_pipelines": "enabled",
"ci_config_path": null,
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": null,
"allow_pipeline_trigger_approve_deployment": false,
"restrict_user_defined_variables": 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",
"squash_option": "default_on",
"suggestion_commit_message": null,
"merge_commit_template": null,
"auto_devops_enabled": true,
"auto_devops_deploy_strategy": "continuous",
"autoclose_referenced_issues": true,
"approvals_before_merge": 0, // Deprecated. Use merge request approvals API instead.
"mirror": false,
"compliance_frameworks": [],
"warn_about_potentially_unwanted_characters": true
}
프로젝트 구성원 가져오기
다른 프로젝트에서 구성원을 가져옵니다.
대상 프로젝트의 가져오는 구성원의 역할이:
- 유지자(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 프로젝트를 찾을 수 없음
. - 프로젝트 구성원을 가져오는 작업이 성공적으로 완료되지 않았으면
422 처리할 수 없는 엔터티
.
예시 응답:
-
모든 이메일을 성공적으로 보냈을 때 (
200
HTTP 상태 코드):{ "status": "success" }
-
1명 이상의 구성원을 가져오는 동안 오류가 발생했을 때 (
200
HTTP 상태 코드):{ "status": "error", "message": { "john_smith": "일부 개별 오류 메시지", "jane_smith": "일부 개별 오류 메시지" }, "total_members_count": 3 }
-
시스템 오류가 발생했을 때 (
404
및422
HTTP 상태 코드):
{ "message": "가져오기 실패" }
프로젝트의 housekeeping 작업 시작
프로젝트의 housekeeping 작업을 시작합니다.
POST /projects/:id/housekeeping
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 숫자 또는 문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
task
| 문자열 | 아니오 |
prune 은 도달할 수 없는 객체의 수동 가지치기를 트리거하고, eager 은 eager housekeeping을 트리거합니다.
|
실시간 보안 스캔
실시간으로 단일 파일의 SAST 스캔 결과를 반환합니다.
POST /projects/:id/security_scans/sast/scan
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 숫자 또는 문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
예시 요청:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"file_path":"src/main.c",
"content":"#include<string.h>\nint main(int argc, char **argv) {\n char buff[128];\n strcpy(buff, argv[1]);\n return 0;\n}\n"
}' \
--url "https://gitlab.example.com/api/v4/projects/:id/security_scans/sast/scan"
예시 응답:
{
"vulnerabilities": [
{
"name": "보안 문제가 있는 문자열 처리 함수 (strcpy)",
"description": "`strcpy` 패밀리의 함수들은 대상 버퍼로 복사하기 전에 버퍼의 크기를 제한하거나 확인할 수 있는 기능을 제공하지 않습니다. 이는 버퍼 오버플로우를 유발할 수 있습니다. 대상 버퍼에 올바른 제한을 제공하고 문자열이 null로 끝나도록 하는 `strncpy`와 같은 보안이 강화된 대안을 사용하는 것이 좋습니다.\n\n더 많은 정보는 다음을 참조하세요: https://linux.die.net/man/3/strncpy\n\nC Runtime Library (CRT)를 개발 중인 경우, 보안이 강화된 버전이 있으므로 아래에서 확인하십시오:\nhttps://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l?view=msvc-170\n",
"severity": "높음",
"location": {
"file": "src/main.c",
"start_line": 5,
"end_line": 5,
"start_column": 3,
"end_column": 23
}
}
]
}
Git 저장소의 스냅샷 다운로드
이 엔드포인트는 관리자 사용자만 액세스할 수 있습니다.
프로젝트 (또는 요청한 경우 위키)의 Git 저장소의 스냅샷을 다운로드합니다. 이 스냅샷은 항상 압축 해제된 tar 형식입니다.
git clone
작업이 작동하지 않을 정도로 저장소가 손상된 경우, 스냅샷을 통해 일부 데이터를 검색할 수 있습니다.
GET /projects/:id/snapshot
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 숫자 또는 문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
wiki
| 부울 | 아니오 | 프로젝트 대신 위키를 다운로드할지 여부. |
저장소 저장 경로 가져오기
Gitaly Cluster가 사용되지 않는 경우에만 특정 프로젝트의 저장소 저장 경로를 가져옵니다. Gitaly Cluster를 사용하는 경우, Praefect에서 생성된 복제 경로를 참조하십시오.
관리자만 사용할 수 있습니다.
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"
}
]