- List topics
- Get a topic
- List projects assigned to a topic
- Create a project topic
- Update a project topic
- Delete a project topic
Topics API
Interact with project topics using the REST API.
Returns a list of project topics in the GitLab instance ordered by number of associated projects.
Supported attributes:
List topics
GET /topics
Attribute | Type | Required | Description |
---|---|---|---|
page
| integer | No | Page to retrieve. Defaults to 1 .
|
per_page
| integer | No | Number of records to return per page. Defaults to 20 .
|
search
| string | No | Search topics against their name .
|
Example request:
curl "https://gitlab.example.com/api/v4/topics?search=git"
Example response:
[
{
"id": 1,
"name": "GitLab",
"description": "GitLab is an open source end-to-end software development platform with built-in version control, issue tracking, code review, CI/CD, and more.",
"total_projects_count": 1000,
"avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon"
},
{
"id": 3,
"name": "Git",
"description": "Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.",
"total_projects_count": 900,
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"
},
{
"id": 2,
"name": "Git LFS",
"description": null,
"total_projects_count": 300,
"avatar_url": null
}
]
Get a topic
Get a project topic by ID.
GET /topics/:id
Supported attributes:
Attribute | Type | Required | Description |
---|---|---|---|
id
| integer | Yes | ID of project topic |
Example request:
curl "https://gitlab.example.com/api/v4/topics/1"
Example response:
{
"id": 1,
"name": "GitLab",
"description": "GitLab is an open source end-to-end software development platform with built-in version control, issue tracking, code review, CI/CD, and more.",
"total_projects_count": 1000,
"avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon"
}
List projects assigned to a topic
Use the Projects API to list all projects assigned to a specific topic.
GET /projects?topic=<topic_name>
Create a project topic
Create a new project topic. Only available to administrators.
POST /topics
Supported attributes:
Attribute | Type | Required | Description |
---|---|---|---|
name
| string | Yes | Name |
avatar
| file | No | Avatar |
description
| string | No | Description |
Example request:
curl --request POST \
--data "name=topic1" \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/topics"
Example response:
{
"id": 1,
"name": "topic1",
"description": null,
"total_projects_count": 0,
"avatar_url": null
}
Update a project topic
Update a project topic. Only available to administrators.
PUT /topics/:id
Supported attributes:
Attribute | Type | Required | Description |
---|---|---|---|
id
| integer | Yes | ID of project topic |
avatar
| file | No | Avatar |
description
| string | No | Description |
name
| string | No | Name |
Example request:
curl --request PUT \
--data "name=topic1" \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/topics/1"
Example response:
{
"id": 1,
"name": "topic1",
"description": null,
"total_projects_count": 0,
"avatar_url": null
}
Upload a topic avatar
To upload an avatar file from your file system, use the --form
argument. This argument causes
cURL to post data using the header Content-Type: multipart/form-data
. The
file=
parameter must point to a file on your file system and be preceded by
@
. For example:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/topics/1" \
--form "avatar=@/tmp/example.png"
Remove a topic avatar
To remove a topic avatar, use a blank value for the Example request:
Example request:
avatar
attribute.
curl --request PUT \
--data "avatar=" \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/topics/1"
Delete a project topic
Attribute
Type
Required
Description
id
integer
Yes
ID of project topic
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/topics/1"
Help & feedback
Docs
Edit this page to fix an error or add an improvement in a merge request.Create an issue to suggest an improvement to this page.
Product
Create an issue if there's something you don't like about this feature.Propose functionality by submitting a feature request.
to help shape new features.
Feature availability and product trials
to see all GitLab tiers and features, or to upgrade.with access to all features for 30 days.
Get Help
If you didn't find what you were looking for,
search the docs.
If you want help with something specific and could use community support,
.
For problems setting up or using this feature (depending on your GitLab
subscription).