프로젝트 API
GitLab v19.5Offering: GitLab.com
요약
이 API로 GitLab 프로젝트와 관련 설정을 관리합니다. 프로젝트 API에는 다음과 같은 엔드포인트가 있습니다. GitLab의 프로젝트는 다음 중 하나의 가시성 레벨을 가질 수 있습니다. 가시성 레벨은 프로젝트의 visibility 필드로 결정됩니다.
이 API로 GitLab 프로젝트와 관련 설정을 관리합니다. 프로젝트는 코드를 저장하고 이슈를 추적하며 팀 활동을 정리하는 협업의 중심 허브입니다. 자세한 내용은 프로젝트 생성을 참고합니다.
프로젝트 API에는 다음과 같은 엔드포인트가 있습니다.
- 프로젝트 정보와 메타데이터 조회
- 프로젝트 생성, 편집, 제거
- 프로젝트 가시성, 접근 권한, 보안 설정 제어
- 이슈 추적, 머지 리퀘스트, CI/CD 등 프로젝트 기능 관리
- 프로젝트 보관 및 보관 해제
- 네임스페이스 간 프로젝트 이전
- 배포 및 컨테이너 레지스트리 설정 관리
사전 요구 사항#
- 프로젝트 속성을 읽으려면 프로젝트에 대한 기본 권한 중 하나가 필요합니다.
- 프로젝트 속성을 편집하려면 프로젝트에 대한 Maintainer 또는 Owner 권한이 필요합니다.
프로젝트 가시성 레벨#
GitLab의 프로젝트는 다음 중 하나의 가시성 레벨을 가질 수 있습니다.
- Private
- Internal
- Public
가시성 레벨은 프로젝트의 visibility 필드로 결정됩니다.
자세한 내용은 프로젝트 가시성을 참고합니다.
응답에 반환되는 필드는 인증된 사용자의 권한에 따라 달라집니다.
프로젝트 기능 가시성 레벨#
프로젝트를 생성하거나 편집할 때 프로젝트 설정의 사용 가능 여부를 제어할 수 있습니다.
예를 들어 기존 프로젝트에서 forking_access_level을 비활성화하려면 다음과 같이 합니다.
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"forking_access_level": "disabled"}' \
--url "https://gitlab.example.com/api/v4/projects/<project_id>"
각 설정은 개별적으로 정의할 수 있으며 다음 값을 사용합니다.
disabled: 기능을 비활성화합니다.private: 기능을 활성화하고 프로젝트 멤버만으로 설정합니다.enabled: 기능을 활성화하고 접근 권한이 있는 모든 사람으로 설정합니다.public: 기능을 활성화하고 모든 사람으로 설정합니다.pages_access_level에서만 사용할 수 있습니다.
자세한 내용은 프로젝트 내 개별 기능의 가시성 변경을 참고합니다.
| Attribute | Type | Required | Description |
|---|---|---|---|
analytics_access_level |
string | No | 분석의 가시성을 설정합니다. |
builds_access_level |
string | No | 파이프라인의 가시성을 설정합니다. |
container_registry_access_level |
string | No | 컨테이너 레지스트리의 가시성을 설정합니다. |
environments_access_level |
string | No | 환경의 가시성을 설정합니다. |
feature_flags_access_level |
string | No | 기능 플래그의 가시성을 설정합니다. |
forking_access_level |
string | No | 포크의 가시성을 설정합니다. |
infrastructure_access_level |
string | No | 인프라 관리의 가시성을 설정합니다. |
issues_access_level |
string | No | 이슈의 가시성을 설정합니다. |
merge_requests_access_level |
string | No | 머지 리퀘스트의 가시성을 설정합니다. |
model_experiments_access_level |
string | No | 머신러닝 모델 실험의 가시성을 설정합니다. |
model_registry_access_level |
string | No | 머신러닝 모델 레지스트리의 가시성을 설정합니다. |
monitor_access_level |
string | No | 애플리케이션 성능 모니터링의 가시성을 설정합니다. |
pages_access_level |
string | No | GitLab Pages의 가시성을 설정합니다. |
releases_access_level |
string | No | 릴리스의 가시성을 설정합니다. |
repository_access_level |
string | No | 리포지터리의 가시성을 설정합니다. |
requirements_access_level |
string | No | 요구사항 관리의 가시성을 설정합니다. |
security_and_compliance_access_level |
string | No | 보안 및 컴플라이언스의 가시성을 설정합니다. |
snippets_access_level |
string | No | 스니펫의 가시성을 설정합니다. |
wiki_access_level |
string | No | 위키의 가시성을 설정합니다. |
더 이상 사용되지 않는 속성#
다음 속성은 더 이상 사용되지 않으며 향후 REST API 버전에서 제거될 수 있습니다. 대신 대체 속성을 사용합니다.
| Deprecated attribute | Alternative |
|---|---|
tag_list |
대신 topics를 사용합니다. |
marked_for_deletion_at |
대신 marked_for_deletion_on을 사용합니다. Premium 및 Ultimate 전용. |
approvals_before_merge |
GitLab 16.0에서 더 이상 사용되지 않습니다. 대신 머지 리퀘스트 승인 API를 사용합니다. Premium 및 Ultimate 전용. |
packages_enabled |
GitLab 17.10에서 더 이상 사용되지 않습니다. 대신 package_registry_access_level을 사용합니다. |
container_registry_enabled |
대신 container_registry_access_level을 사용합니다. |
public_builds |
대신 public_jobs를 사용합니다. |
emails_disabled |
대신 emails_enabled를 사용합니다. |
issues_enabled |
대신 issues_access_level을 사용합니다. |
jobs_enabled |
대신 builds_access_level을 사용합니다. |
merge_requests_enabled |
대신 merge_request_access_level을 사용합니다. |
snippets_enabled |
대신 snippets_access_level을 사용합니다. |
wiki_enabled |
대신 wiki_access_level을 사용합니다. |
restrict_user_defined_variables |
GitLab 17.7에서 더 이상 사용되지 않습니다. 대신 ci_pipeline_variables_minimum_override_role을 사용합니다. |
프로젝트 조회#
히스토리
mr_default_title_template이 GitLab 18.11에서mr_default_title_template이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template이 GitLab 19.0에서 제거되었습니다. merge_train_enforcement가 GitLab 19.2에서merge_train_enforcement라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.reviewer_assignment_strategy가 GitLab 19.2에서 도입되었습니다.merge_train_enforcement가 GitLab 19.3에서 일반 공급되었습니다. 기능 플래그merge_train_enforcement는 제거되었습니다.automatic_rebase_enabled가 GitLab 19.4에서 도입되었습니다.reviewer_assignment_strategy의dap_powered값이 GitLab 19.4에서 제거되었습니다.
지정한 프로젝트를 조회합니다. 프로젝트가 공개적으로 접근 가능하면 인증 없이도 이 엔드포인트에 접근할 수 있습니다.
GET /projects/:id
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
license |
boolean | No | 프로젝트 라이선스 데이터를 포함합니다. |
statistics |
boolean | No | 프로젝트 통계를 포함합니다. Reporter, Developer, Maintainer 또는 Owner 권한을 가진 사용자만 사용할 수 있습니다. |
with_custom_attributes |
boolean | No | 응답에 커스텀 속성을 포함합니다. 관리자 접근 권한이 필요합니다. |
성공하면 200 OK와 다음 응답 속성을
반환합니다.
| Attribute | Type | Description |
|---|---|---|
id |
integer | 프로젝트 ID. |
description |
string | 프로젝트 설명. |
description_html |
string | HTML 형식의 프로젝트 설명. |
name |
string | 프로젝트 이름. |
name_with_namespace |
string | 네임스페이스를 포함한 프로젝트 이름. |
path |
string | 프로젝트 경로. |
path_with_namespace |
string | 네임스페이스를 포함한 프로젝트 경로. |
created_at |
datetime | 프로젝트가 생성된 시각의 타임스탬프. |
default_branch |
string | 프로젝트의 기본 브랜치. |
tag_list |
array of strings | 더 이상 사용되지 않습니다. 대신 topics를 사용합니다. 프로젝트의 태그 목록. |
topics |
array of strings | 프로젝트의 토픽 목록. |
ssh_url_to_repo |
string | 리포지터리를 클론하는 SSH URL. |
http_url_to_repo |
string | 리포지터리를 클론하는 HTTP URL. |
web_url |
string | 브라우저에서 프로젝트에 접근하는 URL. |
readme_url |
string | 프로젝트 README 파일의 URL. |
forks_count |
integer | 프로젝트의 포크 수. |
avatar_url |
string | 프로젝트 아바타 이미지의 URL. |
star_count |
integer | 프로젝트가 받은 별 수. |
last_activity_at |
datetime | 프로젝트의 마지막 활동 타임스탬프. |
visibility |
string | 프로젝트의 가시성 레벨. 가능한 값: private, internal, public. |
namespace |
object | 프로젝트의 네임스페이스 정보. |
namespace.id |
integer | 네임스페이스 ID. |
namespace.name |
string | 네임스페이스 이름. |
namespace.path |
string | 네임스페이스 경로. |
namespace.kind |
string | 네임스페이스 유형. 가능한 값: user 또는 group. |
namespace.full_path |
string | 네임스페이스의 전체 경로. |
namespace.parent_id |
integer | 해당하는 경우 상위 네임스페이스의 ID. |
namespace.avatar_url |
string | 네임스페이스 아바타 이미지의 URL. |
namespace.web_url |
string | 브라우저에서 네임스페이스에 접근하는 URL. |
container_registry_image_prefix |
string | 컨테이너 레지스트리 이미지의 접두사. |
_links |
object | 프로젝트와 관련된 API 엔드포인트 링크 모음. |
_links.self |
string | 프로젝트 리소스의 URL. |
_links.issues |
string | 프로젝트 이슈의 URL. |
_links.merge_requests |
string | 프로젝트 머지 리퀘스트의 URL. |
_links.repo_branches |
string | 프로젝트 리포지터리 브랜치의 URL. |
_links.labels |
string | 프로젝트 레이블의 URL. |
_links.events |
string | 프로젝트 이벤트의 URL. |
_links.members |
string | 프로젝트 멤버의 URL. |
_links.cluster_agents |
string | 프로젝트 클러스터 에이전트의 URL. |
marked_for_deletion_at |
date | 더 이상 사용되지 않습니다. 대신 marked_for_deletion_on을 사용합니다. 프로젝트 삭제가 예약된 날짜. |
marked_for_deletion_on |
date | 프로젝트 삭제가 예약된 날짜. |
packages_enabled |
boolean | 프로젝트에 패키지 레지스트리가 활성화되어 있는지 여부. |
empty_repo |
boolean | 리포지터리가 비어 있는지 여부. |
archived |
boolean | 프로젝트가 보관되었는지 여부. |
owner |
object | 프로젝트 소유자 정보. |
owner.id |
integer | 프로젝트 Owner의 ID. |
owner.username |
string | 소유자의 사용자 이름. |
owner.public_email |
string | 소유자의 공개 이메일 주소. |
owner.name |
string | 프로젝트 Owner의 이름. |
owner.state |
string | 소유자 계정의 현재 상태. |
owner.locked |
boolean | 소유자 계정이 잠겨 있는지 여부를 나타냅니다. |
owner.avatar_url |
string | 소유자 아바타 이미지의 URL. |
owner.web_url |
string | 소유자 프로필의 웹 URL. |
owner.created_at |
datetime | Owner가 생성된 시각의 타임스탬프. |
resolve_outdated_diff_discussions |
boolean | 오래된 diff 토론이 자동으로 해결되는지 여부. |
container_expiration_policy |
object | 컨테이너 이미지 만료 정책 설정. |
container_expiration_policy.cadence |
string | 컨테이너 만료 정책의 실행 주기. |
container_expiration_policy.enabled |
boolean | 컨테이너 만료 정책이 활성화되어 있는지 여부. |
container_expiration_policy.keep_n |
integer | 유지할 컨테이너 이미지 수. |
container_expiration_policy.older_than |
string | 이 값보다 오래된 컨테이너 이미지를 제거합니다. |
container_expiration_policy.name_regex |
string | 더 이상 사용되지 않습니다. 대신 name_regex_delete를 사용합니다. 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
container_expiration_policy.name_regex_delete |
string | 삭제할 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
container_expiration_policy.name_regex_keep |
string | 유지할 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
container_expiration_policy.next_run_at |
datetime | 다음 정책 실행이 예약된 시각의 타임스탬프. |
repository_object_format |
string | 리포지터리가 사용하는 오브젝트 형식. 가능한 값: sha1 또는 sha256. |
issues_enabled |
boolean | 프로젝트에 이슈가 활성화되어 있는지 여부. |
merge_requests_enabled |
boolean | 프로젝트에 머지 리퀘스트가 활성화되어 있는지 여부. |
wiki_enabled |
boolean | 프로젝트에 위키가 활성화되어 있는지 여부. |
jobs_enabled |
boolean | 프로젝트에 job 이 활성화되어 있는지 여부. |
snippets_enabled |
boolean | 프로젝트에 스니펫이 활성화되어 있는지 여부. |
container_registry_enabled |
boolean | 더 이상 사용되지 않습니다. 대신 container_registry_access_level을 사용합니다. 컨테이너 레지스트리가 활성화되어 있는지 여부. |
service_desk_enabled |
boolean | 프로젝트에 서비스 데스크가 활성화되어 있는지 여부. |
service_desk_address |
string | 서비스 데스크의 이메일 주소. |
can_create_merge_request_in |
boolean | 현재 사용자가 프로젝트에서 머지 리퀘스트를 생성할 수 있는지 여부. |
issues_access_level |
string | 이슈 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
repository_access_level |
string | 리포지터리 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
merge_requests_access_level |
string | 머지 리퀘스트 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
forking_access_level |
string | 프로젝트 포크의 접근 수준. 가능한 값: disabled, private, enabled. |
wiki_access_level |
string | 위키 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
builds_access_level |
string | CI/CD 빌드 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
snippets_access_level |
string | 스니펫 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
pages_access_level |
string | GitLab Pages의 접근 수준. 가능한 값: disabled, private, enabled, public. |
analytics_access_level |
string | 분석 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
container_registry_access_level |
string | 컨테이너 레지스트리의 접근 수준. 가능한 값: disabled, private, enabled. |
security_and_compliance_access_level |
string | 보안 및 컴플라이언스 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
releases_access_level |
string | 릴리스 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
environments_access_level |
string | 환경 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
feature_flags_access_level |
string | 기능 플래그 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
infrastructure_access_level |
string | 인프라 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
monitor_access_level |
string | 모니터 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
model_experiments_access_level |
string | 모델 실험 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
model_registry_access_level |
string | 모델 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
package_registry_access_level |
string | 패키지 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled, public. |
emails_disabled |
boolean | 프로젝트에서 이메일이 비활성화되어 있는지 여부를 나타냅니다. |
emails_enabled |
boolean | 프로젝트에서 이메일이 활성화되어 있는지 여부를 나타냅니다. |
show_diff_preview_in_email |
boolean | 이메일 알림에 diff 미리 보기가 표시되는지 여부를 나타냅니다. |
shared_runners_enabled |
boolean | 프로젝트에 공유 러너가 활성화되어 있는지 여부. |
lfs_enabled |
boolean | 프로젝트에 Git LFS가 활성화되어 있는지 여부를 나타냅니다. |
creator_id |
integer | 프로젝트를 생성한 사용자의 ID. |
import_url |
string | 프로젝트를 가져온 원본 URL. |
import_type |
string | 프로젝트에 사용된 가져오기 유형. |
import_status |
string | 프로젝트 가져오기 상태. |
import_error |
string | 가져오기가 실패한 경우의 오류 메시지. |
open_issues_count |
integer | 열린 이슈 수. |
updated_at |
datetime | 프로젝트가 마지막으로 업데이트된 시각의 타임스탬프. |
ci_default_git_depth |
integer | CI/CD 파이프라인의 기본 Git 깊이. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
ci_delete_pipelines_in_seconds |
integer | 오래된 파이프라인이 삭제되기까지의 시간(초). |
ci_forward_deployment_enabled |
boolean | 포워드 배포가 활성화되어 있는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
ci_forward_deployment_rollback_allowed |
boolean | 포워드 배포에서 롤백이 허용되는지 여부. |
ci_job_token_scope_enabled |
boolean | CI/CD job 토큰 범위가 활성화되어 있는지 여부를 나타냅니다. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
ci_separated_caches |
boolean | CI/CD 캐시가 브랜치별로 분리되는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
ci_allow_fork_pipelines_to_run_in_parent_project |
boolean | 포크 파이프라인이 상위 프로젝트에서 실행될 수 있는지 여부. 보거나 업데이트하려면 관리자 접근 권한 또는 프로젝트에 대한 Maintainer 이상의 권한이 필요합니다. UI가 아닌 API로만 구성할 수 있습니다. |
ci_id_token_sub_claim_components |
array of strings | CI/CD ID 토큰의 subject 클레임에 포함되는 구성 요소. |
ci_skip_branch_pipelines_for_mrs |
boolean | 브랜치에 열린 머지 리퀘스트가 있을 때 머지 리퀘스트에 대해 브랜치 파이프라인을 건너뛸지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
build_git_strategy |
string | CI/CD 빌드에 사용되는 Git 전략(fetch 또는 clone). 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
keep_latest_artifact |
boolean | 새 아티팩트가 생성될 때 최신 아티팩트를 유지하는지 여부를 나타냅니다. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
restrict_user_defined_variables |
boolean | 사용자 정의 변수가 제한되는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
ci_pipeline_variables_minimum_override_role |
string | 파이프라인 변수를 재정의하는 데 필요한 최소 권한. |
runner_token_expiration_interval |
integer | 러너 토큰의 만료 간격(초). 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
group_runners_enabled |
boolean | 프로젝트에 그룹 러너가 활성화되어 있는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
resource_group_default_process_mode |
string | 리소스 그룹의 기본 처리 모드. |
auto_cancel_pending_pipelines |
string | 대기 중인 파이프라인을 자동으로 취소하는 설정. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
build_timeout |
integer | CI/CD job의 타임아웃(초). 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
auto_devops_enabled |
boolean | 프로젝트에 Auto DevOps가 활성화되어 있는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
auto_devops_deploy_strategy |
string | Auto DevOps의 배포 전략. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
ci_push_repository_for_job_token_allowed |
boolean | job 토큰으로 리포지터리에 푸시하는 것이 허용되는지 여부. |
cicd_catalog_enabled |
boolean | 프로젝트가 CI/CD 카탈로그에 게시되었는지 여부. GitLab 19.3에서 도입되었습니다. |
runners_token |
string | 프로젝트에 러너를 등록하기 위한 토큰. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
ci_config_path |
string | CI/CD 구성 파일의 경로. |
public_jobs |
boolean | job 로그를 공개적으로 접근할 수 있는지 여부. |
shared_with_groups |
array of objects | 프로젝트가 공유된 그룹 목록. |
shared_with_groups[].group_id |
integer | 프로젝트가 공유된 그룹의 ID. |
shared_with_groups[].group_name |
string | 프로젝트가 공유된 그룹의 이름. |
shared_with_groups[].group_full_path |
string | 프로젝트가 공유된 그룹의 전체 경로. |
shared_with_groups[].group_access_level |
integer | 그룹에 부여된 접근 수준. |
only_allow_merge_if_pipeline_succeeds |
boolean | 파이프라인이 성공한 경우에만 머지를 허용하는지 여부. |
allow_merge_on_skipped_pipeline |
boolean | 파이프라인을 건너뛴 경우 머지를 허용하는지 여부. |
request_access_enabled |
boolean | 사용자가 프로젝트에 접근을 요청할 수 있는지 여부. |
only_allow_merge_if_all_discussions_are_resolved |
boolean | 모든 토론이 해결된 경우에만 머지를 허용하는지 여부. |
remove_source_branch_after_merge |
boolean | 머지 후 소스 브랜치를 자동으로 제거하는지 여부. |
printing_merge_request_link_enabled |
boolean | 푸시 후 머지 리퀘스트 링크를 출력하는지 여부를 나타냅니다. |
printing_merge_requests_link_enabled |
boolean | 푸시 후 머지 리퀘스트 링크를 출력하는지 여부. |
merge_method |
string | 프로젝트에 사용되는 머지 방식. 가능한 값: merge, rebase_merge, ff. |
merge_request_title_regex |
string | 머지 리퀘스트 제목 검증에 사용되는 정규식 패턴. |
merge_request_title_regex_description |
string | 머지 리퀘스트 제목 정규식 검증에 대한 설명. |
squash_option |
string | 머지 리퀘스트의 스쿼시 옵션. |
automatic_rebase_enabled |
boolean | 머지 전에 소스 브랜치를 자동으로 리베이스하는지 여부를 나타냅니다. |
enforce_auth_checks_on_uploads |
boolean | 업로드에 인증 검사를 강제하는지 여부. |
suggestion_commit_message |
string | 제안에 사용할 커스텀 커밋 메시지. |
merge_commit_template |
string | 머지 커밋 메시지의 템플릿. |
mr_default_title_template |
string | 머지 리퀘스트 제목의 템플릿. |
squash_commit_template |
string | 스쿼시 커밋 메시지의 템플릿. |
issue_branch_template |
string | 이슈에서 생성되는 브랜치 이름의 템플릿. |
warn_about_potentially_unwanted_characters |
boolean | 원치 않을 수 있는 문자에 대해 경고할지 여부. |
autoclose_referenced_issues |
boolean | 참조된 이슈를 자동으로 닫을지 여부. |
max_artifacts_size |
integer | CI/CD 아티팩트의 최대 크기(MB). |
approvals_before_merge |
integer | 더 이상 사용되지 않습니다. 대신 머지 리퀘스트 승인 API를 사용합니다. 머지 전에 필요한 승인 수. |
mirror |
boolean | 프로젝트가 미러인지 여부. |
external_authorization_classification_label |
string | 외부 인가 분류 레이블. |
requirements_enabled |
boolean | 요구사항 관리가 활성화되어 있는지 여부를 나타냅니다. |
requirements_access_level |
string | 요구사항 기능의 접근 수준. |
security_and_compliance_enabled |
boolean | 보안 및 컴플라이언스 기능이 활성화되어 있는지 여부를 나타냅니다. |
secret_push_protection_enabled |
boolean | 시크릿 푸시 보호가 활성화되어 있는지 여부. |
pre_receive_secret_detection_enabled |
boolean | pre-receive 시크릿 탐지가 활성화되어 있는지 여부를 나타냅니다. |
compliance_frameworks |
array of strings | 프로젝트에 적용된 컴플라이언스 프레임워크. |
issues_template |
string | 이슈의 기본 설명. 설명은 GitLab Flavored Markdown으로 파싱됩니다. Premium 및 Ultimate 전용. |
merge_requests_template |
string | 머지 리퀘스트 설명의 템플릿. Premium 및 Ultimate 전용. |
ci_restrict_pipeline_cancellation_role |
string | 파이프라인을 취소하는 데 필요한 최소 권한. |
merge_pipelines_enabled |
boolean | 머지 파이프라인이 활성화되어 있는지 여부를 나타냅니다. |
merge_trains_enabled |
boolean | 머지 트레인이 활성화되어 있는지 여부를 나타냅니다. |
merge_trains_skip_train_allowed |
boolean | 머지 트레인 건너뛰기가 허용되는지 여부를 나타냅니다. |
merge_train_enforcement |
string | 머지 트레인 강제 적용 수준. allow_bypass, enforce_for_all_users, enforce_with_owner_override 중 하나. 프로젝트에 머지 트레인이 활성화되어 있지 않으면 적용되지 않습니다. |
max_pipelines_per_merge_train |
integer | 머지 트레인당 병렬 파이프라인의 최대 개수. |
only_allow_merge_if_all_status_checks_passed |
boolean | 모든 상태 검사를 통과한 경우에만 머지를 허용하는지 여부. Ultimate 전용. |
allow_pipeline_trigger_approve_deployment |
boolean | 파이프라인 트리거가 배포를 승인할 수 있는지 여부. |
prevent_merge_without_jira_issue |
boolean | 머지에 연결된 Jira 이슈가 필요한지 여부를 나타냅니다. |
reviewer_assignment_strategy |
string | 머지 리퀘스트에 리뷰어를 자동으로 지정하는 데 사용되는 전략. disabled 또는 code_owners 중 하나. GitLab 19.4 이전에 구성된 프로젝트에서는 dap_powered가 반환될 수도 있습니다. Premium 및 Ultimate 전용. |
duo_remote_flows_enabled |
boolean | GitLab Duo 원격 플로가 활성화되어 있는지 여부를 나타냅니다. |
duo_foundational_flows_enabled |
boolean | GitLab Duo 파운데이셔널 플로가 활성화되어 있는지 여부를 나타냅니다. |
duo_sast_fp_detection_enabled |
boolean | GitLab Duo SAST 오탐 탐지가 활성화되어 있는지 여부를 나타냅니다. |
duo_sast_vr_workflow_enabled |
boolean | GitLab Duo SAST 취약점 해결 워크플로가 활성화되어 있는지 여부를 나타냅니다. |
web_based_commit_signing_enabled |
boolean | 웹 기반 커밋 서명이 활성화되어 있는지 여부를 나타냅니다. |
spp_repository_pipeline_access |
boolean | 보안 정책에 대한 리포지터리 파이프라인 접근. 보안 오케스트레이션 정책 기능을 사용할 수 있는 경우에만 표시됩니다. |
permissions |
object | 프로젝트에 대한 사용자 권한. |
permissions.project_access |
object | 사용자의 프로젝트 수준 접근 권한. |
permissions.project_access.access_level |
integer | 프로젝트의 접근 수준. |
permissions.project_access.notification_level |
integer | 프로젝트의 알림 수준. |
permissions.group_access |
object | 사용자의 그룹 수준 접근 권한. |
permissions.group_access.access_level |
integer | 그룹의 접근 수준. |
permissions.group_access.notification_level |
integer | 그룹의 알림 수준. |
license_url |
string | 프로젝트 라이선스 파일의 URL. |
license.key |
string | 라이선스의 키 식별자. |
license.name |
string | 라이선스의 전체 이름. |
license.nickname |
string | 라이선스의 약칭. |
license.html_url |
string | 라이선스 세부 정보를 확인하는 URL. |
license.source_url |
string | 라이선스 원문의 URL. |
repository_storage |
string | 프로젝트 리포지터리의 스토리지 위치. |
mirror_user_id |
integer | 미러를 설정한 사용자의 ID. |
mirror_trigger_builds |
boolean | 미러 업데이트가 빌드를 트리거하는지 여부. |
only_mirror_protected_branches |
boolean | 보호된 브랜치만 미러링하는지 여부. |
mirror_overwrites_diverged_branches |
boolean | 미러가 분기된 브랜치를 덮어쓰는지 여부. |
statistics.commit_count |
integer | 프로젝트의 커밋 수. |
statistics.storage_size |
integer | 전체 스토리지 크기(바이트). |
statistics.repository_size |
integer | 리포지터리 스토리지 크기(바이트). |
statistics.wiki_size |
integer | 위키 스토리지 크기(바이트). |
statistics.lfs_objects_size |
integer | LFS 오브젝트 스토리지 크기(바이트). |
statistics.job_artifacts_size |
integer | job 아티팩트 스토리지 크기(바이트). |
statistics.pipeline_artifacts_size |
integer | 파이프라인 아티팩트 스토리지 크기(바이트). |
statistics.packages_size |
integer | 패키지 스토리지 크기(바이트). |
statistics.snippets_size |
integer | 스니펫 스토리지 크기(바이트). |
statistics.uploads_size |
integer | 업로드 스토리지 크기(바이트). |
statistics.container_registry_size |
integer | 프로젝트의 모든 컨테이너 리포지터리가 사용하는 전체 컨테이너 레지스트리 스토리지 크기(바이트). 컨테이너 이미지를 푸시하거나 삭제할 때 갱신됩니다. GitLab Self-Managed 인스턴스에서는 컨테이너 레지스트리 메타데이터 데이터베이스가 활성화되어 있어야 합니다. |
forked_from_project |
object | 이 프로젝트가 포크된 업스트림 프로젝트. 업스트림 프로젝트가 비공개이면 이 필드를 보기 위해 인증 토큰이 필요합니다. |
mr_default_target_self |
boolean | 머지 리퀘스트가 기본적으로 이 프로젝트를 타깃으로 하는지 여부. false 이면 머지 리퀘스트는 업스트림 프로젝트를 타깃으로 합니다. 프로젝트가 포크인 경우에만 나타납니다. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/projects/<project_id>"
응답 예시:
{
"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_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
"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,
"ci_display_pipeline_variables": false,
"ci_skip_branch_pipelines_for_mrs": false,
"cicd_catalog_enabled": false,
"protect_merge_request_pipelines": true,
"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,
"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,
"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,
"empty_repo": false,
"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,
"mr_default_title_template": null,
"squash_commit_template": null,
"issue_branch_template": "gitlab/%{id}-%{title}",
"marked_for_deletion_at": "2020-04-03", // Deprecated in favor of marked_for_deletion_on. Planned for removal in a future version of the REST API.
"marked_for_deletion_on": "2020-04-03",
"compliance_frameworks": [ "sox" ],
"warn_about_potentially_unwanted_characters": true,
"secret_push_protection_enabled": false,
"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_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"
},
"spp_repository_pipeline_access": false // Only visible if the security_orchestration_policies feature is available
}
프로젝트 목록 조회#
프로젝트와 프로젝트 속성을 조회합니다.
모든 프로젝트 목록 조회#
히스토리
web_based_commit_signing_enabled가 GitLab 18.2에서use_web_based_commit_signing_enabled라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.web_based_commit_signing_enabled가 GitLab 19.1에서 일반 공급되었습니다. 기능 플래그use_web_based_commit_signing_enabled는 제거되었습니다.mr_default_title_template이 GitLab 18.11에서mr_default_title_template이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template이 GitLab 19.0에서 제거되었습니다. merge_train_enforcement가 GitLab 19.2에서merge_train_enforcement라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.reviewer_assignment_strategy가 GitLab 19.2에서 도입되었습니다.merge_train_enforcement가 GitLab 19.3에서 일반 공급되었습니다. 기능 플래그merge_train_enforcement는 제거되었습니다.automatic_rebase_enabled가 GitLab 19.4에서 도입되었습니다.reviewer_assignment_strategy의dap_powered값이 GitLab 19.4에서 제거되었습니다.
인증된 사용자가 접근할 수 있는 인스턴스의 모든 프로젝트를 조회합니다. 인증되지 않은 요청은 제한된 속성만 포함한 공개 프로젝트만 반환합니다.
이 엔드포인트는 페이지네이션을 지원합니다.
- 오프셋 기반 페이지네이션으로 최대 50,000 개의 프로젝트에 접근합니다.
- 50,000 개를 초과하는 프로젝트를 조회하려면 키셋 기반 페이지네이션을 사용합니다.
자세한 내용은 페이지네이션을 참고합니다.
GET /projects
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
archived |
boolean | No | 보관 상태로 제한합니다. |
custom_attributes |
hash | No | 지정한 키와 값 쌍을 모두 만족하는 커스텀 속성으로 제한합니다. (관리자 전용) |
id_after |
integer | No | 지정한 ID보다 큰 ID를 가진 프로젝트로 결과를 제한합니다. |
id_before |
integer | No | 지정한 ID보다 작은 ID를 가진 프로젝트로 결과를 제한합니다. |
imported |
boolean | No | 현재 사용자가 외부 시스템에서 가져온 프로젝트로 결과를 제한합니다. |
include_hidden |
boolean | No | 숨겨진 프로젝트를 포함합니다. (관리자 전용) Premium 및 Ultimate 전용. |
include_pending_delete |
boolean | No | 삭제 대기 중인 프로젝트를 포함합니다. (관리자 전용) |
last_activity_after |
datetime | No | 지정한 시각 이후에 마지막 활동이 있는 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ) |
last_activity_before |
datetime | No | 지정한 시각 이전에 마지막 활동이 있는 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ) |
membership |
boolean | No | 현재 사용자가 멤버인 프로젝트로 제한합니다. |
min_access_level |
integer | No | 현재 사용자가 지정한 접근 수준 이상을 가진 프로젝트로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
order_by |
string | No | 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 | No | 현재 사용자가 명시적으로 소유한 프로젝트로 제한합니다. |
repository_checksum_failed |
boolean | No | 리포지터리 체크섬 계산이 실패한 프로젝트로 제한합니다. Premium 및 Ultimate 전용. |
repository_storage |
string | No | repository_storage에 저장된 프로젝트로 결과를 제한합니다. (관리자 전용) |
search_namespaces |
boolean | No | 검색 조건을 일치시킬 때 상위 네임스페이스를 포함합니다. 기본값은 false 입니다. |
search |
string | No | 검색 조건과 일치하는 path, name 또는 description을 가진 프로젝트 목록을 반환합니다(대소문자 구분 없음, 부분 문자열 일치). 여러 검색어는 이스케이프된 공백(+ 또는 %20)으로 구분해 지정할 수 있으며 AND로 결합됩니다. 예: one+two는 부분 문자열 one과 two를 순서와 관계없이 모두 포함하는 항목과 일치합니다. |
simple |
boolean | No | true 이면 각 프로젝트의 제한된 필드만 반환합니다. 인증되지 않은 요청은 simple을 설정하지 않아도 제한된 필드를 가진 공개 프로젝트만 반환합니다. |
sort |
string | No | 프로젝트를 asc 또는 desc 순으로 정렬해 반환합니다. 기본값은 desc 입니다. |
starred |
boolean | No | 현재 사용자가 별표를 표시한 프로젝트로 제한합니다. |
statistics |
boolean | No | 프로젝트 통계를 포함합니다. Reporter, Developer, Maintainer 또는 Owner 권한을 가진 사용자만 사용할 수 있습니다. |
topic_id |
integer | No | 토픽 ID로 지정한 토픽이 할당된 프로젝트로 결과를 제한합니다. |
topic |
string | No | 쉼표로 구분한 토픽 이름. 지정한 토픽을 모두 만족하는 프로젝트로 결과를 제한합니다. topics 속성을 참고합니다. |
updated_after |
datetime | No | 지정한 시각 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). 이 필터가 동작하려면 order_by 속성으로 updated_at도 함께 지정해야 합니다. |
updated_before |
datetime | No | 지정한 시각 이전에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). 이 필터가 동작하려면 order_by 속성으로 updated_at도 함께 지정해야 합니다. |
visibility |
string | No | 가시성 public, internal, private로 제한합니다. |
wiki_checksum_failed |
boolean | No | 위키 체크섬 계산이 실패한 프로젝트로 제한합니다. Premium 및 Ultimate 전용. |
with_custom_attributes |
boolean | No | 응답에 커스텀 속성을 포함합니다. (관리자 전용) |
with_issues_enabled |
boolean | No | 이슈 기능이 활성화된 프로젝트로 제한합니다. |
with_merge_requests_enabled |
boolean | No | 머지 리퀘스트 기능이 활성화된 프로젝트로 제한합니다. |
with_programming_language |
string | No | 지정한 프로그래밍 언어를 사용하는 프로젝트로 제한합니다. |
marked_for_deletion_on |
date | No | 프로젝트가 삭제 표시된 날짜로 필터링합니다. GitLab 17.1에서 도입되었습니다. Premium 및 Ultimate 전용. |
active |
boolean | No | 보관되지 않고 삭제 표시되지 않은 프로젝트로 제한합니다. |
커스텀 속성으로 필터링하려면 각 속성의 키와 값을 지정합니다.
GET /projects?custom_attributes[<key>]=<value>&custom_attributes[<other_key>]=<other_value>
성공하면 200 OK와 다음 응답 속성을
반환합니다.
| Attribute | Type | Description |
|---|---|---|
id |
integer | 프로젝트 ID. |
description |
string | 프로젝트 설명. |
name |
string | 프로젝트 이름. |
name_with_namespace |
string | 네임스페이스를 포함한 프로젝트 이름. |
path |
string | 프로젝트 경로. |
path_with_namespace |
string | 네임스페이스를 포함한 프로젝트 경로. |
created_at |
datetime | 프로젝트가 생성된 시각의 타임스탬프. |
default_branch |
string | 프로젝트의 기본 브랜치. |
tag_list |
array of strings | 더 이상 사용되지 않습니다. 대신 topics를 사용합니다. 프로젝트의 태그 목록. |
topics |
array of strings | 프로젝트의 토픽 목록. |
ssh_url_to_repo |
string | 리포지터리를 클론하는 SSH URL. |
http_url_to_repo |
string | 리포지터리를 클론하는 HTTP URL. |
web_url |
string | 브라우저에서 프로젝트에 접근하는 URL. |
readme_url |
string | 프로젝트 README 파일의 URL. |
forks_count |
integer | 프로젝트의 포크 수. |
avatar_url |
string | 프로젝트 아바타 이미지의 URL. |
star_count |
integer | 프로젝트가 받은 별 수. |
last_activity_at |
datetime | 프로젝트의 마지막 활동 타임스탬프. |
visibility |
string | 프로젝트의 가시성 레벨. 가능한 값: private, internal, public. |
namespace |
object | 프로젝트의 네임스페이스 정보. |
namespace.id |
integer | 네임스페이스 ID. |
namespace.name |
string | 네임스페이스 이름. |
namespace.path |
string | 네임스페이스 경로. |
namespace.kind |
string | 네임스페이스 유형. 가능한 값: user 또는 group. |
namespace.full_path |
string | 네임스페이스의 전체 경로. |
namespace.parent_id |
integer | 해당하는 경우 상위 네임스페이스의 ID. |
namespace.avatar_url |
string | 네임스페이스 아바타 이미지의 URL. |
namespace.web_url |
string | 브라우저에서 네임스페이스에 접근하는 URL. |
container_registry_image_prefix |
string | 컨테이너 레지스트리 이미지의 접두사. |
_links |
object | 프로젝트와 관련된 API 엔드포인트 링크 모음. |
_links.self |
string | 프로젝트 리소스의 URL. |
_links.issues |
string | 프로젝트 이슈의 URL. |
_links.merge_requests |
string | 프로젝트 머지 리퀘스트의 URL. |
_links.repo_branches |
string | 프로젝트 리포지터리 브랜치의 URL. |
_links.labels |
string | 프로젝트 레이블의 URL. |
_links.events |
string | 프로젝트 이벤트의 URL. |
_links.members |
string | 프로젝트 멤버의 URL. |
_links.cluster_agents |
string | 프로젝트 클러스터 에이전트의 URL. |
marked_for_deletion_at |
date | 더 이상 사용되지 않습니다. 대신 marked_for_deletion_on을 사용합니다. 프로젝트 삭제가 예약된 날짜. |
marked_for_deletion_on |
date | 프로젝트 삭제가 예약된 날짜. |
packages_enabled |
boolean | 프로젝트에 패키지 레지스트리가 활성화되어 있는지 여부. |
empty_repo |
boolean | 리포지터리가 비어 있는지 여부. |
archived |
boolean | 프로젝트가 보관되었는지 여부. |
resolve_outdated_diff_discussions |
boolean | 오래된 diff 토론이 자동으로 해결되는지 여부. |
container_expiration_policy |
object | 컨테이너 이미지 만료 정책 설정. |
container_expiration_policy.cadence |
string | 컨테이너 만료 정책의 실행 주기. |
container_expiration_policy.enabled |
boolean | 컨테이너 만료 정책이 활성화되어 있는지 여부. |
container_expiration_policy.keep_n |
integer | 유지할 컨테이너 이미지 수. |
container_expiration_policy.older_than |
string | 이 값보다 오래된 컨테이너 이미지를 제거합니다. |
container_expiration_policy.name_regex |
string | 더 이상 사용되지 않습니다. 대신 name_regex_delete를 사용합니다. 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
container_expiration_policy.name_regex_keep |
string | 유지할 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
container_expiration_policy.next_run_at |
datetime | 다음 정책 실행이 예약된 시각의 타임스탬프. |
repository_object_format |
string | 리포지터리가 사용하는 오브젝트 형식(sha1 또는 sha256). |
issues_enabled |
boolean | 프로젝트에 이슈가 활성화되어 있는지 여부. |
merge_requests_enabled |
boolean | 프로젝트에 머지 리퀘스트가 활성화되어 있는지 여부. |
wiki_enabled |
boolean | 프로젝트에 위키가 활성화되어 있는지 여부. |
jobs_enabled |
boolean | 프로젝트에 job 이 활성화되어 있는지 여부. |
snippets_enabled |
boolean | 프로젝트에 스니펫이 활성화되어 있는지 여부. |
container_registry_enabled |
boolean | 더 이상 사용되지 않습니다. 대신 container_registry_access_level을 사용합니다. 컨테이너 레지스트리가 활성화되어 있는지 여부. |
service_desk_enabled |
boolean | 프로젝트에 서비스 데스크가 활성화되어 있는지 여부. |
can_create_merge_request_in |
boolean | 현재 사용자가 프로젝트에서 머지 리퀘스트를 생성할 수 있는지 여부. |
issues_access_level |
string | 이슈 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
repository_access_level |
string | 리포지터리 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
merge_requests_access_level |
string | 머지 리퀘스트 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
forking_access_level |
string | 프로젝트 포크의 접근 수준. 가능한 값: disabled, private, enabled. |
wiki_access_level |
string | 위키 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
builds_access_level |
string | CI/CD 빌드 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
snippets_access_level |
string | 스니펫 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
pages_access_level |
string | GitLab Pages의 접근 수준. 가능한 값: disabled, private, enabled, public. |
analytics_access_level |
string | 분석 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
container_registry_access_level |
string | 컨테이너 레지스트리의 접근 수준. 가능한 값: disabled, private, enabled. |
security_and_compliance_access_level |
string | 보안 및 컴플라이언스 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
releases_access_level |
string | 릴리스 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
environments_access_level |
string | 환경 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
feature_flags_access_level |
string | 기능 플래그 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
infrastructure_access_level |
string | 인프라 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
monitor_access_level |
string | 모니터 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
model_experiments_access_level |
string | 모델 실험 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
model_registry_access_level |
string | 모델 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
package_registry_access_level |
string | 패키지 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled, public. |
emails_disabled |
boolean | 프로젝트에서 이메일이 비활성화되어 있는지 여부를 나타냅니다. |
emails_enabled |
boolean | 프로젝트에서 이메일이 활성화되어 있는지 여부를 나타냅니다. |
show_diff_preview_in_email |
boolean | 이메일 알림에 diff 미리 보기가 표시되는지 여부를 나타냅니다. |
shared_runners_enabled |
boolean | 프로젝트에 공유 러너가 활성화되어 있는지 여부. |
lfs_enabled |
boolean | 프로젝트에 Git LFS가 활성화되어 있는지 여부를 나타냅니다. |
creator_id |
integer | 프로젝트를 생성한 사용자의 ID. |
import_status |
string | 프로젝트 가져오기 상태. |
open_issues_count |
integer | 열린 이슈 수. |
description_html |
string | HTML 형식의 프로젝트 설명. |
updated_at |
datetime | 프로젝트가 마지막으로 업데이트된 시각의 타임스탬프. |
ci_config_path |
string | CI/CD 구성 파일의 경로. |
public_jobs |
boolean | job 로그를 공개적으로 접근할 수 있는지 여부. |
shared_with_groups |
array of objects | 프로젝트가 공유된 그룹 목록. |
only_allow_merge_if_pipeline_succeeds |
boolean | 파이프라인이 성공한 경우에만 머지를 허용하는지 여부. |
allow_merge_on_skipped_pipeline |
boolean | 파이프라인을 건너뛴 경우 머지를 허용하는지 여부. |
request_access_enabled |
boolean | 사용자가 프로젝트에 접근을 요청할 수 있는지 여부. |
only_allow_merge_if_all_discussions_are_resolved |
boolean | 모든 토론이 해결된 경우에만 머지를 허용하는지 여부. |
remove_source_branch_after_merge |
boolean | 머지 후 소스 브랜치를 자동으로 제거하는지 여부. |
printing_merge_request_link_enabled |
boolean | 푸시 후 머지 리퀘스트 링크를 출력하는지 여부를 나타냅니다. |
merge_method |
string | 프로젝트에 사용되는 머지 방식. 가능한 값: merge, rebase_merge, ff. |
merge_request_title_regex |
string | 머지 리퀘스트 제목 검증에 사용되는 정규식 패턴. |
merge_request_title_regex_description |
string | 머지 리퀘스트 제목 정규식 검증에 대한 설명. |
squash_option |
string | 머지 리퀘스트의 스쿼시 옵션. |
automatic_rebase_enabled |
boolean | 머지 전에 소스 브랜치를 자동으로 리베이스하는지 여부를 나타냅니다. |
enforce_auth_checks_on_uploads |
boolean | 업로드에 인증 검사를 강제하는지 여부. |
suggestion_commit_message |
string | 제안에 사용할 커스텀 커밋 메시지. |
merge_commit_template |
string | 머지 커밋 메시지의 템플릿. |
mr_default_title_template |
string | 머지 리퀘스트 제목의 템플릿. |
squash_commit_template |
string | 스쿼시 커밋 메시지의 템플릿. |
issue_branch_template |
string | 이슈에서 생성되는 브랜치 이름의 템플릿. |
warn_about_potentially_unwanted_characters |
boolean | 원치 않을 수 있는 문자에 대해 경고할지 여부. |
autoclose_referenced_issues |
boolean | 참조된 이슈를 자동으로 닫을지 여부. |
max_artifacts_size |
integer | CI/CD 아티팩트의 최대 크기(MB). |
approvals_before_merge |
integer | 더 이상 사용되지 않습니다. 대신 머지 리퀘스트 승인 API를 사용합니다. 머지 전에 필요한 승인 수. |
mirror |
boolean | 프로젝트가 미러인지 여부. |
external_authorization_classification_label |
string | 외부 인가 분류 레이블. |
requirements_enabled |
boolean | 요구사항 관리가 활성화되어 있는지 여부를 나타냅니다. |
requirements_access_level |
string | 요구사항 기능의 접근 수준. |
security_and_compliance_enabled |
boolean | 보안 및 컴플라이언스 기능이 활성화되어 있는지 여부를 나타냅니다. |
compliance_frameworks |
array of strings | 프로젝트에 적용된 컴플라이언스 프레임워크. |
issues_template |
string | 이슈의 기본 설명. 설명은 GitLab Flavored Markdown으로 파싱됩니다. Premium 및 Ultimate 전용. |
merge_requests_template |
string | 머지 리퀘스트 설명의 템플릿. Premium 및 Ultimate 전용. |
merge_pipelines_enabled |
boolean | 머지 파이프라인이 활성화되어 있는지 여부를 나타냅니다. |
merge_trains_enabled |
boolean | 머지 트레인이 활성화되어 있는지 여부를 나타냅니다. |
merge_trains_skip_train_allowed |
boolean | 머지 트레인 건너뛰기가 허용되는지 여부를 나타냅니다. |
merge_train_enforcement |
string | 머지 트레인 강제 적용 수준. allow_bypass, enforce_for_all_users, enforce_with_owner_override 중 하나. 프로젝트에 머지 트레인이 활성화되어 있지 않으면 적용되지 않습니다. |
max_pipelines_per_merge_train |
integer | 머지 트레인당 병렬 파이프라인의 최대 개수. |
only_allow_merge_if_all_status_checks_passed |
boolean | 모든 상태 검사를 통과한 경우에만 머지를 허용하는지 여부. Ultimate 전용. |
allow_pipeline_trigger_approve_deployment |
boolean | 파이프라인 트리거가 배포를 승인할 수 있는지 여부. |
prevent_merge_without_jira_issue |
boolean | 머지에 연결된 Jira 이슈가 필요한지 여부를 나타냅니다. |
reviewer_assignment_strategy |
string | 머지 리퀘스트에 리뷰어를 자동으로 지정하는 데 사용되는 전략. disabled 또는 code_owners 중 하나. GitLab 19.4 이전에 구성된 프로젝트에서는 dap_powered가 반환될 수도 있습니다. Premium 및 Ultimate 전용. |
duo_remote_flows_enabled |
boolean | GitLab Duo 원격 플로가 활성화되어 있는지 여부를 나타냅니다. |
duo_foundational_flows_enabled |
boolean | GitLab Duo 파운데이셔널 플로가 활성화되어 있는지 여부를 나타냅니다. |
duo_sast_fp_detection_enabled |
boolean | GitLab Duo SAST 오탐 탐지가 활성화되어 있는지 여부를 나타냅니다. |
duo_sast_vr_workflow_enabled |
boolean | GitLab Duo SAST 취약점 해결 워크플로가 활성화되어 있는지 여부를 나타냅니다. |
spp_repository_pipeline_access |
boolean | 보안 정책에 대한 리포지터리 파이프라인 접근. 보안 오케스트레이션 정책 기능을 사용할 수 있는 경우에만 표시됩니다. |
permissions |
object | 프로젝트에 대한 사용자 권한. |
permissions.project_access |
object | 사용자의 프로젝트 접근 권한. |
permissions.group_access |
object | 사용자의 그룹 접근 권한. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/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>",
"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, // deprecated, use package_registry_access_level instead
"package_registry_access_level": "enabled",
"empty_repo": false,
"archived": false,
"visibility": "public",
"resolve_outdated_diff_discussions": false,
"container_expiration_policy": {
"cadence": "1month",
"enabled": true,
"keep_n": 1,
"older_than": "14d",
"name_regex": "",
"name_regex_keep": ".*-main",
"next_run_at": "2022-06-25T17:11:26.865Z"
},
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"container_registry_enabled": true,
"service_desk_enabled": true,
"can_create_merge_request_in": true,
"issues_access_level": "enabled",
"repository_access_level": "enabled",
"merge_requests_access_level": "enabled",
"forking_access_level": "enabled",
"wiki_access_level": "enabled",
"builds_access_level": "enabled",
"snippets_access_level": "enabled",
"pages_access_level": "enabled",
"analytics_access_level": "enabled",
"container_registry_access_level": "enabled",
"security_and_compliance_access_level": "private",
"emails_disabled": null,
"emails_enabled": null,
"shared_runners_enabled": true,
"group_runners_enabled": true,
"lfs_enabled": true,
"creator_id": 1,
"import_url": null,
"import_type": null,
"import_status": "none",
"import_error": null,
"open_issues_count": 0,
"ci_default_git_depth": 20,
"ci_forward_deployment_enabled": true,
"ci_forward_deployment_rollback_allowed": true,
"ci_allow_fork_pipelines_to_run_in_parent_project": true,
"ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
"ci_job_token_scope_enabled": false,
"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,
"ci_display_pipeline_variables": false,
"ci_skip_branch_pipelines_for_mrs": false,
"protect_merge_request_pipelines": true,
"public_jobs": true,
"build_timeout": 3600,
"auto_cancel_pending_pipelines": "enabled",
"ci_config_path": "",
"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_off",
"enforce_auth_checks_on_uploads": true,
"suggestion_commit_message": null,
"merge_commit_template": null,
"mr_default_title_template": null,
"squash_commit_template": null,
"issue_branch_template": "gitlab/%{id}-%{title}",
"auto_devops_enabled": false,
"auto_devops_deploy_strategy": "continuous",
"autoclose_referenced_issues": true,
"keep_latest_artifact": true,
"runner_token_expiration_interval": null,
"external_authorization_classification_label": "",
"requirements_enabled": false,
"requirements_access_level": "enabled",
"security_and_compliance_enabled": false,
"secret_push_protection_enabled": false,
"compliance_frameworks": [],
"warn_about_potentially_unwanted_characters": true,
"permissions": {
"project_access": null,
"group_access": null
}
},
{
...
}
]
last_activity_at은 프로젝트 활동과
프로젝트 이벤트를 기준으로 업데이트됩니다. 데이터베이스 성능을 위해 이 필드는 시간당 최대 한 번만 업데이트됩니다.
마지막 업데이트로부터 한 시간 이내에 발생한 이벤트는 타임스탬프를 변경하지 않습니다.
따라서 last_activity_at은 최대 한 시간까지 최신이 아닐 수 있습니다.
updated_at은 데이터베이스에서 프로젝트 레코드가 변경될 때마다 업데이트됩니다.
사용자의 모든 개인 프로젝트 목록 조회#
히스토리
mr_default_title_template이 GitLab 18.11에서mr_default_title_template이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template이 GitLab 19.0에서 제거되었습니다. merge_train_enforcement가 GitLab 19.2에서merge_train_enforcement라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.reviewer_assignment_strategy가 GitLab 19.2에서 도입되었습니다.merge_train_enforcement가 GitLab 19.3에서 일반 공급되었습니다. 기능 플래그merge_train_enforcement는 제거되었습니다.automatic_rebase_enabled가 GitLab 19.4에서 도입되었습니다.reviewer_assignment_strategy의dap_powered값이 GitLab 19.4에서 제거되었습니다.
지정한 사용자의 모든 개인 프로젝트를 조회합니다. 다음 제약이 적용됩니다.
- 그룹이나 하위 그룹 프로젝트가 아닌, 사용자 개인 네임스페이스의 프로젝트만 반환합니다.
- 사용자 프로필이 비공개이면 빈 목록을 반환합니다.
- 인증 없는 요청은 공개 프로젝트만 반환합니다.
이 엔드포인트는 페이지네이션을 지원합니다.
- 오프셋 기반 페이지네이션으로 최대 50,000 개의 프로젝트에 접근합니다.
- 50,000 개를 초과하는 프로젝트를 조회하려면 키셋 기반 페이지네이션을 사용합니다.
자세한 내용은 페이지네이션을 참고합니다.
GET /users/:user_id/projects
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
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 | 현재 사용자가 지정한 접근 수준 이상을 가진 프로젝트로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
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 | true 이면 각 프로젝트의 제한된 필드만 반환합니다. 인증되지 않은 요청은 simple을 설정하지 않아도 제한된 필드를 가진 공개 프로젝트만 반환합니다. |
sort |
string | No | 프로젝트를 asc 또는 desc 순으로 정렬해 반환합니다. 기본값은 desc 입니다. |
starred |
boolean | No | 현재 사용자가 별표를 표시한 프로젝트로 제한합니다. |
statistics |
boolean | No | 프로젝트 통계를 포함합니다. Reporter, Developer, Maintainer 또는 Owner 권한을 가진 사용자만 사용할 수 있습니다. |
updated_after |
datetime | No | 지정한 시각 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). |
updated_before |
datetime | No | 지정한 시각 이전에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). |
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 | 지정한 프로그래밍 언어를 사용하는 프로젝트로 제한합니다. |
성공하면 200 OK와 다음 응답 속성을
반환합니다.
| Attribute | Type | Description |
|---|---|---|
id |
integer | 프로젝트 ID. |
description |
string | 프로젝트 설명. |
name |
string | 프로젝트 이름. |
name_with_namespace |
string | 네임스페이스를 포함한 프로젝트 이름. |
path |
string | 프로젝트 경로. |
path_with_namespace |
string | 네임스페이스를 포함한 프로젝트 경로. |
created_at |
datetime | 프로젝트가 생성된 시각의 타임스탬프. |
default_branch |
string | 프로젝트의 기본 브랜치. |
tag_list |
array of strings | 더 이상 사용되지 않습니다. 대신 topics를 사용합니다. 프로젝트의 태그 목록. |
topics |
array of strings | 프로젝트의 토픽 목록. |
ssh_url_to_repo |
string | 리포지터리를 클론하는 SSH URL. |
http_url_to_repo |
string | 리포지터리를 클론하는 HTTP URL. |
web_url |
string | 브라우저에서 프로젝트에 접근하는 URL. |
readme_url |
string | 프로젝트 README 파일의 URL. |
forks_count |
integer | 프로젝트의 포크 수. |
avatar_url |
string | 프로젝트 아바타 이미지의 URL. |
star_count |
integer | 프로젝트가 받은 별 수. |
last_activity_at |
datetime | 프로젝트의 마지막 활동 타임스탬프. |
visibility |
string | 프로젝트의 가시성 레벨. 가능한 값: private, internal, public. |
namespace |
object | 프로젝트의 네임스페이스 정보. |
namespace.id |
integer | 네임스페이스 ID. |
namespace.name |
string | 네임스페이스 이름. |
namespace.path |
string | 네임스페이스 경로. |
namespace.kind |
string | 네임스페이스 유형. 가능한 값: user 또는 group. |
namespace.full_path |
string | 네임스페이스의 전체 경로. |
namespace.parent_id |
integer | 해당하는 경우 상위 네임스페이스의 ID. |
namespace.avatar_url |
string | 네임스페이스 아바타 이미지의 URL. |
namespace.web_url |
string | 브라우저에서 네임스페이스에 접근하는 URL. |
container_registry_image_prefix |
string | 컨테이너 레지스트리 이미지의 접두사. |
_links |
object | 프로젝트와 관련된 API 엔드포인트 링크 모음. |
_links.self |
string | 프로젝트 리소스의 URL. |
_links.issues |
string | 프로젝트 이슈의 URL. |
_links.merge_requests |
string | 프로젝트 머지 리퀘스트의 URL. |
_links.repo_branches |
string | 프로젝트 리포지터리 브랜치의 URL. |
_links.labels |
string | 프로젝트 레이블의 URL. |
| _links.events | string | 프로젝트 이벤트의 URL. |
| _links.members | string | 프로젝트 멤버의 URL. |
| _links.cluster_agents | string | 프로젝트 클러스터 에이전트의 URL. |
| marked_for_deletion_at | date | 더 이상 사용되지 않습니다. 대신 marked_for_deletion_on을 사용합니다. 프로젝트 삭제가 예약된 날짜. |
| marked_for_deletion_on | date | 프로젝트 삭제가 예약된 날짜. |
| packages_enabled | boolean | 프로젝트에 패키지 레지스트리가 활성화되어 있는지 여부. |
| empty_repo | boolean | 리포지터리가 비어 있는지 여부. |
| archived | boolean | 프로젝트가 보관되었는지 여부. |
| resolve_outdated_diff_discussions | boolean | 오래된 diff 토론이 자동으로 해결되는지 여부. |
| container_expiration_policy | object | 컨테이너 이미지 만료 정책 설정. |
| container_expiration_policy.cadence | string | 컨테이너 만료 정책의 실행 주기. |
| container_expiration_policy.enabled | boolean | 컨테이너 만료 정책이 활성화되어 있는지 여부. |
| container_expiration_policy.keep_n | integer | 유지할 컨테이너 이미지 수. |
| container_expiration_policy.older_than | string | 이 값보다 오래된 컨테이너 이미지를 제거합니다. |
| container_expiration_policy.name_regex | string | 더 이상 사용되지 않습니다. 대신 name_regex_delete를 사용합니다. 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
| container_expiration_policy.name_regex_keep | string | 유지할 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
| container_expiration_policy.next_run_at | datetime | 다음 정책 실행이 예약된 시각의 타임스탬프. |
| repository_object_format | string | 리포지터리가 사용하는 오브젝트 형식(sha1 또는 sha256). |
| issues_enabled | boolean | 프로젝트에 이슈가 활성화되어 있는지 여부. |
| merge_requests_enabled | boolean | 프로젝트에 머지 리퀘스트가 활성화되어 있는지 여부. |
| wiki_enabled | boolean | 프로젝트에 위키가 활성화되어 있는지 여부. |
| jobs_enabled | boolean | 프로젝트에 job 이 활성화되어 있는지 여부. |
| snippets_enabled | boolean | 프로젝트에 스니펫이 활성화되어 있는지 여부. |
| container_registry_enabled | boolean | 더 이상 사용되지 않습니다. 대신 container_registry_access_level을 사용합니다. 컨테이너 레지스트리가 활성화되어 있는지 여부. |
| service_desk_enabled | boolean | 프로젝트에 서비스 데스크가 활성화되어 있는지 여부. |
| can_create_merge_request_in | boolean | 현재 사용자가 프로젝트에서 머지 리퀘스트를 생성할 수 있는지 여부. |
| issues_access_level | string | 이슈 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| repository_access_level | string | 리포지터리 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| merge_requests_access_level | string | 머지 리퀘스트 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| forking_access_level | string | 프로젝트 포크의 접근 수준. 가능한 값: disabled, private, enabled. |
| wiki_access_level | string | 위키 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| builds_access_level | string | CI/CD 빌드 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| snippets_access_level | string | 스니펫 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| pages_access_level | string | GitLab Pages의 접근 수준. 가능한 값: disabled, private, enabled, public. |
| analytics_access_level | string | 분석 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| container_registry_access_level | string | 컨테이너 레지스트리의 접근 수준. 가능한 값: disabled, private, enabled. |
| security_and_compliance_access_level | string | 보안 및 컴플라이언스 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| releases_access_level | string | 릴리스 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| environments_access_level | string | 환경 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| feature_flags_access_level | string | 기능 플래그 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| infrastructure_access_level | string | 인프라 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| monitor_access_level | string | 모니터 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| model_experiments_access_level | string | 모델 실험 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| model_registry_access_level | string | 모델 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| package_registry_access_level | string | 패키지 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled, public. |
| emails_disabled | boolean | 프로젝트에서 이메일이 비활성화되어 있는지 여부를 나타냅니다. |
| emails_enabled | boolean | 프로젝트에서 이메일이 활성화되어 있는지 여부를 나타냅니다. |
| show_diff_preview_in_email | boolean | 이메일 알림에 diff 미리 보기가 표시되는지 여부를 나타냅니다. |
| shared_runners_enabled | boolean | 프로젝트에 공유 러너가 활성화되어 있는지 여부. |
| lfs_enabled | boolean | 프로젝트에 Git LFS가 활성화되어 있는지 여부를 나타냅니다. |
| creator_id | integer | 프로젝트를 생성한 사용자의 ID. |
| import_status | string | 프로젝트 가져오기 상태. |
| open_issues_count | integer | 열린 이슈 수. |
| description_html | string | HTML 형식의 프로젝트 설명. |
| updated_at | datetime | 프로젝트가 마지막으로 업데이트된 시각의 타임스탬프. |
| ci_default_git_depth | integer | CI/CD 파이프라인의 기본 Git 깊이. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_forward_deployment_enabled | boolean | 포워드 배포가 활성화되어 있는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_job_token_scope_enabled | boolean | CI/CD job 토큰 범위가 활성화되어 있는지 여부를 나타냅니다. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_separated_caches | boolean | CI/CD 캐시가 브랜치별로 분리되는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_allow_fork_pipelines_to_run_in_parent_project | boolean | 포크 파이프라인이 상위 프로젝트에서 실행될 수 있는지 여부. 보거나 업데이트하려면 관리자 접근 권한 또는 프로젝트에 대한 Maintainer 이상의 권한이 필요합니다. UI가 아닌 API로만 구성할 수 있습니다. |
| build_git_strategy | string | CI/CD 빌드에 사용되는 Git 전략(fetch 또는 clone). 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| keep_latest_artifact | boolean | 새 아티팩트가 생성될 때 최신 아티팩트를 유지하는지 여부를 나타냅니다. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| restrict_user_defined_variables | boolean | 사용자 정의 변수가 제한되는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| runners_token | string | 프로젝트에 러너를 등록하기 위한 토큰. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| runner_token_expiration_interval | integer | 러너 토큰의 만료 간격(초). 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| group_runners_enabled | boolean | 프로젝트에 그룹 러너가 활성화되어 있는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| auto_cancel_pending_pipelines | string | 대기 중인 파이프라인을 자동으로 취소하는 설정. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| build_timeout | integer | CI/CD job의 타임아웃(초). 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| auto_devops_enabled | boolean | 프로젝트에 Auto DevOps가 활성화되어 있는지 여부. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| auto_devops_deploy_strategy | string | Auto DevOps의 배포 전략. 프로젝트에 대한 관리자 접근 권한 또는 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_config_path | string | CI/CD 구성 파일의 경로. |
| public_jobs | boolean | job 로그를 공개적으로 접근할 수 있는지 여부. |
| shared_with_groups | array of objects | 프로젝트가 공유된 그룹 목록. |
| only_allow_merge_if_pipeline_succeeds | boolean | 파이프라인이 성공한 경우에만 머지를 허용하는지 여부. |
| allow_merge_on_skipped_pipeline | boolean | 파이프라인을 건너뛴 경우 머지를 허용하는지 여부. |
| request_access_enabled | boolean | 사용자가 프로젝트에 접근을 요청할 수 있는지 여부. |
| only_allow_merge_if_all_discussions_are_resolved | boolean | 모든 토론이 해결된 경우에만 머지를 허용하는지 여부. |
| remove_source_branch_after_merge | boolean | 머지 후 소스 브랜치를 자동으로 제거하는지 여부. |
| printing_merge_request_link_enabled | boolean | 푸시 후 머지 리퀘스트 링크를 출력하는지 여부를 나타냅니다. |
| merge_method | string | 프로젝트에 사용되는 머지 방식. 가능한 값: merge, rebase_merge, ff. |
| merge_request_title_regex | string | 머지 리퀘스트 제목 검증에 사용되는 정규식 패턴. |
| merge_request_title_regex_description | string | 머지 리퀘스트 제목 정규식 검증에 대한 설명. |
| squash_option | string | 머지 리퀘스트의 스쿼시 옵션. |
| automatic_rebase_enabled | boolean | 머지 전에 소스 브랜치를 자동으로 리베이스하는지 여부를 나타냅니다. |
| enforce_auth_checks_on_uploads | boolean | 업로드에 인증 검사를 강제하는지 여부. |
| suggestion_commit_message | string | 제안에 사용할 커스텀 커밋 메시지. |
| merge_commit_template | string | 머지 커밋 메시지의 템플릿. |
| mr_default_title_template | string | 머지 리퀘스트 제목의 템플릿. |
| squash_commit_template | string | 스쿼시 커밋 메시지의 템플릿. |
| issue_branch_template | string | 이슈에서 생성되는 브랜치 이름의 템플릿. |
| warn_about_potentially_unwanted_characters | boolean | 원치 않을 수 있는 문자에 대해 경고할지 여부. |
| autoclose_referenced_issues | boolean | 참조된 이슈를 자동으로 닫을지 여부. |
| max_artifacts_size | integer | CI/CD 아티팩트의 최대 크기(MB). |
| approvals_before_merge | integer | 더 이상 사용되지 않습니다. 대신 머지 리퀘스트 승인 API를 사용합니다. 머지 전에 필요한 승인 수. |
| mirror | boolean | 프로젝트가 미러인지 여부. |
| external_authorization_classification_label | string | 외부 인가 분류 레이블. |
| requirements_enabled | boolean | 요구사항 관리가 활성화되어 있는지 여부를 나타냅니다. |
| requirements_access_level | string | 요구사항 기능의 접근 수준. |
| security_and_compliance_enabled | boolean | 보안 및 컴플라이언스 기능이 활성화되어 있는지 여부를 나타냅니다. |
| compliance_frameworks | array of strings | 프로젝트에 적용된 컴플라이언스 프레임워크. |
| issues_template | string | 이슈의 기본 설명. 설명은 GitLab Flavored Markdown으로 파싱됩니다. Premium 및 Ultimate 전용. |
| merge_requests_template | string | 머지 리퀘스트 설명의 템플릿. Premium 및 Ultimate 전용. |
| merge_pipelines_enabled | boolean | 머지 파이프라인이 활성화되어 있는지 여부를 나타냅니다. |
| merge_trains_enabled | boolean | 머지 트레인이 활성화되어 있는지 여부를 나타냅니다. |
| merge_trains_skip_train_allowed | boolean | 머지 트레인 건너뛰기가 허용되는지 여부를 나타냅니다. |
| merge_train_enforcement | string | 머지 트레인 강제 적용 수준. allow_bypass, enforce_for_all_users, enforce_with_owner_override 중 하나. 프로젝트에 머지 트레인이 활성화되어 있지 않으면 적용되지 않습니다. |
| max_pipelines_per_merge_train | integer | 머지 트레인당 병렬 파이프라인의 최대 개수. |
| only_allow_merge_if_all_status_checks_passed | boolean | 모든 상태 검사를 통과한 경우에만 머지를 허용하는지 여부. Ultimate 전용. |
| allow_pipeline_trigger_approve_deployment | boolean | 파이프라인 트리거가 배포를 승인할 수 있는지 여부. |
| prevent_merge_without_jira_issue | boolean | 머지에 연결된 Jira 이슈가 필요한지 여부를 나타냅니다. |
| reviewer_assignment_strategy | string | 머지 리퀘스트에 리뷰어를 자동으로 지정하는 데 사용되는 전략. disabled 또는 code_owners 중 하나. GitLab 19.4 이전에 구성된 프로젝트에서는 dap_powered가 반환될 수도 있습니다. Premium 및 Ultimate 전용. |
| duo_remote_flows_enabled | boolean | GitLab Duo 원격 플로가 활성화되어 있는지 여부를 나타냅니다. |
| duo_foundational_flows_enabled | boolean | GitLab Duo 파운데이셔널 플로가 활성화되어 있는지 여부를 나타냅니다. |
| duo_sast_fp_detection_enabled | boolean | GitLab Duo SAST 오탐 탐지가 활성화되어 있는지 여부를 나타냅니다. |
| duo_sast_vr_workflow_enabled | boolean | GitLab Duo SAST 취약점 해결 워크플로가 활성화되어 있는지 여부를 나타냅니다. |
| spp_repository_pipeline_access | boolean | 보안 정책에 대한 리포지터리 파이프라인 접근. 보안 오케스트레이션 정책 기능을 사용할 수 있는 경우에만 표시됩니다. |
| permissions | object | 프로젝트에 대한 사용자 권한. |
| permissions.project_access | object | 사용자의 프로젝트 접근 권한. |
| permissions.group_access | object | 사용자의 그룹 접근 권한. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/users/:user_id/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,
"import_url": null,
"import_type": null,
"import_status": "none",
"import_error": null,
"namespace": {
"id": 3,
"name": "Diaspora",
"path": "diaspora",
"kind": "group",
"full_path": "diaspora"
},
"import_status": "none",
"archived": false,
"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
"shared_runners_enabled": true,
"group_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8547b1dc37721d05889db52fa2f02",
"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_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
"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,
"ci_display_pipeline_variables": false,
"ci_skip_branch_pipelines_for_mrs": false,
"protect_merge_request_pipelines": true,
"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,
"mr_default_title_template": null,
"squash_commit_template": null,
"secret_push_protection_enabled": false,
"issue_branch_template": "gitlab/%{id}-%{title}",
"marked_for_deletion_at": "2020-04-03", // Deprecated in favor of marked_for_deletion_on. Planned for removal in a future version of the REST API.
"marked_for_deletion_on": "2020-04-03",
"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_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"
}
},
{
"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",
"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,
"import_url": null,
"import_type": null,
"import_status": "none",
"import_error": null,
"namespace": {
"id": 4,
"name": "Brightbox",
"path": "brightbox",
"kind": "group",
"full_path": "brightbox"
},
"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": null,
"shared_runners_enabled": true,
"group_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8547b1dc37721d05889db52fa2f02",
"ci_default_git_depth": 0,
"ci_forward_deployment_enabled": true,
"ci_forward_deployment_rollback_allowed": true,
"ci_allow_fork_pipelines_to_run_in_parent_project": true,
"ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
"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,
"ci_display_pipeline_variables": false,
"ci_skip_branch_pipelines_for_mrs": false,
"protect_merge_request_pipelines": true,
"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",
"auto_devops_enabled": true,
"auto_devops_deploy_strategy": "continuous",
"repository_storage": "default",
"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, // deprecated, use package_registry_access_level instead
"empty_repo": false,
"package_registry_access_level": "enabled",
"service_desk_enabled": false,
"service_desk_address": null,
"autoclose_referenced_issues": true,
"enforce_auth_checks_on_uploads": true,
"suggestion_commit_message": null,
"merge_commit_template": null,
"mr_default_title_template": null,
"squash_commit_template": null,
"secret_push_protection_enabled": false,
"issue_branch_template": "gitlab/%{id}-%{title}",
"statistics": {
"commit_count": 12,
"storage_size": 2066080,
"repository_size": 2066080,
"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_size": 0
},
"container_registry_image_prefix": "registry.example.com/brightbox/puppet",
"_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"
}
}
]
사용자의 모든 프로젝트 기여 목록 조회#
히스토리
mr_default_title_template이 GitLab 18.11에서mr_default_title_template이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template이 GitLab 19.0에서 제거되었습니다. merge_train_enforcement가 GitLab 19.2에서merge_train_enforcement라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.reviewer_assignment_strategy가 GitLab 19.2에서 도입되었습니다.merge_train_enforcement가 GitLab 19.3에서 일반 공급되었습니다. 기능 플래그merge_train_enforcement는 제거되었습니다.automatic_rebase_enabled가 GitLab 19.4에서 도입되었습니다.reviewer_assignment_strategy의dap_powered값이 GitLab 19.4에서 제거되었습니다.
지정한 사용자가 볼 수 있는 프로젝트에 남긴 모든 기여를 조회합니다. 최근 1년간의 기여만 반환합니다. 무엇이 기여로 집계되는지에 대한 자세한 내용은 함께 작업하는 프로젝트 보기를 참고합니다.
GET /users/:user_id/contributed_projects
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
user_id |
string | Yes | 사용자의 ID 또는 사용자 이름. |
order_by |
string | No | id, name, path, created_at, updated_at, star_count, last_activity_at 필드를 기준으로 정렬된 프로젝트를 반환합니다. 기본값은 created_at 입니다. |
simple |
boolean | No | true 이면 각 프로젝트의 제한된 필드만 반환합니다. 인증되지 않은 요청은 simple을 설정하지 않아도 제한된 필드를 가진 공개 프로젝트만 반환합니다. |
sort |
string | No | 프로젝트를 asc 또는 desc 순으로 정렬해 반환합니다. 기본값은 desc 입니다. |
성공하면 200 OK와 다음 응답 속성을
반환합니다.
| Attribute | Type | Description |
|---|---|---|
id |
integer | 프로젝트 ID. |
description |
string | 프로젝트 설명. |
name |
string | 프로젝트 이름. |
name_with_namespace |
string | 네임스페이스를 포함한 프로젝트 이름. |
path |
string | 프로젝트 경로. |
path_with_namespace |
string | 네임스페이스를 포함한 프로젝트 경로. |
created_at |
datetime | 프로젝트가 생성된 시각의 타임스탬프. |
default_branch |
string | 프로젝트의 기본 브랜치. |
tag_list |
array of strings | 더 이상 사용되지 않습니다. 대신 topics를 사용합니다. 프로젝트의 태그 목록. |
topics |
array of strings | 프로젝트의 토픽 목록. |
ssh_url_to_repo |
string | 리포지터리를 클론하는 SSH URL. |
http_url_to_repo |
string | 리포지터리를 클론하는 HTTP URL. |
web_url |
string | 브라우저에서 프로젝트에 접근하는 URL. |
readme_url |
string | 프로젝트 README 파일의 URL. |
forks_count |
integer | 프로젝트의 포크 수. |
avatar_url |
string | 프로젝트 아바타 이미지의 URL. |
star_count |
integer | 프로젝트가 받은 별 수. |
last_activity_at |
datetime | 프로젝트의 마지막 활동 타임스탬프. |
visibility |
string | 프로젝트의 가시성 레벨. 가능한 값: private, internal, public. |
namespace |
object | 프로젝트의 네임스페이스 정보. |
namespace.id |
integer | 네임스페이스 ID. |
namespace.name |
string | 네임스페이스 이름. |
namespace.path |
string | 네임스페이스 경로. |
namespace.kind |
string | 네임스페이스 유형. 가능한 값: user 또는 group. |
namespace.full_path |
string | 네임스페이스의 전체 경로. |
namespace.parent_id |
integer | 해당하는 경우 상위 네임스페이스의 ID. |
namespace.avatar_url |
string | 네임스페이스 아바타 이미지의 URL. |
namespace.web_url |
string | 브라우저에서 네임스페이스에 접근하는 URL. |
container_registry_image_prefix |
string | 컨테이너 레지스트리 이미지의 접두사. |
_links |
object | 프로젝트와 관련된 API 엔드포인트 링크 모음. |
_links.self |
string | 프로젝트 리소스의 URL. |
_links.issues |
string | 프로젝트 이슈의 URL. |
_links.merge_requests |
string | 프로젝트 머지 리퀘스트의 URL. |
_links.repo_branches |
string | 프로젝트 리포지터리 브랜치의 URL. |
_links.labels |
string | 프로젝트 레이블의 URL. |
_links.events |
string | 프로젝트 이벤트의 URL. |
_links.members |
string | 프로젝트 멤버의 URL. |
_links.cluster_agents |
string | 프로젝트 클러스터 에이전트의 URL. |
marked_for_deletion_at |
date | 더 이상 사용되지 않습니다. 대신 marked_for_deletion_on을 사용합니다. 프로젝트 삭제가 예약된 날짜. |
marked_for_deletion_on |
date | 프로젝트 삭제가 예약된 날짜. |
packages_enabled |
boolean | 프로젝트에 패키지 레지스트리가 활성화되어 있는지 여부. |
empty_repo |
boolean | 리포지터리가 비어 있는지 여부. |
archived |
boolean | 프로젝트가 보관되었는지 여부. |
resolve_outdated_diff_discussions |
boolean | 오래된 diff 토론이 자동으로 해결되는지 여부. |
container_expiration_policy |
object | 컨테이너 이미지 만료 정책 설정. |
container_expiration_policy.cadence |
string | 컨테이너 만료 정책의 실행 주기. |
container_expiration_policy.enabled |
boolean | 컨테이너 만료 정책이 활성화되어 있는지 여부. |
container_expiration_policy.keep_n |
integer | 유지할 컨테이너 이미지 수. |
container_expiration_policy.older_than |
string | 이 값보다 오래된 컨테이너 이미지를 제거합니다. |
container_expiration_policy.name_regex |
string | 더 이상 사용되지 않습니다. 대신 name_regex_delete를 사용합니다. 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
container_expiration_policy.name_regex_keep |
string | 유지할 컨테이너 이미지 이름과 일치시킬 정규 표현식. |
container_expiration_policy.next_run_at |
datetime | 다음 정책 실행이 예약된 시각의 타임스탬프. |
repository_object_format |
string | 리포지터리가 사용하는 오브젝트 형식(sha1 또는 sha256). |
issues_enabled |
boolean | 프로젝트에 이슈가 활성화되어 있는지 여부. |
merge_requests_enabled |
boolean | 프로젝트에 머지 리퀘스트가 활성화되어 있는지 여부. |
wiki_enabled |
boolean | 프로젝트에 위키가 활성화되어 있는지 여부. |
jobs_enabled |
boolean | 프로젝트에 job 이 활성화되어 있는지 여부. |
snippets_enabled |
boolean | 프로젝트에 스니펫이 활성화되어 있는지 여부. |
container_registry_enabled |
boolean | 더 이상 사용되지 않습니다. 대신 container_registry_access_level을 사용합니다. 컨테이너 레지스트리가 활성화되어 있는지 여부. |
service_desk_enabled |
boolean | 프로젝트에 서비스 데스크가 활성화되어 있는지 여부. |
can_create_merge_request_in |
boolean | 현재 사용자가 프로젝트에서 머지 리퀘스트를 생성할 수 있는지 여부. |
issues_access_level |
string | 이슈 기능의 접근 수준. 가능한 값: disabled, private, enabled. |
| repository_access_level | string | 리포지터리 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| merge_requests_access_level | string | 머지 리퀘스트 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| forking_access_level | string | 프로젝트 포크에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| wiki_access_level | string | 위키 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| builds_access_level | string | CI/CD 빌드 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| snippets_access_level | string | 스니펫 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| pages_access_level | string | GitLab Pages에 대한 접근 레벨. 가능한 값: disabled, private, enabled, public. |
| analytics_access_level | string | 분석 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| container_registry_access_level | string | 컨테이너 레지스트리에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| security_and_compliance_access_level | string | 보안 및 컴플라이언스 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| releases_access_level | string | 릴리스 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| environments_access_level | string | 환경 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| feature_flags_access_level | string | 피처 플래그 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| infrastructure_access_level | string | 인프라 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| monitor_access_level | string | 모니터 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| model_experiments_access_level | string | 모델 실험 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| model_registry_access_level | string | 모델 레지스트리 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled. |
| package_registry_access_level | string | 패키지 레지스트리 기능에 대한 접근 레벨. 가능한 값: disabled, private, enabled, public. |
| emails_disabled | boolean | 프로젝트에서 이메일이 비활성화되어 있는지 여부. |
| emails_enabled | boolean | 프로젝트에서 이메일이 활성화되어 있는지 여부. |
| show_diff_preview_in_email | boolean | 이메일 알림에 diff 미리보기가 표시되는지 여부. |
| shared_runners_enabled | boolean | 공유 러너가 프로젝트에 활성화되어 있는지 여부. |
| lfs_enabled | boolean | 프로젝트에 Git LFS가 활성화되어 있는지 여부. |
| creator_id | integer | 프로젝트를 생성한 사용자 ID. |
| import_status | string | 프로젝트 가져오기 상태. |
| open_issues_count | integer | 열린 이슈 수. |
| description_html | string | HTML 형식의 프로젝트 설명. |
| updated_at | datetime | 프로젝트가 마지막으로 업데이트된 타임스탬프. |
| ci_default_git_depth | integer | CI/CD 파이프라인의 기본 Git 깊이. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_forward_deployment_enabled | boolean | 순방향 배포 활성화 여부. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_job_token_scope_enabled | boolean | CI/CD job 토큰 범위 활성화 여부. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_separated_caches | boolean | CI/CD 캐시가 브랜치별로 분리되어 있는지 여부. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_allow_fork_pipelines_to_run_in_parent_project | boolean | 포크 파이프라인이 상위 프로젝트에서 실행될 수 있는지 여부. 보거나 업데이트하려면 관리자 접근 권한 또는 프로젝트에 대한 Maintainer 이상의 권한이 필요합니다. UI가 아닌 API로만 구성할 수 있습니다. |
| build_git_strategy | string | CI/CD 빌드에 사용되는 Git 전략(fetch 또는 clone). 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| keep_latest_artifact | boolean | 새 아티팩트가 생성될 때 최신 아티팩트를 보관하는지 여부. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| restrict_user_defined_variables | boolean | 사용자 정의 변수가 제한되는지 여부. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| runners_token | string | 프로젝트에 러너를 등록하기 위한 토큰. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| runner_token_expiration_interval | integer | 러너 토큰의 만료 간격(초). 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| group_runners_enabled | boolean | 그룹 러너가 프로젝트에 활성화되어 있는지 여부. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| auto_cancel_pending_pipelines | string | 대기 중인 파이프라인을 자동으로 취소하는 설정. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| build_timeout | integer | CI/CD job 타임아웃(초). 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| auto_devops_enabled | boolean | 프로젝트에 Auto DevOps가 활성화되어 있는지 여부. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| auto_devops_deploy_strategy | string | Auto DevOps의 배포 전략. 관리자 접근 권한 또는 프로젝트의 Owner 권한이 있는 경우에만 표시됩니다. |
| ci_config_path | string | CI/CD 설정 파일 경로. |
| public_jobs | boolean | job 로그에 공개적으로 접근할 수 있는지 여부. |
| shared_with_groups | array of objects | 프로젝트가 공유된 그룹 목록. |
| only_allow_merge_if_pipeline_succeeds | boolean | 파이프라인이 성공한 경우에만 머지가 허용되는지 여부. |
| allow_merge_on_skipped_pipeline | boolean | 파이프라인을 건너뛴 경우 머지가 허용되는지 여부. |
| request_access_enabled | boolean | 사용자가 프로젝트 접근을 요청할 수 있는지 여부. |
| only_allow_merge_if_all_discussions_are_resolved | boolean | 모든 토론이 해결된 경우에만 머지가 허용되는지 여부. |
| remove_source_branch_after_merge | boolean | 머지 후 소스 브랜치가 자동으로 제거되는지 여부. |
| printing_merge_request_link_enabled | boolean | 푸시 후 머지 리퀘스트 링크가 출력되는지 여부. |
| merge_method | string | 프로젝트에 사용되는 머지 방법. 가능한 값: merge, rebase_merge, ff. |
| merge_request_title_regex | string | 머지 리퀘스트 제목 검증에 사용되는 정규식 패턴. |
| merge_request_title_regex_description | string | 머지 리퀘스트 제목 정규식 검증에 대한 설명. |
| squash_option | string | 머지 리퀘스트의 스쿼시 옵션. |
| automatic_rebase_enabled | boolean | 머지 전에 소스 브랜치가 자동으로 리베이스되는지 여부. |
| enforce_auth_checks_on_uploads | boolean | 업로드 시 인증 확인이 강제되는지 여부. |
| suggestion_commit_message | string | 제안에 사용되는 커스텀 커밋 메시지. |
| merge_commit_template | string | 머지 커밋 메시지 템플릿. |
| mr_default_title_template | string | 머지 리퀘스트 제목 템플릿. |
| squash_commit_template | string | 스쿼시 커밋 메시지 템플릿. |
| issue_branch_template | string | 이슈에서 생성되는 브랜치 이름 템플릿. |
| warn_about_potentially_unwanted_characters | boolean | 잠재적으로 원치 않는 문자에 대해 경고할지 여부. |
| autoclose_referenced_issues | boolean | 참조된 이슈가 자동으로 닫히는지 여부. |
| max_artifacts_size | integer | CI/CD 아티팩트의 최대 크기(MB). |
| approvals_before_merge | integer | 더 이상 사용되지 않습니다. 대신 머지 리퀘스트 승인 API를 사용합니다. 머지 전에 필요한 승인 수. |
| mirror | boolean | 프로젝트가 미러인지 여부. |
| external_authorization_classification_label | string | 외부 인증 분류 레이블. |
| requirements_enabled | boolean | 요구사항 관리가 활성화되어 있는지 여부. |
| requirements_access_level | string | 요구사항 기능에 대한 접근 레벨. |
| security_and_compliance_enabled | boolean | 보안 및 컴플라이언스 기능이 활성화되어 있는지 여부. |
| compliance_frameworks | array of strings | 프로젝트에 적용된 컴플라이언스 프레임워크. |
| issues_template | string | 이슈의 기본 설명. 설명은 GitLab Flavored Markdown으로 파싱됩니다. Premium 및 Ultimate만 해당. |
| merge_requests_template | string | 머지 리퀘스트 설명 템플릿. Premium 및 Ultimate만 해당. |
| merge_pipelines_enabled | boolean | 머지 파이프라인 활성화 여부. |
| merge_trains_enabled | boolean | 머지 트레인 활성화 여부. |
| merge_trains_skip_train_allowed | boolean | 머지 트레인 건너뛰기 허용 여부. |
| merge_train_enforcement | string | 머지 트레인 강제 적용 수준. allow_bypass, enforce_for_all_users, enforce_with_owner_override 중 하나. 프로젝트에 머지 트레인이 활성화되어 있지 않으면 적용되지 않습니다. |
| max_pipelines_per_merge_train | integer | 머지 트레인당 최대 병렬 파이프라인 수. |
| only_allow_merge_if_all_status_checks_passed | boolean | 모든 상태 확인이 통과된 경우에만 머지가 허용되는지 여부. Ultimate만 해당. |
| allow_pipeline_trigger_approve_deployment | boolean | 파이프라인 트리거가 배포를 승인할 수 있는지 여부. |
| prevent_merge_without_jira_issue | boolean | 머지에 연관된 Jira 이슈가 필요한지 여부. |
| reviewer_assignment_strategy | string | 머지 리퀘스트에 리뷰어를 자동으로 할당하는 데 사용되는 전략. disabled 또는 code_owners 중 하나. GitLab 19.4 이전에 구성된 프로젝트에서는 이 속성이 dap_powered를 반환할 수도 있습니다. Premium 및 Ultimate만 해당. |
| duo_remote_flows_enabled | boolean | GitLab Duo 원격 플로 활성화 여부. |
| duo_foundational_flows_enabled | boolean | GitLab Duo 기초 플로 활성화 여부. |
| duo_sast_fp_detection_enabled | boolean | GitLab Duo SAST 거짓 양성 탐지 활성화 여부. |
| duo_sast_vr_workflow_enabled | boolean | GitLab Duo SAST 취약점 해결 워크플로 활성화 여부. |
| spp_repository_pipeline_access | boolean | 보안 정책을 위한 리포지터리 파이프라인 접근. 보안 오케스트레이션 정책 기능을 사용할 수 있는 경우에만 표시됩니다. |
| permissions | object | 프로젝트에 대한 사용자 권한. |
| permissions.project_access | object | 사용자의 프로젝트 접근 권한. |
| permissions.group_access | object | 사용자의 그룹 접근 권한. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "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"
},
"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"
},
"import_status": "none",
"archived": false,
"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
"shared_runners_enabled": true,
"group_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8547b1dc37721d05889db52fa2f02",
"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,
"mr_default_title_template": null,
"squash_commit_template": null,
"secret_push_protection_enabled": false,
"issue_branch_template": "gitlab/%{id}-%{title}",
"statistics": {
"commit_count": 37,
"storage_size": 1038090,
"repository_size": 1038090,
"lfs_objects_size": 0,
"job_artifacts_size": 0,
"pipeline_artifacts_size": 0,
"packages_size": 0,
"snippets_size": 0,
"uploads_size": 0,
"container_registry_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"
}
},
{
"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",
"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": 4,
"name": "Brightbox",
"path": "brightbox",
"kind": "group",
"full_path": "brightbox"
},
"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": null,
"shared_runners_enabled": true,
"group_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8547b1dc37721d05889db52fa2f02",
"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",
"auto_devops_enabled": true,
"auto_devops_deploy_strategy": "continuous",
"repository_storage": "default",
"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, // deprecated, use package_registry_access_level instead
"empty_repo": false,
"package_registry_access_level": "enabled",
"service_desk_enabled": false,
"service_desk_address": null,
"autoclose_referenced_issues": true,
"enforce_auth_checks_on_uploads": true,
"suggestion_commit_message": null,
"merge_commit_template": null,
"mr_default_title_template": null,
"squash_commit_template": null,
"secret_push_protection_enabled": false,
"issue_branch_template": "gitlab/%{id}-%{title}",
"statistics": {
"commit_count": 12,
"storage_size": 2066080,
"repository_size": 2066080,
"lfs_objects_size": 0,
"job_artifacts_size": 0,
"pipeline_artifacts_size": 0,
"packages_size": 0,
"snippets_size": 0,
"uploads_size": 0,
"container_registry_size": 0
},
"container_registry_image_prefix": "registry.example.com/brightbox/puppet",
"_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/users
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
search |
string | No | username 또는 name으로 특정 멤버를 검색합니다. |
skip_users |
integer array | No | 지정된 ID의 멤버를 제외합니다. |
성공 시 200 OK와 다음 응답 속성을
반환합니다:
| Attribute | Type | Description |
|---|---|---|
id |
integer | 사용자의 ID. |
username |
string | 사용자의 사용자 이름. |
name |
string | 사용자의 전체 이름. |
state |
string | 사용자 계정의 상태. 가능한 값: active 또는 blocked. |
avatar_url |
string | 사용자 아바타 이미지의 URL. |
web_url |
string | 브라우저에서 사용자 프로필에 접근하기 위한 URL. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.com/api/v4/projects/<project_id>/users" \
응답 예시:
[
{
"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
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
search |
string | No | 그룹 ID로 특정 그룹을 검색합니다. |
shared_min_access_level |
integer | No | 지정된 접근 레벨 이상인 공유 그룹으로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
shared_visible_only |
boolean | No | true 이면 인증된 사용자가 접근할 수 있는 공유 그룹만 반환합니다. |
skip_groups |
array of integers | No | 전달된 그룹 ID를 건너뜁니다. |
with_shared |
boolean | No | 이 그룹과 공유된 프로젝트를 포함합니다. 기본값은 false 입니다. |
성공 시 200 OK와 다음 응답 속성을
반환합니다:
| Attribute | Type | Description |
|---|---|---|
id |
integer | 그룹의 ID. |
name |
string | 그룹의 이름. |
avatar_url |
string | 그룹 아바타 이미지의 URL. |
web_url |
string | 브라우저에서 그룹에 접근하기 위한 URL. |
full_name |
string | 그룹의 전체 이름. |
full_path |
string | 그룹의 전체 경로. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/<project_id>/groups"
응답 예시:
[
{
"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
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
search |
string | No | 그룹 ID로 특정 그룹을 검색합니다. |
성공 시 200 OK와 다음 응답 속성을
반환합니다:
| Attribute | Type | Description |
|---|---|---|
id |
integer | 그룹의 ID. |
web_url |
string | 브라우저에서 그룹에 접근하기 위한 URL. |
name |
string | 그룹의 이름. |
avatar_url |
string | 그룹 아바타 이미지의 URL. |
full_name |
string | 그룹의 전체 이름. |
full_path |
string | 그룹의 전체 경로. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/<project_id>/share_locations"
응답 예시:
[
{
"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"
}
]
프로젝트에 초대된 모든 그룹 목록 조회#
프로젝트에 초대된 모든 그룹을 나열합니다. 인증 없이 접근하면 공개 초대 그룹만 반환합니다. 이 엔드포인트는 다음 기준으로 분당 60개의 요청으로 속도가 제한됩니다:
- 인증된 사용자의 경우 사용자별
- 인증되지 않은 사용자의 경우 IP 주소별
이 엔드포인트는 페이지네이션을 지원합니다:
- 오프셋 기반 페이지네이션을 사용하여 최대 50,000개의 프로젝트에 접근할 수 있습니다.
- 키셋 기반 페이지네이션을 사용하여 50,000개 이상의 프로젝트를 나열할 수 있습니다.
자세한 내용은 페이지네이션을 참고합니다.
GET /projects/:id/invited_groups
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
search |
string | no | 검색 조건과 일치하는 인가된 그룹 목록을 반환합니다. |
min_access_level |
integer | no | 현재 사용자가 지정된 접근 레벨 이상을 가진 그룹으로 제한합니다. 가능한 값: 5(Minimal access), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
relation |
array of strings | no | 관계로 그룹을 필터링합니다. 가능한 값: direct 또는 inherited. |
with_custom_attributes |
boolean | no | true이면 응답에 커스텀 속성을 반환합니다. 관리자 접근 권한이 필요합니다. |
성공 시 200 OK와 다음 응답 속성을
반환합니다:
| Attribute | Type | Description |
|---|---|---|
id |
integer | 그룹의 ID. |
web_url |
string | 브라우저에서 그룹에 접근하기 위한 URL. |
name |
string | 그룹의 이름. |
avatar_url |
string | 그룹 아바타 이미지의 URL. |
full_name |
string | 그룹의 전체 이름. |
full_path |
string | 그룹의 전체 경로. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/<project_id>/invited_groups"
응답 예시:
[
{
"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
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
성공 시 200 OK와
프로그래밍 언어 및 사용 비율 목록을 반환합니다.
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/languages"
응답 예시:
{
"Ruby": 66.69,
"JavaScript": 22.98,
"HTML": 7.91,
"CoffeeScript": 2.42
}
프로젝트 관리#
생성, 삭제, 아카이브 등 프로젝트를 관리합니다.
프로젝트 생성#
히스토리
packages_enabled는 GitLab 17.10에서 더 이상 사용되지 않습니다.package_registry_access_level은 GitLab 18.5에서 도입되었습니다.merge_train_enforcement는 GitLab 19.2에서merge_train_enforcement라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.reviewer_assignment_strategy는 GitLab 19.2에서 도입되었습니다.merge_train_enforcement는 GitLab 19.3에서 일반 제공되었습니다. 기능 플래그merge_train_enforcement는 제거되었습니다.reviewer_assignment_strategy의dap_powered값은 GitLab 19.4에서 제거되었습니다.
인증된 사용자가 소유한 프로젝트를 생성합니다.
HTTP 리포지터리가 공개적으로 접근 가능하지 않으면 URL
https://username:password@gitlab.company.com/group/project.git에 인증 정보를 추가합니다. 여기서 password는 api
범위가 활성화된 공개 액세스 키입니다.
POST /projects
package_registry_access_level을 disabled로 설정하여 프로젝트를 생성하면 패키지 레지스트리가 계속 활성화되어 있을 수 있습니다.
이를 우회하려면 동일한 요청에서 packages_enabled도 false로 설정합니다.
자세한 내용은 이슈 572010을 참고합니다.
지원하는 일반 프로젝트 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
name |
string | Yes (if path isn't provided) |
새 프로젝트의 이름. 제공하지 않으면 path와 같습니다. |
path |
string | Yes (if name isn't provided) |
새 프로젝트의 리포지터리 이름. 제공하지 않으면 이름을 기반으로 생성됩니다(소문자와 대시로 생성). 경로는 특수 문자로 시작하거나 끝날 수 없으며, 연속된 특수 문자를 포함할 수 없습니다. |
allow_merge_on_skipped_pipeline |
boolean | No | 건너뛴 job이 있어도 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
approvals_before_merge |
integer | No | 기본적으로 머지 리퀘스트를 승인해야 하는 승인자 수. 승인 규칙을 구성하려면 머지 리퀘스트 승인 API를 참고합니다. GitLab 16.0에서 더 이상 사용되지 않습니다. Premium 및 Ultimate만 해당. |
auto_cancel_pending_pipelines |
string | No | 대기 중인 파이프라인을 자동으로 취소합니다. 이 동작은 활성화 상태와 비활성화 상태를 전환하며 boolean이 아닙니다. |
auto_devops_deploy_strategy |
string | No | Auto Deploy 전략(continuous, manual, timed_incremental). |
auto_devops_enabled |
boolean | No | 이 프로젝트에 Auto DevOps를 활성화합니다. |
autoclose_referenced_issues |
boolean | No | 기본 브랜치에서 참조된 이슈를 자동으로 닫을지 설정합니다. |
avatar |
mixed | No | 프로젝트 아바타용 이미지 파일. |
build_git_strategy |
string | No | Git 전략. 기본값은 fetch입니다. |
build_timeout |
integer | No | job이 실행될 수 있는 최대 시간(초). |
ci_config_path |
string | No | CI 설정 파일 경로. |
cicd_catalog_enabled |
boolean | No | 프로젝트를 CI/CD 카탈로그에 게시할지 설정합니다. 프로젝트의 Owner 권한이 필요합니다. GitLab 19.3에서 도입되었습니다. |
container_expiration_policy_attributes |
hash | No | 이 프로젝트의 이미지 정리 정책을 업데이트합니다. 허용 값: cadence(string), keep_n(integer), older_than(string), name_regex(string), name_regex_delete(string), name_regex_keep(string), enabled(boolean). cadence, keep_n, older_than 값에 대한 자세한 내용은 컨테이너 레지스트리 문서를 참고합니다. |
container_registry_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 컨테이너 레지스트리를 활성화합니다. 대신 container_registry_access_level을 사용합니다. |
default_branch |
string | No | 기본 브랜치 이름. 브랜치 이름(예: main) 또는 정규화된 참조(예: refs/heads/main)를 허용합니다. 정규화된 참조를 제공하면 API가 refs/heads/ 접두사를 제거합니다. initialize_with_readme가 true여야 합니다. |
description |
string | No | 짧은 프로젝트 설명. |
emails_disabled |
boolean | No | (더 이상 사용되지 않음) 이메일 알림을 비활성화합니다. 대신 emails_enabled를 사용합니다 |
emails_enabled |
boolean | No | 이메일 알림을 활성화합니다. |
external_authorization_classification_label |
string | No | 프로젝트의 분류 레이블. Premium 및 Ultimate만 해당. |
group_runners_enabled |
boolean | No | 이 프로젝트에 그룹 러너를 활성화합니다. |
group_with_project_templates_id |
integer | No | 그룹 수준 커스텀 템플릿의 경우, 모든 커스텀 프로젝트 템플릿을 가져올 그룹의 ID를 지정합니다. 인스턴스 수준 템플릿에는 비워 둡니다. use_custom_template이 true여야 합니다. Premium 및 Ultimate만 해당. |
import_url |
string | No | 리포지터리를 가져올 URL. URL 값이 비어 있지 않으면 initialize_with_readme를 true로 설정하면 안 됩니다. 그렇게 하면 다음 오류가 발생할 수 있습니다: not a git repository. |
initialize_with_readme |
boolean | No | README.md 파일만 있는 Git 리포지터리를 생성할지 여부. 기본값은 false입니다. 이 boolean이 true이면 import_url 또는 리포지터리의 대체 콘텐츠를 지정하는 이 엔드포인트의 다른 속성을 전달하면 안 됩니다. 그렇게 하면 다음 오류가 발생할 수 있습니다: not a git repository. |
issues_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 이슈를 활성화합니다. 대신 issues_access_level을 사용합니다. |
jobs_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 job을 활성화합니다. 대신 builds_access_level을 사용합니다. |
lfs_enabled |
boolean | No | LFS를 활성화합니다. |
merge_method |
string | No | 프로젝트의 머지 방법을 설정합니다. merge(머지 커밋), rebase_merge(반선형 히스토리를 가진 머지 커밋), ff(fast-forward 머지) 중 하나입니다. |
merge_pipelines_enabled |
boolean | No | 머지된 결과 파이프라인을 활성화하거나 비활성화합니다. |
merge_requests_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 머지 리퀘스트를 활성화합니다. 대신 merge_requests_access_level을 사용합니다. |
merge_trains_enabled |
boolean | No | 머지 트레인을 활성화하거나 비활성화합니다. |
merge_trains_skip_train_allowed |
boolean | No | 파이프라인이 끝나기를 기다리지 않고 머지 트레인의 머지 리퀘스트를 머지할 수 있도록 허용합니다. |
merge_train_enforcement |
string | No | 머지 트레인 강제 적용 수준. allow_bypass, enforce_for_all_users, enforce_with_owner_override 중 하나. 프로젝트에 머지 트레인이 활성화되어 있지 않으면 적용되지 않습니다. |
max_pipelines_per_merge_train |
integer | No | 머지 트레인당 최대 병렬 파이프라인 수. |
mirror_trigger_builds |
boolean | No | 풀 미러링이 빌드를 트리거합니다. Premium 및 Ultimate만 해당. |
mirror |
boolean | No | 프로젝트에서 풀 미러링을 활성화합니다. Premium 및 Ultimate만 해당. |
namespace_id |
integer | No | 새 프로젝트의 네임스페이스. 그룹 ID 또는 하위 그룹 ID를 지정합니다. 제공하지 않으면 현재 사용자의 개인 네임스페이스가 기본값입니다. |
only_allow_merge_if_all_discussions_are_resolved |
boolean | No | 모든 토론이 해결된 경우에만 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
only_allow_merge_if_all_status_checks_passed |
boolean | No | 모든 상태 확인이 통과하지 않으면 머지 리퀘스트의 머지를 차단할지 여부. 기본값은 false입니다. Ultimate만 해당. |
only_allow_merge_if_pipeline_succeeds |
boolean | No | 파이프라인이 성공한 경우에만 머지 리퀘스트를 머지할 수 있는지 설정합니다. 이 설정은 프로젝트 설정에서 Pipelines must succeed로 표시됩니다. |
packages_enabled |
boolean | No | GitLab 17.10에서 더 이상 사용되지 않습니다. 패키지 리포지터리 기능을 활성화하거나 비활성화합니다. 대신 package_registry_access_level을 사용합니다. |
package_registry_access_level |
string | No | 패키지 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled, public. |
printing_merge_request_link_enabled |
boolean | No | 명령줄에서 푸시할 때 머지 리퀘스트를 생성하거나 볼 수 있는 링크를 표시합니다. |
public_builds |
boolean | No | (더 이상 사용되지 않음) true이면 프로젝트 멤버가 아닌 사용자도 job을 볼 수 있습니다. 대신 public_jobs를 사용합니다. |
public_jobs |
boolean | No | true이면 프로젝트 멤버가 아닌 사용자도 job을 볼 수 있습니다. |
repository_object_format |
string | No | 리포지터리 객체 형식. 기본값은 sha1입니다. |
remove_source_branch_after_merge |
boolean | No | 모든 새 머지 리퀘스트에 Delete source branch 옵션을 기본으로 활성화합니다. |
repository_storage |
string | No | 리포지터리가 있는 스토리지 샤드. (관리자 전용) |
request_access_enabled |
boolean | No | 사용자가 멤버 접근을 요청할 수 있도록 허용합니다. |
resolve_outdated_diff_discussions |
boolean | No | 푸시로 변경된 줄의 머지 리퀘스트 diff 토론을 자동으로 해결합니다. |
reviewer_assignment_strategy |
string | No | 머지 리퀘스트에 리뷰어를 자동으로 할당하는 데 사용되는 전략. disabled 또는 code_owners 중 하나. GitLab 19.4 이전에 구성된 프로젝트에서는 이 속성이 dap_powered를 반환할 수도 있습니다. Premium 및 Ultimate만 해당. |
shared_runners_enabled |
boolean | No | 이 프로젝트에 인스턴스 러너를 활성화합니다. |
show_default_award_emojis |
boolean | No | 기본 이모지 반응을 표시합니다. |
snippets_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 스니펫을 활성화합니다. 대신 snippets_access_level을 사용합니다. |
squash_option |
string | No | never, always, default_on, default_off 중 하나. |
tag_list |
array | No | 프로젝트의 태그 목록. 프로젝트에 최종적으로 할당할 태그 배열을 전달합니다. GitLab 14.0에서 더 이상 사용되지 않습니다. 대신 topics를 사용합니다. |
template_name |
string | No | use_custom_template 없이 사용하면 내장 프로젝트 템플릿의 이름입니다. use_custom_template과 함께 사용하면 커스텀 프로젝트 템플릿의 이름입니다. |
template_project_id |
integer | No | use_custom_template과 함께 사용할 때 커스텀 프로젝트 템플릿의 프로젝트 ID. template_name은 모호할 수 있으므로 프로젝트 ID를 사용하는 편이 좋습니다. Premium 및 Ultimate만 해당. |
topics |
array | No | 프로젝트의 토픽 목록. 프로젝트에 최종적으로 할당할 토픽 배열을 전달합니다. |
use_custom_template |
boolean | No | 커스텀 인스턴스 또는 그룹(group_with_project_templates_id 사용) 프로젝트 템플릿을 사용합니다. Premium 및 Ultimate만 해당. |
visibility |
string | No | 프로젝트 가시성 레벨을 참고합니다. |
warn_about_potentially_unwanted_characters |
boolean | No | 이 프로젝트에서 잠재적으로 원치 않는 문자 사용에 대한 경고를 활성화합니다. |
wiki_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 위키를 활성화합니다. 대신 wiki_access_level을 사용합니다. |
요청 예시:
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/"
개별 프로젝트 기능의 가시성 레벨을 설정하려면 프로젝트 기능 가시성 레벨을 참고합니다.
사용자를 위한 프로젝트 생성#
히스토리
packages_enabled는 GitLab 17.10에서 더 이상 사용되지 않습니다.package_registry_access_level은 GitLab 18.5에서 도입되었습니다.mr_default_title_template은 GitLab 18.11에서mr_default_title_template이라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template은 GitLab 19.0에서 제거되었습니다.
사용자를 위한 프로젝트를 생성합니다.
사전 요구 사항:
- 관리자여야 합니다.
HTTP 리포지터리가 공개적으로 접근 가능하지 않으면 URL에 인증 정보를 추가합니다. 예를 들면
https://username:password@gitlab.company.com/group/project.git이며, 여기서 password는 api
범위가 활성화된 공개 액세스 키입니다.
POST /projects/user/:user_id
지원하는 일반 프로젝트 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | 새 프로젝트의 이름. |
user_id |
integer | Yes | 프로젝트 소유자의 사용자 ID. |
allow_merge_on_skipped_pipeline |
boolean | No | 건너뛴 job이 있어도 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
approvals_before_merge |
integer | No | 기본적으로 머지 리퀘스트를 승인해야 하는 승인자 수. GitLab 16.0에서 더 이상 사용되지 않습니다. 승인 규칙을 구성하려면 머지 리퀘스트 승인 API를 참고합니다. Premium 및 Ultimate만 해당. |
auto_cancel_pending_pipelines |
string | No | 대기 중인 파이프라인을 자동으로 취소합니다. 이 동작은 활성화 상태와 비활성화 상태를 전환하며 boolean이 아닙니다. |
auto_devops_deploy_strategy |
string | No | Auto Deploy 전략(continuous, manual, timed_incremental). |
auto_devops_enabled |
boolean | No | 이 프로젝트에 Auto DevOps를 활성화합니다. |
autoclose_referenced_issues |
boolean | No | 기본 브랜치에서 참조된 이슈를 자동으로 닫을지 설정합니다. |
avatar |
mixed | No | 프로젝트 아바타용 이미지 파일. |
build_git_strategy |
string | No | Git 전략. 기본값은 fetch입니다. |
build_timeout |
integer | No | job이 실행될 수 있는 최대 시간(초). |
ci_config_path |
string | No | CI 설정 파일 경로. |
cicd_catalog_enabled |
boolean | No | 프로젝트를 CI/CD 카탈로그에 게시할지 설정합니다. 프로젝트의 Owner 권한이 필요합니다. GitLab 19.3에서 도입되었습니다. |
container_registry_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 컨테이너 레지스트리를 활성화합니다. 대신 container_registry_access_level을 사용합니다. |
default_branch |
string | No | 기본 브랜치 이름. initialize_with_readme가 true여야 합니다. |
description |
string | No | 짧은 프로젝트 설명. |
emails_disabled |
boolean | No | (더 이상 사용되지 않음) 이메일 알림을 비활성화합니다. 대신 emails_enabled를 사용합니다 |
emails_enabled |
boolean | No | 이메일 알림을 활성화합니다. |
enforce_auth_checks_on_uploads |
boolean | No | 업로드에 인증 확인을 강제합니다. |
external_authorization_classification_label |
string | No | 프로젝트의 분류 레이블. Premium 및 Ultimate만 해당. |
group_runners_enabled |
boolean | No | 이 프로젝트에 그룹 러너를 활성화합니다. |
group_with_project_templates_id |
integer | No | 그룹 수준 커스텀 템플릿의 경우, 모든 커스텀 프로젝트 템플릿을 가져올 그룹의 ID를 지정합니다. 인스턴스 수준 템플릿에는 비워 둡니다. use_custom_template이 true여야 합니다. Premium 및 Ultimate만 해당. |
import_url |
string | No | 리포지터리를 가져올 URL. |
initialize_with_readme |
boolean | No | 기본값은 false입니다. |
issue_branch_template |
string | No | 이슈에서 생성되는 브랜치의 이름을 제안하는 데 사용되는 템플릿. |
issues_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 이슈를 활성화합니다. 대신 issues_access_level을 사용합니다. |
jobs_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 job을 활성화합니다. 대신 builds_access_level을 사용합니다. |
lfs_enabled |
boolean | No | LFS를 활성화합니다. |
merge_commit_template |
string | No | 머지 리퀘스트에서 머지 커밋 메시지를 만드는 데 사용되는 템플릿. |
merge_method |
string | No | 프로젝트의 머지 방법을 설정합니다. merge(머지 커밋), rebase_merge(반선형 히스토리를 가진 머지 커밋), ff(fast-forward 머지) 중 하나입니다. |
merge_requests_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 머지 리퀘스트를 활성화합니다. 대신 merge_requests_access_level을 사용합니다. |
mr_default_title_template |
string | No | 머지 리퀘스트의 기본 제목을 설정하는 데 사용되는 템플릿. |
mirror_trigger_builds |
boolean | No | 풀 미러링이 빌드를 트리거합니다. Premium 및 Ultimate만 해당. |
mirror |
boolean | No | 프로젝트에서 풀 미러링을 활성화합니다. Premium 및 Ultimate만 해당. |
namespace_id |
integer | No | 새 프로젝트의 네임스페이스(기본값은 현재 사용자의 네임스페이스). |
only_allow_merge_if_all_discussions_are_resolved |
boolean | No | 모든 토론이 해결된 경우에만 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
only_allow_merge_if_all_status_checks_passed |
boolean | No | 모든 상태 확인이 통과하지 않으면 머지 리퀘스트의 머지를 차단할지 여부. 기본값은 false입니다. Ultimate만 해당. |
only_allow_merge_if_pipeline_succeeds |
boolean | No | job이 성공한 경우에만 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
packages_enabled |
boolean | No | GitLab 17.10에서 더 이상 사용되지 않습니다. 패키지 리포지터리 기능을 활성화하거나 비활성화합니다. 대신 package_registry_access_level을 사용합니다. |
package_registry_access_level |
string | No | 패키지 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled, public. |
path |
string | No | 새 프로젝트의 커스텀 리포지터리 이름. 기본적으로 이름을 기반으로 생성됩니다. |
printing_merge_request_link_enabled |
boolean | No | 명령줄에서 푸시할 때 머지 리퀘스트를 생성하거나 볼 수 있는 링크를 표시합니다. |
public_builds |
boolean | No | (더 이상 사용되지 않음) true이면 프로젝트 멤버가 아닌 사용자도 job을 볼 수 있습니다. 대신 public_jobs를 사용합니다. |
public_jobs |
boolean | No | true이면 프로젝트 멤버가 아닌 사용자도 job을 볼 수 있습니다. |
repository_object_format |
string | No | 리포지터리 객체 형식. 기본값은 sha1입니다. |
remove_source_branch_after_merge |
boolean | No | 모든 새 머지 리퀘스트에 Delete source branch 옵션을 기본으로 활성화합니다. |
repository_storage |
string | No | 리포지터리가 있는 스토리지 샤드. (관리자 전용) |
request_access_enabled |
boolean | No | 사용자가 멤버 접근을 요청할 수 있도록 허용합니다. |
resolve_outdated_diff_discussions |
boolean | No | 푸시로 변경된 줄의 머지 리퀘스트 diff 토론을 자동으로 해결합니다. |
shared_runners_enabled |
boolean | No | 이 프로젝트에 인스턴스 러너를 활성화합니다. |
show_default_award_emojis |
boolean | No | 기본 이모지 반응을 표시합니다. |
snippets_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 스니펫을 활성화합니다. 대신 snippets_access_level을 사용합니다. |
squash_commit_template |
string | No | 머지 리퀘스트에서 스쿼시 커밋 메시지를 만드는 데 사용되는 템플릿. |
squash_option |
string | No | never, always, default_on, default_off 중 하나. |
suggestion_commit_message |
string | No | 머지 리퀘스트 제안을 적용할 때 사용되는 커밋 메시지. |
tag_list |
array | No | (GitLab 14.0에서 더 이상 사용되지 않음) 프로젝트의 태그 목록. 프로젝트에 최종적으로 할당할 태그 배열을 전달합니다. 대신 topics를 사용합니다. |
template_name |
string | No | use_custom_template 없이 사용하면 내장 프로젝트 템플릿의 이름입니다. use_custom_template과 함께 사용하면 커스텀 프로젝트 템플릿의 이름입니다. |
topics |
array | No | 프로젝트의 토픽 목록. |
use_custom_template |
boolean | No | 커스텀 인스턴스 또는 그룹(group_with_project_templates_id 사용) 프로젝트 템플릿을 사용합니다. Premium 및 Ultimate만 해당. |
visibility |
string | No | 프로젝트 가시성 레벨을 참고합니다. |
warn_about_potentially_unwanted_characters |
boolean | No | 이 프로젝트에서 잠재적으로 원치 않는 문자 사용에 대한 경고를 활성화합니다. |
wiki_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 위키를 활성화합니다. 대신 wiki_access_level을 사용합니다. |
개별 프로젝트 기능의 가시성 레벨을 설정하려면 프로젝트 기능 가시성 레벨을 참고합니다.
프로젝트 업데이트#
히스토리
packages_enabled는 GitLab 17.10에서 더 이상 사용되지 않습니다.package_registry_access_level은 GitLab 18.5에서 도입되었습니다.protect_merge_request_pipelines와ci_display_pipeline_variables는 GitLab 18.10에서 도입되었습니다.mr_default_title_template은 GitLab 18.11에서mr_default_title_template이라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template은 GitLab 19.0에서 제거되었습니다. merge_train_enforcement는 GitLab 19.2에서merge_train_enforcement라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.reviewer_assignment_strategy는 GitLab 19.2에서 도입되었습니다.merge_train_enforcement는 GitLab 19.3에서 일반 제공되었습니다. 기능 플래그merge_train_enforcement는 제거되었습니다.automatic_rebase_enabled는 GitLab 19.4에서 도입되었습니다.reviewer_assignment_strategy의dap_powered값은 GitLab 19.4에서 제거되었습니다.feature_flags_minimum_role은 GitLab 19.4에서feature_flag_management_permissions라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.ci_skip_branch_pipelines_for_mrs는 GitLab 19.4에서 도입되었습니다.duo_code_review_decisions_enabled는 GitLab 19.5에서duo_code_review_decisions라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
기존 프로젝트를 업데이트합니다.
HTTP 리포지터리가 공개적으로 접근 가능하지 않으면 URL
https://username:password@gitlab.company.com/group/project.git에 인증 정보를 추가합니다.
여기서 password는 api 범위가 활성화된 공개 액세스 키입니다.
PUT /projects/:id
지원하는 일반 프로젝트 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
allow_merge_on_skipped_pipeline |
boolean | No | 건너뛴 job이 있어도 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
allow_pipeline_trigger_approve_deployment |
boolean | No | 파이프라인을 트리거한 사용자가 배포를 승인할 수 있는지 설정합니다. Premium 및 Ultimate만 해당. |
only_allow_merge_if_all_status_checks_passed |
boolean | No | 모든 상태 확인이 통과하지 않으면 머지 리퀘스트의 머지를 차단할지 여부. 기본값은 false입니다. Ultimate만 해당. |
approvals_before_merge |
integer | No | 기본적으로 머지 리퀘스트를 승인해야 하는 승인자 수. GitLab 16.0에서 더 이상 사용되지 않습니다. 승인 규칙을 구성하려면 머지 리퀘스트 승인 API를 참고합니다. Premium 및 Ultimate만 해당. |
auto_cancel_pending_pipelines |
string | No | 대기 중인 파이프라인을 자동으로 취소합니다. 이 동작은 활성화 상태와 비활성화 상태를 전환하며 boolean이 아닙니다. |
auto_devops_deploy_strategy |
string | No | Auto Deploy 전략(continuous, manual, timed_incremental). |
auto_devops_enabled |
boolean | No | 이 프로젝트에 Auto DevOps를 활성화합니다. |
auto_duo_code_review_enabled |
boolean | No | 머지 리퀘스트에 대한 GitLab Duo의 자동 리뷰를 활성화합니다. 머지 리퀘스트의 GitLab Duo를 참고합니다. Ultimate만 해당. |
autoclose_referenced_issues |
boolean | No | 기본 브랜치에서 참조된 이슈를 자동으로 닫을지 설정합니다. |
automatic_rebase_enabled |
boolean | No | 머지 전에 소스 브랜치를 자동으로 리베이스합니다. 머지 방법이 fast-forward 머지이거나 반선형 히스토리를 가진 머지 커밋일 때 적용됩니다. |
avatar |
mixed | No | 프로젝트 아바타용 이미지 파일. |
build_git_strategy |
string | No | Git 전략. 기본값은 fetch입니다. |
build_timeout |
integer | No | job이 실행될 수 있는 최대 시간(초). |
ci_config_path |
string | No | CI 설정 파일 경로. |
ci_default_git_depth |
integer | No | 얕은 복제의 기본 리비전 수. |
ci_delete_pipelines_in_seconds |
integer | No | 설정된 시간보다 오래된 파이프라인은 삭제됩니다. |
ci_display_pipeline_variables |
boolean | No | 파이프라인을 수동으로 실행한 뒤 파이프라인 세부 정보 페이지에 수동으로 정의한 모든 변수를 표시합니다. |
ci_forward_deployment_enabled |
boolean | No | 오래된 배포 job 방지를 활성화하거나 비활성화합니다. |
ci_forward_deployment_rollback_allowed |
boolean | No | 롤백 배포에 대한 job 재시도 허용을 활성화하거나 비활성화합니다. |
ci_skip_branch_pipelines_for_mrs |
boolean | No | 머지 리퀘스트에 대한 브랜치 파이프라인 건너뛰기를 활성화하거나 비활성화합니다. |
ci_allow_fork_pipelines_to_run_in_parent_project |
boolean | No | 포크에서 온 머지 리퀘스트의 파이프라인을 상위 프로젝트에서 실행하도록 활성화하거나 비활성화합니다. |
ci_id_token_sub_claim_components |
array | No | ID Token의 sub 클레임에 포함되는 필드. 첫 번째 요소는 project_path, project_id, job_project_path, job_project_id, source_project_path, source_project_id 중 하나여야 합니다. 배열에는 ref_type, ref, ref_protected, environment_protected, deployment_tier도 포함될 수 있습니다. 기본값은 ["project_path", "ref_type", "ref"]입니다. GitLab 17.10에서 도입되었습니다. environment_protected와 deployment_tier 지원은 GitLab 18.7에서 도입되었습니다. 첫 번째 구성 요소로 project_id를 사용하는 지원은 GitLab 19.1에서 도입되었습니다. job_project_path, job_project_id, source_project_path, source_project_id 지원은 GitLab 19.5에서 도입되었습니다. |
ci_separated_caches |
boolean | No | 브랜치 보호 상태에 따라 캐시를 분리할지 설정합니다. |
ci_restrict_pipeline_cancellation_role |
string | No | 파이프라인 또는 job을 취소하는 데 필요한 권한을 설정합니다. developer, maintainer, no_one 중 하나입니다. Premium 및 Ultimate만 해당. |
ci_pipeline_variables_minimum_override_role |
string | No | 변수를 재정의할 수 있는 권한을 지정할 수 있습니다. owner, maintainer, developer, no_one_allowed 중 하나입니다. GitLab 17.1에서 도입되었습니다. GitLab 17.1부터 17.7까지는 restrict_user_defined_variables가 활성화되어 있어야 합니다. |
ci_push_repository_for_job_token_allowed |
boolean | No | job 토큰을 사용하여 프로젝트 리포지터리에 푸시하는 기능을 활성화하거나 비활성화합니다. GitLab 17.2에서 도입되었습니다. |
cicd_catalog_enabled |
boolean | No | 프로젝트를 CI/CD 카탈로그에 게시할지 설정합니다. 프로젝트의 Owner 권한이 필요합니다. GitLab 19.3에서 도입되었습니다. |
container_expiration_policy_attributes |
hash | No | 이 프로젝트의 이미지 정리 정책을 업데이트합니다. 허용 값: cadence(string), keep_n(integer), older_than(string), name_regex(string), name_regex_delete(string), name_regex_keep(string), enabled(boolean). |
container_registry_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 컨테이너 레지스트리를 활성화합니다. 대신 container_registry_access_level을 사용합니다. |
default_branch |
string | No | 기본 브랜치 이름. |
description |
string | No | 짧은 프로젝트 설명. |
duo_code_review_decisions_enabled |
boolean | No | 머지 리퀘스트에서 GitLab Duo의 승인 및 변경 요청을 활성화합니다. 머지 리퀘스트의 GitLab Duo를 참고합니다. Ultimate 전용. |
duo_remote_flows_enabled |
boolean | No | 프로젝트에서 플로를 실행할 수 있는지 결정합니다. |
duo_sast_fp_detection_enabled |
boolean | No | true이면 SAST 거짓 양성 탐지를 켭니다. Security Manager, Maintainer 또는 Owner 권한이 필요합니다. SAST 거짓 양성 탐지 켜기를 참고합니다. |
duo_secret_detection_fp_enabled |
boolean | No | true이면 시크릿 탐지의 거짓 양성 탐지를 켭니다. Security Manager, Maintainer 또는 Owner 권한이 필요합니다. 시크릿 탐지 거짓 양성 탐지 켜기를 참고합니다. |
duo_sast_vr_workflow_enabled |
boolean | No | true이면 SAST 취약점 해결 워크플로를 켭니다. Security Manager, Maintainer 또는 Owner 권한이 필요합니다. SAST 취약점 해결 워크플로 켜기를 참고합니다. |
emails_disabled |
boolean | No | (더 이상 사용되지 않음) 이메일 알림을 비활성화합니다. 대신 emails_enabled를 사용합니다 |
emails_enabled |
boolean | No | 이메일 알림을 활성화합니다. |
enforce_auth_checks_on_uploads |
boolean | No | 업로드에 인증 확인을 강제합니다. |
external_authorization_classification_label |
string | No | 프로젝트의 분류 레이블. Premium 및 Ultimate만 해당. |
feature_flags_minimum_role |
string | No | 기능 플래그를 생성, 업데이트, 전환, 삭제하는 데 필요한 최소 권한. no_one_allowed, developer, maintainer, owner 중 하나입니다. 기본값은 developer입니다. 이 설정을 owner 또는 no_one_allowed에서 다른 값으로 바꾸려면 Owner 권한이 필요합니다. |
group_runners_enabled |
boolean | No | 이 프로젝트에 그룹 러너를 활성화합니다. |
import_url |
string | No | 리포지터리를 가져온 URL. |
issues_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 이슈를 활성화합니다. 대신 issues_access_level을 사용합니다. |
issues_template |
string | No | 새 이슈의 기본 설명. GitLab Flavored Markdown으로 서식이 지정됩니다. Premium 및 Ultimate만 해당. |
merge_requests_template |
string | No | 새 머지 리퀘스트의 기본 설명. GitLab Flavored Markdown으로 서식이 지정됩니다. Premium 및 Ultimate만 해당. |
jobs_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 job을 활성화합니다. 대신 builds_access_level을 사용합니다. |
keep_latest_artifact |
boolean | No | 이 프로젝트에서 최신 아티팩트를 보관하는 기능을 비활성화하거나 활성화합니다. |
lfs_enabled |
boolean | No | LFS를 활성화합니다. |
max_artifacts_size |
integer | No | 개별 job 아티팩트의 최대 파일 크기(MB). |
merge_commit_template |
string | No | 머지 리퀘스트에서 머지 커밋 메시지를 만드는 데 사용되는 템플릿. |
merge_method |
string | No | 프로젝트의 머지 방법을 설정합니다. merge(머지 커밋), rebase_merge(반선형 히스토리를 가진 머지 커밋), ff(fast-forward 머지) 중 하나입니다. |
merge_pipelines_enabled |
boolean | No | 머지된 결과 파이프라인을 활성화하거나 비활성화합니다. |
merge_requests_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 머지 리퀘스트를 활성화합니다. 대신 merge_requests_access_level을 사용합니다. |
mr_default_title_template |
string | No | 머지 리퀘스트의 기본 제목을 설정하는 데 사용되는 템플릿. |
merge_trains_enabled |
boolean | No | 머지 트레인을 활성화하거나 비활성화합니다. |
merge_trains_skip_train_allowed |
boolean | No | 파이프라인이 끝나기를 기다리지 않고 머지 트레인의 머지 리퀘스트를 머지할 수 있도록 허용합니다. |
merge_train_enforcement |
string | No | 머지 트레인 강제 적용 수준. allow_bypass, enforce_for_all_users, enforce_with_owner_override 중 하나. 프로젝트에 머지 트레인이 활성화되어 있지 않으면 적용되지 않습니다. |
max_pipelines_per_merge_train |
integer | No | 머지 트레인당 최대 병렬 파이프라인 수. |
mirror_overwrites_diverged_branches |
boolean | No | 풀 미러가 분기된 브랜치를 덮어씁니다. Premium 및 Ultimate만 해당. |
mirror_trigger_builds |
boolean | No | 풀 미러링이 빌드를 트리거합니다. Premium 및 Ultimate만 해당. |
mirror_user_id |
integer | No | 풀 미러 이벤트와 관련된 모든 활동을 담당하는 사용자. (관리자 전용) Premium 및 Ultimate만 해당. |
mirror |
boolean | No | 프로젝트에서 풀 미러링을 활성화합니다. Premium 및 Ultimate만 해당. |
mr_default_target_self |
boolean | No | 포크된 프로젝트에서 머지 리퀘스트의 타깃을 이 프로젝트로 지정합니다. false이면 타깃은 업스트림 프로젝트입니다. |
name |
string | No | 프로젝트의 이름. |
only_allow_merge_if_all_discussions_are_resolved |
boolean | No | 모든 토론이 해결된 경우에만 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
only_allow_merge_if_pipeline_succeeds |
boolean | No | job이 성공한 경우에만 머지 리퀘스트를 머지할 수 있는지 설정합니다. |
only_mirror_protected_branches |
boolean | No | 보호된 브랜치만 미러링합니다. Premium 및 Ultimate만 해당. |
packages_enabled |
boolean | No | GitLab 17.10에서 더 이상 사용되지 않습니다. 패키지 리포지터리 기능을 활성화하거나 비활성화합니다. 대신 package_registry_access_level을 사용합니다. |
package_registry_access_level |
string | No | 패키지 레지스트리 기능의 접근 수준. 가능한 값: disabled, private, enabled, public. |
path |
string | No | 프로젝트의 커스텀 리포지터리 이름. 기본적으로 이름을 기반으로 생성됩니다. |
prevent_merge_without_jira_issue |
boolean | No | 머지 리퀘스트에 연관된 Jira 이슈가 필요한지 설정합니다. Ultimate만 해당. |
printing_merge_request_link_enabled |
boolean | No | 명령줄에서 푸시할 때 머지 리퀘스트를 생성하거나 볼 수 있는 링크를 표시합니다. |
protect_merge_request_pipelines |
boolean | No | 보호된 변수와 러너에 대한 접근 제어를 활성화하거나 비활성화합니다. |
public_builds |
boolean | No | (더 이상 사용되지 않음) true이면 프로젝트 멤버가 아닌 사용자도 job을 볼 수 있습니다. 대신 public_jobs를 사용합니다. |
public_jobs |
boolean | No | true이면 프로젝트 멤버가 아닌 사용자도 job을 볼 수 있습니다. |
remove_source_branch_after_merge |
boolean | No | 모든 새 머지 리퀘스트에 Delete source branch 옵션을 기본으로 활성화합니다. |
repository_storage |
string | No | 리포지터리가 있는 스토리지 샤드. (관리자 전용) |
request_access_enabled |
boolean | No | 사용자가 멤버 접근을 요청할 수 있도록 허용합니다. |
resolve_outdated_diff_discussions |
boolean | No | 푸시로 변경된 줄의 머지 리퀘스트 diff 토론을 자동으로 해결합니다. |
restrict_user_defined_variables |
boolean | No | (GitLab 17.7에서 ci_pipeline_variables_minimum_override_role을 위해 더 이상 사용되지 않음) 파이프라인을 트리거할 때 Maintainer 권한이 있는 사용자만 사용자 정의 변수를 전달할 수 있도록 허용합니다. 예를 들어 UI, API 또는 트리거 토큰으로 파이프라인을 트리거하는 경우입니다. |
reviewer_assignment_strategy |
string | No | 머지 리퀘스트에 리뷰어를 자동으로 할당하는 데 사용되는 전략. disabled 또는 code_owners 중 하나. GitLab 19.4 이전에 구성된 프로젝트에서는 이 속성이 dap_powered를 반환할 수도 있습니다. Premium 및 Ultimate만 해당. |
service_desk_enabled |
boolean | No | 서비스 데스크 기능을 활성화하거나 비활성화합니다. |
shared_runners_enabled |
boolean | No | 이 프로젝트에 인스턴스 러너를 활성화합니다. |
show_default_award_emojis |
boolean | No | 기본 이모지 반응을 표시합니다. |
snippets_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 스니펫을 활성화합니다. 대신 snippets_access_level을 사용합니다. |
issue_branch_template |
string | No | 이슈에서 생성되는 브랜치의 이름을 제안하는 데 사용되는 템플릿. |
spp_repository_pipeline_access |
boolean | No | 사용자와 토큰이 이 프로젝트에서 보안 정책 구성을 읽기 전용으로 가져올 수 있도록 허용합니다. 이 프로젝트를 보안 정책 소스로 사용하는 프로젝트에서 보안 정책을 강제하려면 필요합니다. Ultimate만 해당. |
squash_commit_template |
string | No | 머지 리퀘스트에서 스쿼시 커밋 메시지를 만드는 데 사용되는 템플릿. |
squash_option |
string | No | never, always, default_on, default_off 중 하나. |
suggestion_commit_message |
string | No | 머지 리퀘스트 제안을 적용할 때 사용되는 커밋 메시지. |
tag_list |
array | No | (GitLab 14.0에서 더 이상 사용되지 않음) 프로젝트의 태그 목록. 프로젝트에 최종적으로 할당할 태그 배열을 전달합니다. 대신 topics를 사용합니다. |
topics |
array | No | 프로젝트의 토픽 목록. 프로젝트에 이미 추가된 기존 토픽을 대체합니다. |
visibility |
string | No | 프로젝트 가시성 레벨을 참고합니다. |
warn_about_potentially_unwanted_characters |
boolean | No | 이 프로젝트에서 잠재적으로 원치 않는 문자 사용에 대한 경고를 활성화합니다. |
wiki_enabled |
boolean | No | (더 이상 사용되지 않음) 이 프로젝트에 위키를 활성화합니다. 대신 wiki_access_level을 사용합니다. |
web_based_commit_signing_enabled |
boolean | No | GitLab UI에서 생성한 커밋에 대해 웹 기반 커밋 서명을 활성화합니다. GitLab.com에서만 사용할 수 있습니다. |
예를 들어 GitLab.com 프로젝트의 인스턴스 러너 설정을 전환하려면 다음과 같이 합니다:
curl --request PUT \
--header "PRIVATE-TOKEN: <your-token>" \
--data "shared_runners_enabled=true" \
--url "https://gitlab.com/api/v4/projects/<your-project-ID>" # to turn off: "shared_runners_enabled=false"
개별 프로젝트 기능의 가시성 레벨을 설정하려면 프로젝트 기능 가시성 레벨을 참고합니다.
여러 프로젝트에서 서비스 데스크 끄기#
GitLab은 각 프로젝트의 서비스 데스크 설정을 저장합니다. 새 프로젝트는 서비스 데스크가 기본적으로 활성화되어 있습니다. 네임스페이스의 여러 프로젝트에서 서비스 데스크를 끄려면 프로젝트 업데이트 엔드포인트로 각 프로젝트를 업데이트합니다.
사전 요구 사항:
- 변경하려는 각 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.
프로젝트에서 서비스 데스크를 끄려면 service_desk_enabled 속성을 false로 설정합니다:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data "service_desk_enabled=false" \
--url "https://gitlab.example.com/api/v4/projects/<project_id>"
네임스페이스의 프로젝트를 찾으려면 include_subgroups=true와 함께
그룹 프로젝트 목록 조회 엔드포인트를 사용하거나,
개인 네임스페이스의 경우 사용자 프로젝트 목록 조회
엔드포인트를 사용합니다. 그런 다음 변경하려는 각 프로젝트에 대해 앞의 요청을 실행합니다.
API가 반환하는 service_desk_enabled 필드는 계산된 값입니다. 프로젝트 설정이 켜져 있고
인스턴스에 수신 이메일이 구성된 경우에만 true입니다.
수신 이메일이 구성되지 않았으면 프로젝트 설정이 켜져 있어도 이 필드는 false로
표시됩니다.
멤버 가져오기#
다른 프로젝트에서 멤버를 가져옵니다.
가져오는 멤버의 타깃 프로젝트 권한이 다음과 같은 경우:
- Maintainer이면 소스 프로젝트에서 Owner 권한을 가진 멤버는 Maintainer 권한으로 가져옵니다.
- Owner이면 소스 프로젝트에서 Owner 권한을 가진 멤버는 Owner 권한으로 가져옵니다.
POST /projects/:id/import_project_members/:project_id
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 멤버를 받을 타깃 프로젝트의 ID 또는 URL 인코딩된 경로. |
project_id |
integer or string | Yes | 멤버를 가져올 소스 프로젝트의 ID 또는 URL 인코딩된 경로. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/import_project_members/32"
반환 값:
- 성공 시
200 OK. - 타깃 또는 소스 프로젝트가 존재하지 않거나 요청자가 접근할 수 없는 경우
404 Project Not Found. - 프로젝트 멤버 가져오기가 성공적으로 완료되지 않은 경우
422 Unprocessable Entity.
응답 예시:
-
모든 이메일이 성공적으로 전송된 경우(
200HTTP 상태 코드):{ "status": "success" } -
1명 이상의 멤버를 가져오는 중 오류가 발생한 경우(
200HTTP 상태 코드):{ "status": "error", "message": { "john_smith": "Some individual error message", "jane_smith": "Some individual error message" }, "total_members_count": 3 } -
시스템 오류가 발생한 경우(
404및422HTTP 상태 코드):
{ "message": "Import failed" }
프로젝트 보관#
히스토리
mr_default_title_template은 GitLab 18.11에서mr_default_title_template이라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template은 GitLab 19.0에서 제거되었습니다.
지정된 프로젝트를 보관합니다.
사전 요구 사항:
- 관리자이거나 프로젝트에서 Owner 권한을 할당받아야 합니다.
이 엔드포인트는 멱등성을 가집니다. 이미 보관된 프로젝트를 보관해도 프로젝트는 변경되지 않습니다.
POST /projects/:id/archive
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "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_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
"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,
"ci_display_pipeline_variables": false,
"ci_skip_branch_pipelines_for_mrs": false,
"cicd_catalog_enabled": false,
"protect_merge_request_pipelines": true,
"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,
"mr_default_title_template": null,
"secret_push_protection_enabled": false,
"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"
}
}
프로젝트 보관 해제#
히스토리
mr_default_title_template은 GitLab 18.11에서mr_default_title_template이라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template은 GitLab 19.0에서 제거되었습니다.
지정된 프로젝트의 보관을 해제합니다.
사전 요구 사항:
- 관리자이거나 프로젝트에서 Owner 권한을 할당받아야 합니다.
이 엔드포인트는 멱등성을 가집니다. 보관되지 않은 프로젝트의 보관을 해제해도 프로젝트는 변경되지 않습니다.
POST /projects/:id/unarchive
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "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_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
"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,
"ci_display_pipeline_variables": false,
"ci_skip_branch_pipelines_for_mrs": false,
"cicd_catalog_enabled": false,
"protect_merge_request_pipelines": true,
"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,
"mr_default_title_template": null,
"container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
"secret_push_protection_enabled": false,
"_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 18.0에서 GitLab Premium에서 GitLab Free로 이동되었습니다.
사전 요구 사항:
- 관리자이거나 프로젝트의 Owner 권한이 있어야 합니다.
프로젝트를 삭제 예약 상태로 표시합니다. 프로젝트는 보존 기간이 끝날 때 삭제됩니다:
- GitLab.com에서는 프로젝트가 30일 동안 보존됩니다.
- GitLab Self-Managed에서는 보존 기간을 인스턴스 설정으로 제어합니다.
이 엔드포인트는 이전에 삭제 예약으로 표시된 프로젝트를 즉시 삭제할 수도 있습니다.
GitLab.com에서는 프로젝트가 삭제된 뒤에도 데이터가 30일 동안 보존되며, 영구 삭제는 제공되지 않습니다. GitLab.com에서 프로젝트를 즉시 삭제해야 하면 지원 티켓을 열 수 있습니다.
DELETE /projects/:id
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
full_path |
string | no | permanently_remove와 함께 사용할 프로젝트의 전체 경로. GitLab 18.0에서 GitLab Free로 이동되었습니다. 프로젝트 경로를 찾으려면 단일 프로젝트 조회의 path_with_namespace를 사용합니다. |
permanently_remove |
boolean/string | no | 삭제 예약으로 표시된 프로젝트를 즉시 삭제합니다. GitLab 18.0에서 GitLab Free로 이동되었습니다. GitLab.com과 Dedicated에서는 비활성화되어 있습니다. |
삭제 예약된 프로젝트 복원#
삭제 예약으로 표시된 지정된 프로젝트를 복원합니다.
POST /projects/:id/restore
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
프로젝트를 새 네임스페이스로 이전#
히스토리
mr_default_title_template이 GitLab 18.11에서mr_default_title_template이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.- 기능 플래그
mr_default_title_template이 GitLab 19.0에서 제거되었습니다. - 비동기 이전이 GitLab 19.0에서
groups_and_projects_async_transfer라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - 비동기 이전이 GitLab 19.4에서 일반 제공되었습니다. 기능 플래그
groups_and_projects_async_transfer가 제거되었습니다. - 이전을 예약하기 전에 같은 이름 또는 경로의 프로젝트가 있는지 확인하는 기능이 GitLab 19.5에서 도입되었습니다.
프로젝트를 새 네임스페이스로 이전합니다.
프로젝트 이전의 전제 조건에 대한 자세한 내용은 다른 네임스페이스로 프로젝트 이전을 참고합니다.
PUT /projects/:id/transfer
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
namespace |
integer or string | Yes | 프로젝트를 이전할 네임스페이스의 ID 또는 경로. |
성공하면 200 OK와 이전 전의 프로젝트를 반환합니다.
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "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, // deprecated, use package_registry_access_level instead
"package_registry_access_level": "enabled",
"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,
"mr_default_title_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,
"secret_push_protection_enabled": false
}
이전이 성공했는지 확인하려면 프로젝트의 namespace.id가 새 네임스페이스의 ID와 일치할 때까지 프로젝트를 조회합니다.
이전에 실패하면 이전을 요청한 사용자에게 transfer_failed 액션이 있는 할 일 항목이 생성됩니다.
할 일 항목을 가져오려면 모든 할 일 항목 목록 조회를 참고합니다.
프로젝트 이전 가능한 그룹 목록 조회#
사용자가 프로젝트를 이전할 수 있는 그룹 목록을 조회합니다.
GET /projects/:id/transfer_locations
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
search |
string | No | 검색할 그룹 이름. |
요청 예시:
curl --url "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
사전 요구 사항:
- 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.
- 파일 크기는 200 KB 이하여야 합니다. 이상적인 이미지 크기는 192 x 192 픽셀입니다.
- 이미지는 다음 파일 형식 중 하나여야 합니다:
.bmp.gif.ico.jpeg.png.tiff
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
avatar |
string | Yes | 업로드할 파일. |
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
파일 시스템에서 아바타를 업로드하려면 --form 인수를 사용합니다. 이렇게 하면
cURL 이 Content-Type: multipart/form-data 헤더를 사용해 데이터를 전송합니다.
avatar= 매개변수는 파일 시스템의 이미지 파일을 가리켜야 하며 앞에
@를 붙여야 합니다.
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5" \
--form "avatar=@dk.png"
응답 예시:
{
"avatar_url": "https://gitlab.example.com/uploads/-/system/project/avatar/2/dk.png"
}
프로젝트 아바타 다운로드#
프로젝트 아바타를 다운로드합니다. 프로젝트가 공개적으로 접근 가능하면 인증 없이 이 엔드포인트에 접근할 수 있습니다.
GET /projects/:id/avatar
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/4/avatar"
프로젝트 아바타 삭제#
프로젝트 아바타를 삭제하려면 avatar 속성에 빈 값을 사용합니다.
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data "avatar=" \
--url "https://gitlab.example.com/api/v4/projects/5"
프로젝트 공유#
그룹과 프로젝트를 공유합니다.
자세한 내용은 프로젝트에 그룹 초대를 참고합니다.
그룹과 프로젝트 공유#
지정된 프로젝트를 그룹과 공유합니다.
POST /projects/:id/share
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
group_access |
integer | Yes | 그룹에 부여할 액세스 레벨. 가능한 값: 5(최소 액세스), 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). |
group_id |
integer | Yes | 공유할 그룹의 ID. |
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
expires_at |
string | No | ISO 8601 형식의 공유 만료 날짜. 예: 2016-09-26. |
그룹의 공유 프로젝트 링크 삭제#
지정된 그룹과의 프로젝트 공유를 해제합니다. 성공 시 204와 콘텐츠 없음을 반환합니다.
DELETE /projects/:id/share/:group_id
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
group_id |
integer | Yes | 그룹의 ID. |
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/share/17"
프로젝트 하우스키핑 작업 시작#
프로젝트의 하우스키핑 작업을 시작합니다.
POST /projects/:id/housekeeping
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
task |
string | No | 도달할 수 없는 객체의 수동 prune을 트리거하려면 prune, eager 하우스키핑을 트리거하려면 eager를 사용합니다. |
실시간 보안 스캔#
단일 파일에 대한 SAST 스캔 결과를 실시간으로 반환합니다.
POST /projects/:id/security_scans/sast/scan
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 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": "Insecure string processing function (strcpy)",
"description": "The `strcpy` family of functions do not provide the ability to limit or check buffer\nsizes before copying to a destination buffer. This can lead to buffer overflows. Consider\nusing more secure alternatives such as `strncpy` and provide the correct limit to the\ndestination buffer and ensure the string is null terminated.\n\nFor more information please see: https://linux.die.net/man/3/strncpy\n\nIf developing for C Runtime Library (CRT), more secure versions of these functions should be\nused, see:\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": "High",
"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
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
wiki |
boolean | No | 프로젝트 리포지터리 대신 위키를 다운로드할지 여부. |
리포지터리 스토리지 경로 조회#
지정된 프로젝트의 리포지터리 스토리지 경로를 조회합니다. Gitaly Cluster(Praefect)를 사용하는 경우 Praefect가 생성한 복제본 경로를 참고합니다.
관리자만 사용할 수 있습니다.
GET /projects/:id/storage
지원하는 속성:
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer or string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
[
{
"project_id": 1,
"disk_path": "@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"created_at": "2012-10-12T17:04:47Z",
"repository_storage": "default"
}
]
시크릿 푸시 보호 상태#
Security Manager, Developer, Maintainer 또는 Owner 권한이 있으면 다음 요청에서도 secret_push_protection_enabled 값이 반환될 수 있습니다.
이러한 요청 중 일부는 권한 요구사항이 더 엄격합니다. 자세한 내용은 앞서 언급한 엔드포인트를 참고합니다.
이 정보로 프로젝트에 시크릿 푸시 보호가 활성화되어 있는지 확인합니다.
secret_push_protection_enabled 값을 수정하려면 프로젝트 보안 설정 API를 사용합니다.
GET /projectsGET /projects/:idGET /users/:user_id/projectsGET /users/:user_id/contributed_projectsPUT /projects/:project_id/transfer?namespace=:namespace_idPUT /projects/:idPOST /projectsPOST /projects/user/:user_idPOST /projects/:id/archivePOST /projects/:id/unarchive
응답 예시:
{
"id": 1,
"project_id": 3,
"secret_push_protection_enabled": true,
...
}
문제 해결#
응답에서 예상치 못한 restrict_user_defined_variables 값#
restrict_user_defined_variables와 ci_pipeline_variables_minimum_override_role에 충돌하는 값을 설정하면,
pipeline_variables_minimum_override_role 설정이 더 높은 우선순위를 가지므로
응답 값이 예상과 다를 수 있습니다.
예를 들어 다음과 같습니다.
restrict_user_defined_variables를true로,ci_pipeline_variables_minimum_override_role을developer로 설정하면 응답은restrict_user_defined_variables: false를 반환합니다.ci_pipeline_variables_minimum_override_role을developer로 설정한 쪽이 우선하므로 변수가 제한되지 않습니다.restrict_user_defined_variables를false로,ci_pipeline_variables_minimum_override_role을maintainer로 설정하면ci_pipeline_variables_minimum_override_role을maintainer로 설정한 쪽이 우선하여 변수가 제한되므로 응답은restrict_user_defined_variables: true를 반환합니다.