Topics API

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

프로젝트 주제를 REST API를 사용하여 상호 작용합니다.

주제 디렉터리

GitLab 인스턴스의 프로젝트 주제 디렉터리을 연결된 프로젝트 수에 따라 정렬하여 반환합니다.

GET /topics

지원되는 속성:

속성 유형 필수 설명
page 정수 아니요 검색할 페이지. 기본값은 1입니다.
per_page 정수 아니요 페이지 당 반환할 레코드 수. 기본값은 20입니다.
search 문자열 아니요 name에 대한 주제 검색.
without_projects 부울 아니요 할당된 프로젝트 없이 주제 결과 제한.

예시 요청:

curl "https://gitlab.example.com/api/v4/topics?search=git"

예시 응답:

[
  {
    "id": 1,
    "name": "gitlab",
    "title": "GitLab",
    "description": "GitLab은 내장된 버전 관리, 이슈 추적, 코드 리뷰, CI/CD 등이 포함된 오픈 소스 엔드 투 엔드 소프트웨어 개발 플랫폼입니다.",
    "total_projects_count": 1000,
    "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon"
  },
  {
    "id": 3,
    "name": "git",
    "title": "Git",
    "description": "Git은 작은 프로젝트에서 매우 큰 프로젝트로 모든 것을 신속하고 효율적으로 처리할 수 있도록 설계된 무료 오픈 소스 분산 버전 관리 시스템입니다.",
    "total_projects_count": 900,
    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"
  },
  {
    "id": 2,
    "name": "git-lfs",
    "title": "Git LFS",
    "description": null,
    "total_projects_count": 300,
    "avatar_url": null
  }
]

주제 가져오기

ID로 프로젝트 주제 가져오기.

GET /topics/:id

지원되는 속성:

속성 유형 필수 설명
id 정수 프로젝트 주제 ID

예시 요청:

curl "https://gitlab.example.com/api/v4/topics/1"

예시 응답:

{
  "id": 1,
  "name": "gitlab",
  "title": "GitLab",
  "description": "GitLab은 내장된 버전 관리, 이슈 추적, 코드 리뷰, CI/CD 등이 포함된 오픈 소스 엔드 투 엔드 소프트웨어 개발 플랫폼입니다.",
  "total_projects_count": 1000,
  "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon"
}

주제에 할당된 프로젝트 디렉터리

특정 주제에 할당된 모든 프로젝트를 나열하려면 프로젝트 API를 사용하세요.

GET /projects?topic=<topic_name>

프로젝트 주제 생성

새로운 프로젝트 주제를 생성합니다. 관리자만 사용할 수 있습니다.

POST /topics

지원되는 속성:

속성 유형 필수 설명
name 문자열 슬러그 (이름)
title 문자열 제목
avatar 파일 아니요 아바타
description 문자열 아니요 설명

예시 요청:

curl --request POST \
     --data "name=topic1&title=Topic 1" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/topics"

예시 응답:

{
  "id": 1,
  "name": "topic1",
  "title": "Topic 1",
  "description": null,
  "total_projects_count": 0,
  "avatar_url": null
}

프로젝트 주제 업데이트

프로젝트 주제를 업데이트합니다. 관리자만 사용할 수 있습니다.

PUT /topics/:id

지원되는 속성:

속성 유형 필수 설명
id 정수 프로젝트 주제 ID
avatar 파일 아니요 아바타
description 문자열 아니요 설명
name 문자열 아니요 슬러그 (이름)
title 문자열 아니요 제목

예시 요청:

curl --request PUT \
     --data "name=topic1" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/topics/1"

예시 응답:

{
  "id": 1,
  "name": "topic1",
  "title": "Topic 1",
  "description": null,
  "total_projects_count": 0,
  "avatar_url": null
}

프로젝트 주제 아바타 업로드

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

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

프로젝트 주제 아바타 제거

프로젝트 주제 아바타를 삭제하려면 avatar 속성에 빈 값을 사용하세요.

예시 요청:

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

프로젝트 주제 삭제

프로젝트 주제를 삭제하려면 관리자여야 합니다. 프로젝트 주제를 삭제하면 프로젝트에 대한 주제 할당도 삭제됩니다.

DELETE /topics/:id

지원되는 속성:

속성 유형 필수 설명
id 정수 프로젝트 주제 ID

예시 요청:

curl --request DELETE \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/topics/1"

주제 Merge

소스 주제를 대상 주제로 Merge하려면 관리자여야 합니다. 주제를 Merge하면 소스 주제가 삭제되고 모든 할당된 프로젝트가 대상 주제로 이동됩니다.

POST /topics/merge

지원되는 속성:

속성 유형 필수 설명
source_topic_id 정수 소스 프로젝트 주제 ID
target_topic_id 정수 대상 프로젝트 주제 ID

예시 요청:

curl --request POST \
     --data "source_topic_id=2&target_topic_id=1" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/topics/merge"

예시 응답:

{
  "id": 1,
  "name": "topic1",
  "title": "Topic 1",
  "description": null,
  "total_projects_count": 0,
  "avatar_url": null
}