InfoGrab DocsInfoGrab Docs

프로젝트 API

요약

이 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을 사용합니다.

프로젝트 조회#

히스토리

지정한 프로젝트를 조회합니다. 프로젝트가 공개적으로 접근 가능하면 인증 없이도 이 엔드포인트에 접근할 수 있습니다.

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
}

프로젝트 목록 조회#

프로젝트와 프로젝트 속성을 조회합니다.

모든 프로젝트 목록 조회#

히스토리

인증된 사용자가 접근할 수 있는 인스턴스의 모든 프로젝트를 조회합니다. 인증되지 않은 요청은 제한된 속성만 포함한 공개 프로젝트만 반환합니다.

이 엔드포인트는 페이지네이션을 지원합니다.

  • 오프셋 기반 페이지네이션으로 최대 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
    }
  },
  {
    ...
  }
]
Note

last_activity_at은 프로젝트 활동과 프로젝트 이벤트를 기준으로 업데이트됩니다. 데이터베이스 성능을 위해 이 필드는 시간당 최대 한 번만 업데이트됩니다. 마지막 업데이트로부터 한 시간 이내에 발생한 이벤트는 타임스탬프를 변경하지 않습니다. 따라서 last_activity_at은 최대 한 시간까지 최신이 아닐 수 있습니다. updated_at은 데이터베이스에서 프로젝트 레코드가 변경될 때마다 업데이트됩니다.

사용자의 모든 개인 프로젝트 목록 조회#

히스토리

지정한 사용자의 모든 개인 프로젝트를 조회합니다. 다음 제약이 적용됩니다.

  • 그룹이나 하위 그룹 프로젝트가 아닌, 사용자 개인 네임스페이스의 프로젝트만 반환합니다.
  • 사용자 프로필이 비공개이면 빈 목록을 반환합니다.
  • 인증 없는 요청은 공개 프로젝트만 반환합니다.

이 엔드포인트는 페이지네이션을 지원합니다.

  • 오프셋 기반 페이지네이션으로 최대 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"
    }
  }
]

사용자의 모든 프로젝트 기여 목록 조회#

히스토리

지정한 사용자가 볼 수 있는 프로젝트에 남긴 모든 기여를 조회합니다. 최근 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
Note

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.

응답 예시:

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

    {  "status":  "success"  }
    
  • 1명 이상의 멤버를 가져오는 중 오류가 발생한 경우(200 HTTP 상태 코드):

    {
      "status": "error",
      "message": {
                   "john_smith": "Some individual error message",
                   "jane_smith": "Some individual error message"
                 },
      "total_members_count": 3
    }
    
  • 시스템 오류가 발생한 경우(404 및 422 HTTP 상태 코드):

{  "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에서는 보존 기간을 인스턴스 설정으로 제어합니다.

이 엔드포인트는 이전에 삭제 예약으로 표시된 프로젝트를 즉시 삭제할 수도 있습니다.

Warning

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를 사용합니다.

실시간 보안 스캔#

히스토리
  • GitLab 17.6에서 도입되었습니다. 이 기능은 실험 기능입니다.

단일 파일에 대한 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"
  }
]

시크릿 푸시 보호 상태#

히스토리
  • GitLab 17.3에서 도입되었습니다.
  • GitLab 17.11에서 setPreReceiveSecretDetection에서 이름이 변경되었습니다.

Security Manager, Developer, Maintainer 또는 Owner 권한이 있으면 다음 요청에서도 secret_push_protection_enabled 값이 반환될 수 있습니다. 이러한 요청 중 일부는 권한 요구사항이 더 엄격합니다. 자세한 내용은 앞서 언급한 엔드포인트를 참고합니다. 이 정보로 프로젝트에 시크릿 푸시 보호가 활성화되어 있는지 확인합니다. secret_push_protection_enabled 값을 수정하려면 프로젝트 보안 설정 API를 사용합니다.

  • GET /projects
  • GET /projects/:id
  • GET /users/:user_id/projects
  • GET /users/:user_id/contributed_projects
  • PUT /projects/:project_id/transfer?namespace=:namespace_id
  • PUT /projects/:id
  • POST /projects
  • POST /projects/user/:user_id
  • POST /projects/:id/archive
  • POST /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를 반환합니다.

