naftiko: 1.0.0-alpha2 info: label: GitLab API — custom_attributes description: 'GitLab API — custom_attributes. 8 operations. Lead operation: custom_attributes. Self-contained Naftiko capability covering one Gitlab Ci business surface.' tags: - Gitlab Ci - custom_attributes 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-custom-attributes baseUri: https://gitlab.com description: GitLab API — custom_attributes business capability. Self-contained, no shared references. resources: - name: api-v4-groups-id-custom_attributes path: /api/v4/groups/{id}/custom_attributes operations: - name: getapiv4groupsidcustomattributes method: GET description: Get all custom attributes on a group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer required: true - name: api-v4-groups-id-custom_attributes-key path: /api/v4/groups/{id}/custom_attributes/{key} operations: - name: getapiv4groupsidcustomattributeskey method: GET description: Get a custom attribute on a group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string description: The key of the custom attribute required: true - name: id in: path type: integer required: true - name: putapiv4groupsidcustomattributeskey method: PUT description: Set a custom attribute on a group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string description: The key of the custom attribute required: true - name: id in: path type: integer required: true - name: putApiV4GroupsIdCustomAttributesKey in: body type: string required: true - name: deleteapiv4groupsidcustomattributeskey method: DELETE description: Delete a custom attribute on a group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string description: The key of the custom attribute required: true - name: id in: path type: integer required: true - name: api-v4-projects-id-custom_attributes path: /api/v4/projects/{id}/custom_attributes operations: - name: getapiv4projectsidcustomattributes method: GET description: Get all custom attributes on a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer required: true - name: api-v4-projects-id-custom_attributes-key path: /api/v4/projects/{id}/custom_attributes/{key} operations: - name: getapiv4projectsidcustomattributeskey method: GET description: Get a custom attribute on a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string description: The key of the custom attribute required: true - name: id in: path type: integer required: true - name: putapiv4projectsidcustomattributeskey method: PUT description: Set a custom attribute on a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string description: The key of the custom attribute required: true - name: id in: path type: integer required: true - name: putApiV4ProjectsIdCustomAttributesKey in: body type: string required: true - name: deleteapiv4projectsidcustomattributeskey method: DELETE description: Delete a custom attribute on a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string description: The key of the custom attribute required: true - name: id in: path type: integer required: true exposes: - type: rest namespace: gitlab-ci-custom-attributes-rest port: 8080 description: REST adapter for GitLab API — custom_attributes. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/v4/groups/{id}/custom-attributes name: api-v4-groups-id-custom-attributes description: REST surface for api-v4-groups-id-custom_attributes. operations: - method: GET name: getapiv4groupsidcustomattributes description: Get all custom attributes on a group call: gitlab-ci-custom-attributes.getapiv4groupsidcustomattributes with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/api/v4/groups/{id}/custom-attributes/{key} name: api-v4-groups-id-custom-attributes-key description: REST surface for api-v4-groups-id-custom_attributes-key. operations: - method: GET name: getapiv4groupsidcustomattributeskey description: Get a custom attribute on a group call: gitlab-ci-custom-attributes.getapiv4groupsidcustomattributeskey with: key: rest.key id: rest.id outputParameters: - type: object mapping: $. - method: PUT name: putapiv4groupsidcustomattributeskey description: Set a custom attribute on a group call: gitlab-ci-custom-attributes.putapiv4groupsidcustomattributeskey with: key: rest.key id: rest.id putApiV4GroupsIdCustomAttributesKey: rest.putApiV4GroupsIdCustomAttributesKey outputParameters: - type: object mapping: $. - method: DELETE name: deleteapiv4groupsidcustomattributeskey description: Delete a custom attribute on a group call: gitlab-ci-custom-attributes.deleteapiv4groupsidcustomattributeskey with: key: rest.key id: rest.id outputParameters: - type: object mapping: $. - path: /v1/api/v4/projects/{id}/custom-attributes name: api-v4-projects-id-custom-attributes description: REST surface for api-v4-projects-id-custom_attributes. operations: - method: GET name: getapiv4projectsidcustomattributes description: Get all custom attributes on a project call: gitlab-ci-custom-attributes.getapiv4projectsidcustomattributes with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/api/v4/projects/{id}/custom-attributes/{key} name: api-v4-projects-id-custom-attributes-key description: REST surface for api-v4-projects-id-custom_attributes-key. operations: - method: GET name: getapiv4projectsidcustomattributeskey description: Get a custom attribute on a project call: gitlab-ci-custom-attributes.getapiv4projectsidcustomattributeskey with: key: rest.key id: rest.id outputParameters: - type: object mapping: $. - method: PUT name: putapiv4projectsidcustomattributeskey description: Set a custom attribute on a project call: gitlab-ci-custom-attributes.putapiv4projectsidcustomattributeskey with: key: rest.key id: rest.id putApiV4ProjectsIdCustomAttributesKey: rest.putApiV4ProjectsIdCustomAttributesKey outputParameters: - type: object mapping: $. - method: DELETE name: deleteapiv4projectsidcustomattributeskey description: Delete a custom attribute on a project call: gitlab-ci-custom-attributes.deleteapiv4projectsidcustomattributeskey with: key: rest.key id: rest.id outputParameters: - type: object mapping: $. - type: mcp namespace: gitlab-ci-custom-attributes-mcp port: 9090 transport: http description: MCP adapter for GitLab API — custom_attributes. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-all-custom-attributes-group description: Get all custom attributes on a group hints: readOnly: true destructive: false idempotent: true call: gitlab-ci-custom-attributes.getapiv4groupsidcustomattributes with: id: tools.id outputParameters: - type: object mapping: $. - name: get-custom-attribute-group description: Get a custom attribute on a group hints: readOnly: true destructive: false idempotent: true call: gitlab-ci-custom-attributes.getapiv4groupsidcustomattributeskey with: key: tools.key id: tools.id outputParameters: - type: object mapping: $. - name: set-custom-attribute-group description: Set a custom attribute on a group hints: readOnly: false destructive: false idempotent: true call: gitlab-ci-custom-attributes.putapiv4groupsidcustomattributeskey with: key: tools.key id: tools.id putApiV4GroupsIdCustomAttributesKey: tools.putApiV4GroupsIdCustomAttributesKey outputParameters: - type: object mapping: $. - name: delete-custom-attribute-group description: Delete a custom attribute on a group hints: readOnly: false destructive: true idempotent: true call: gitlab-ci-custom-attributes.deleteapiv4groupsidcustomattributeskey with: key: tools.key id: tools.id outputParameters: - type: object mapping: $. - name: get-all-custom-attributes-project description: Get all custom attributes on a project hints: readOnly: true destructive: false idempotent: true call: gitlab-ci-custom-attributes.getapiv4projectsidcustomattributes with: id: tools.id outputParameters: - type: object mapping: $. - name: get-custom-attribute-project description: Get a custom attribute on a project hints: readOnly: true destructive: false idempotent: true call: gitlab-ci-custom-attributes.getapiv4projectsidcustomattributeskey with: key: tools.key id: tools.id outputParameters: - type: object mapping: $. - name: set-custom-attribute-project description: Set a custom attribute on a project hints: readOnly: false destructive: false idempotent: true call: gitlab-ci-custom-attributes.putapiv4projectsidcustomattributeskey with: key: tools.key id: tools.id putApiV4ProjectsIdCustomAttributesKey: tools.putApiV4ProjectsIdCustomAttributesKey outputParameters: - type: object mapping: $. - name: delete-custom-attribute-project description: Delete a custom attribute on a project hints: readOnly: false destructive: true idempotent: true call: gitlab-ci-custom-attributes.deleteapiv4projectsidcustomattributeskey with: key: tools.key id: tools.id outputParameters: - type: object mapping: $.