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: $.