GitLab CI/CD · Capability
GitLab API — project_topics
GitLab API — project_topics. 6 operations. Lead operation: Get topics. Self-contained Naftiko capability covering one Gitlab Ci business surface.
What You Can Do
GET
Getapiv4topics
— Get topics
/v1/api/v4/topics
POST
Postapiv4topics
— Create a topic
/v1/api/v4/topics
POST
Postapiv4topicsmerge
— Merge topics
/v1/api/v4/topics/merge
GET
Getapiv4topicsid
— Get topic
/v1/api/v4/topics/{id}
PUT
Putapiv4topicsid
— Update a topic
/v1/api/v4/topics/{id}
DELETE
Deleteapiv4topicsid
— Delete a topic
/v1/api/v4/topics/{id}
MCP Tools
get-topics
Get topics
read-only
idempotent
create-topic
Create a topic
merge-topics
Merge topics
get-topic
Get topic
read-only
idempotent
update-topic
Update a topic
idempotent
delete-topic
Delete a topic
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: GitLab API — project_topics
description: 'GitLab API — project_topics. 6 operations. Lead operation: Get topics. Self-contained Naftiko capability covering
one Gitlab Ci business surface.'
tags:
- Gitlab Ci
- project_topics
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
GITLAB_CI_API_KEY: GITLAB_CI_API_KEY
capability:
consumes:
- type: http
namespace: gitlab-ci-project-topics
baseUri: https://gitlab.com
description: GitLab API — project_topics business capability. Self-contained, no shared references.
resources:
- name: api-v4-topics
path: /api/v4/topics
operations:
- name: getapiv4topics
method: GET
description: Get topics
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: search
in: query
type: string
description: Return list of topics matching the search criteria
- name: without_projects
in: query
type: boolean
description: Return list of topics without assigned projects
- name: organization_id
in: query
type: integer
description: The organization id for the topics
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: postapiv4topics
method: POST
description: Create a topic
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: postApiV4Topics
in: body
type: string
required: true
- name: api-v4-topics-merge
path: /api/v4/topics/merge
operations:
- name: postapiv4topicsmerge
method: POST
description: Merge topics
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: postApiV4TopicsMerge
in: body
type: string
required: true
- name: api-v4-topics-id
path: /api/v4/topics/{id}
operations:
- name: getapiv4topicsid
method: GET
description: Get topic
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of project topic
required: true
- name: putapiv4topicsid
method: PUT
description: Update a topic
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of project topic
required: true
- name: putApiV4TopicsId
in: body
type: string
required: true
- name: deleteapiv4topicsid
method: DELETE
description: Delete a topic
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of project topic
required: true
exposes:
- type: rest
namespace: gitlab-ci-project-topics-rest
port: 8080
description: REST adapter for GitLab API — project_topics. One Spectral-compliant resource per consumed operation, prefixed
with /v1.
resources:
- path: /v1/api/v4/topics
name: api-v4-topics
description: REST surface for api-v4-topics.
operations:
- method: GET
name: getapiv4topics
description: Get topics
call: gitlab-ci-project-topics.getapiv4topics
with:
search: rest.search
without_projects: rest.without_projects
organization_id: rest.organization_id
page: rest.page
per_page: rest.per_page
outputParameters:
- type: object
mapping: $.
- method: POST
name: postapiv4topics
description: Create a topic
call: gitlab-ci-project-topics.postapiv4topics
with:
postApiV4Topics: rest.postApiV4Topics
outputParameters:
- type: object
mapping: $.
- path: /v1/api/v4/topics/merge
name: api-v4-topics-merge
description: REST surface for api-v4-topics-merge.
operations:
- method: POST
name: postapiv4topicsmerge
description: Merge topics
call: gitlab-ci-project-topics.postapiv4topicsmerge
with:
postApiV4TopicsMerge: rest.postApiV4TopicsMerge
outputParameters:
- type: object
mapping: $.
- path: /v1/api/v4/topics/{id}
name: api-v4-topics-id
description: REST surface for api-v4-topics-id.
operations:
- method: GET
name: getapiv4topicsid
description: Get topic
call: gitlab-ci-project-topics.getapiv4topicsid
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- method: PUT
name: putapiv4topicsid
description: Update a topic
call: gitlab-ci-project-topics.putapiv4topicsid
with:
id: rest.id
putApiV4TopicsId: rest.putApiV4TopicsId
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: deleteapiv4topicsid
description: Delete a topic
call: gitlab-ci-project-topics.deleteapiv4topicsid
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: gitlab-ci-project-topics-mcp
port: 9090
transport: http
description: MCP adapter for GitLab API — project_topics. One tool per consumed operation, routed inline through this
capability's consumes block.
tools:
- name: get-topics
description: Get topics
hints:
readOnly: true
destructive: false
idempotent: true
call: gitlab-ci-project-topics.getapiv4topics
with:
search: tools.search
without_projects: tools.without_projects
organization_id: tools.organization_id
page: tools.page
per_page: tools.per_page
outputParameters:
- type: object
mapping: $.
- name: create-topic
description: Create a topic
hints:
readOnly: false
destructive: false
idempotent: false
call: gitlab-ci-project-topics.postapiv4topics
with:
postApiV4Topics: tools.postApiV4Topics
outputParameters:
- type: object
mapping: $.
- name: merge-topics
description: Merge topics
hints:
readOnly: false
destructive: false
idempotent: false
call: gitlab-ci-project-topics.postapiv4topicsmerge
with:
postApiV4TopicsMerge: tools.postApiV4TopicsMerge
outputParameters:
- type: object
mapping: $.
- name: get-topic
description: Get topic
hints:
readOnly: true
destructive: false
idempotent: true
call: gitlab-ci-project-topics.getapiv4topicsid
with:
id: tools.id
outputParameters:
- type: object
mapping: $.
- name: update-topic
description: Update a topic
hints:
readOnly: false
destructive: false
idempotent: true
call: gitlab-ci-project-topics.putapiv4topicsid
with:
id: tools.id
putApiV4TopicsId: tools.putApiV4TopicsId
outputParameters:
- type: object
mapping: $.
- name: delete-topic
description: Delete a topic
hints:
readOnly: false
destructive: true
idempotent: true
call: gitlab-ci-project-topics.deleteapiv4topicsid
with:
id: tools.id
outputParameters:
- type: object
mapping: $.