프로젝트 API

GitLab v19.5
Tier: Ultimate
Offering: 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을 사용합니다.

프로젝트 조회#

히스토리

지정한 프로젝트를 조회합니다. 프로젝트가 공개적으로 접근 가능하면 인증 없이도 이 엔드포인트에 접근할 수 있습니다.

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
}

프로젝트 목록 조회#

프로젝트와 프로젝트 속성을 조회합니다.

모든 프로젝트 목록 조회#

히스토리

인증된 사용자가 접근할 수 있는 인스턴스의 모든 프로젝트를 조회합니다. 인증되지 않은 요청은 제한된 속성만 포함한 공개 프로젝트만 반환합니다.

이 엔드포인트는 페이지네이션을 지원합니다.

  • 오프셋 기반 페이지네이션으로 최대 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
    }
  },
  {
    ...
  }
]
Note

last_activity_at은 프로젝트 활동과 프로젝트 이벤트를 기준으로 업데이트됩니다. 데이터베이스 성능을 위해 이 필드는 시간당 최대 한 번만 업데이트됩니다. 마지막 업데이트로부터 한 시간 이내에 발생한 이벤트는 타임스탬프를 변경하지 않습니다. 따라서 last_activity_at은 최대 한 시간까지 최신이 아닐 수 있습니다. updated_at은 데이터베이스에서 프로젝트 레코드가 변경될 때마다 업데이트됩니다.

사용자의 모든 개인 프로젝트 목록 조회#

히스토리

지정한 사용자의 모든 개인 프로젝트를 조회합니다. 다음 제약이 적용됩니다.

  • 그룹이나 하위 그룹 프로젝트가 아닌, 사용자 개인 네임스페이스의 프로젝트만 반환합니다.
  • 사용자 프로필이 비공개이면 빈 목록을 반환합니다.
  • 인증 없는 요청은 공개 프로젝트만 반환합니다.

이 엔드포인트는 페이지네이션을 지원합니다.

  • 오프셋 기반 페이지네이션으로 최대 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"
    }
  }
]

사용자의 모든 프로젝트 기여 목록 조회#

히스토리

지정한 사용자가 볼 수 있는 프로젝트에 남긴 모든 기여를 조회합니다. 최근 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
Note

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.

응답 예시:

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

    {  "status":  "success"  }
    
  • 1명 이상의 멤버를 가져오는 중 오류가 발생한 경우(200 HTTP 상태 코드):

    {
      "status": "error",
      "message": {
                   "john_smith": "Some individual error message",
                   "jane_smith": "Some individual error message"
                 },
      "total_members_count": 3
    }
    
  • 시스템 오류가 발생한 경우(404 및 422 HTTP 상태 코드):

{  "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에서는 보존 기간을 인스턴스 설정으로 제어합니다.

이 엔드포인트는 이전에 삭제 예약으로 표시된 프로젝트를 즉시 삭제할 수도 있습니다.

Warning

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를 사용합니다.

실시간 보안 스캔#

히스토리
  • GitLab 17.6에서 도입되었습니다. 이 기능은 실험 기능입니다.

단일 파일에 대한 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"
  }
]

시크릿 푸시 보호 상태#

히스토리
  • GitLab 17.3에서 도입되었습니다.
  • GitLab 17.11에서 setPreReceiveSecretDetection에서 이름이 변경되었습니다.

Security Manager, Developer, Maintainer 또는 Owner 권한이 있으면 다음 요청에서도 secret_push_protection_enabled 값이 반환될 수 있습니다. 이러한 요청 중 일부는 권한 요구사항이 더 엄격합니다. 자세한 내용은 앞서 언급한 엔드포인트를 참고합니다. 이 정보로 프로젝트에 시크릿 푸시 보호가 활성화되어 있는지 확인합니다. secret_push_protection_enabled 값을 수정하려면 프로젝트 보안 설정 API를 사용합니다.

  • GET /projects
  • GET /projects/:id
  • GET /users/:user_id/projects
  • GET /users/:user_id/contributed_projects
  • PUT /projects/:project_id/transfer?namespace=:namespace_id
  • PUT /projects/:id
  • POST /projects
  • POST /projects/user/:user_id
  • POST /projects/:id/archive
  • POST /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를 반환합니다.