Topics API
- 소개됨: GitLab 14.5.
프로젝트 주제를 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"
주제 아바타 삭제
- 소개됨: GitLab 14.6.
주제 아바타를 제거하려면 avatar
속성에 빈 값을 사용하십시오.
예시 요청:
curl --request PUT \
--data "avatar=" \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/topics/1"
프로젝트 주제 삭제
- 소개됨 in GitLab 14.9.
프로젝트 주제를 삭제하려면 관리자어야 합니다. 프로젝트 주제를 삭제하면 해당 주제에 대한 프로젝트 할당도 모두 삭제됩니다.
DELETE /topics/:id
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수 | 예 | 프로젝트 주제 ID |
예시 요청:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/topics/1"
주제 Merge
- 소개됨 in GitLab 15.4.
소스 주제를 대상 주제로 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
}