naftiko: 1.0.0-alpha2 info: label: OpenProject API V3 (Stable) — Notifications description: 'OpenProject API V3 (Stable) — Notifications. 7 operations. Lead operation: Get notification collection. Self-contained Naftiko capability covering one Openproject business surface.' tags: - Openproject - Notifications created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: OPENPROJECT_API_KEY: OPENPROJECT_API_KEY capability: consumes: - type: http namespace: openproject-notifications baseUri: https://qa.openproject-edge.com description: OpenProject API V3 (Stable) — Notifications business capability. Self-contained, no shared references. resources: - name: api-v3-notifications path: /api/v3/notifications operations: - name: listnotifications method: GET description: Get notification collection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: offset in: query type: integer description: Page number inside the requested collection. - name: pageSize in: query type: integer description: Number of elements to display per page. - name: sortBy in: query type: string description: JSON specifying sort criteria. - name: groupBy in: query type: string description: string specifying group_by criteria. - name: filters in: query type: string description: JSON specifying filter conditions. - name: api-v3-notifications-read_ian path: /api/v3/notifications/read_ian operations: - name: readnotifications method: POST description: Read all notifications outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: filters in: query type: string description: JSON specifying filter conditions. - name: api-v3-notifications-unread_ian path: /api/v3/notifications/unread_ian operations: - name: unreadnotifications method: POST description: Unread all notifications outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: filters in: query type: string description: JSON specifying filter conditions. - name: api-v3-notifications-id path: /api/v3/notifications/{id} operations: - name: viewnotification method: GET description: Get the notification outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: notification id required: true - name: api-v3-notifications-id-read_ian path: /api/v3/notifications/{id}/read_ian operations: - name: readnotification method: POST description: Read notification outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: notification id required: true - name: api-v3-notifications-id-unread_ian path: /api/v3/notifications/{id}/unread_ian operations: - name: unreadnotification method: POST description: Unread notification outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: notification id required: true - name: api-v3-notifications-notification_id-details-id path: /api/v3/notifications/{notification_id}/details/{id} operations: - name: viewnotificationdetail method: GET description: Get a notification detail outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: notification_id in: path type: integer description: notification id required: true - name: id in: path type: integer description: detail id required: true authentication: type: basic username: '{{env.OPENPROJECT_USER}}' password: '{{env.OPENPROJECT_PASS}}' exposes: - type: rest namespace: openproject-notifications-rest port: 8080 description: REST adapter for OpenProject API V3 (Stable) — Notifications. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/v3/notifications name: api-v3-notifications description: REST surface for api-v3-notifications. operations: - method: GET name: listnotifications description: Get notification collection call: openproject-notifications.listnotifications with: offset: rest.offset pageSize: rest.pageSize sortBy: rest.sortBy groupBy: rest.groupBy filters: rest.filters outputParameters: - type: object mapping: $. - path: /v1/api/v3/notifications/read-ian name: api-v3-notifications-read-ian description: REST surface for api-v3-notifications-read_ian. operations: - method: POST name: readnotifications description: Read all notifications call: openproject-notifications.readnotifications with: filters: rest.filters outputParameters: - type: object mapping: $. - path: /v1/api/v3/notifications/unread-ian name: api-v3-notifications-unread-ian description: REST surface for api-v3-notifications-unread_ian. operations: - method: POST name: unreadnotifications description: Unread all notifications call: openproject-notifications.unreadnotifications with: filters: rest.filters outputParameters: - type: object mapping: $. - path: /v1/api/v3/notifications/{id} name: api-v3-notifications-id description: REST surface for api-v3-notifications-id. operations: - method: GET name: viewnotification description: Get the notification call: openproject-notifications.viewnotification with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/api/v3/notifications/{id}/read-ian name: api-v3-notifications-id-read-ian description: REST surface for api-v3-notifications-id-read_ian. operations: - method: POST name: readnotification description: Read notification call: openproject-notifications.readnotification with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/api/v3/notifications/{id}/unread-ian name: api-v3-notifications-id-unread-ian description: REST surface for api-v3-notifications-id-unread_ian. operations: - method: POST name: unreadnotification description: Unread notification call: openproject-notifications.unreadnotification with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/api/v3/notifications/{notification-id}/details/{id} name: api-v3-notifications-notification-id-details-id description: REST surface for api-v3-notifications-notification_id-details-id. operations: - method: GET name: viewnotificationdetail description: Get a notification detail call: openproject-notifications.viewnotificationdetail with: notification_id: rest.notification_id id: rest.id outputParameters: - type: object mapping: $. - type: mcp namespace: openproject-notifications-mcp port: 9090 transport: http description: MCP adapter for OpenProject API V3 (Stable) — Notifications. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-notification-collection description: Get notification collection hints: readOnly: true destructive: false idempotent: true call: openproject-notifications.listnotifications with: offset: tools.offset pageSize: tools.pageSize sortBy: tools.sortBy groupBy: tools.groupBy filters: tools.filters outputParameters: - type: object mapping: $. - name: read-all-notifications description: Read all notifications hints: readOnly: false destructive: false idempotent: false call: openproject-notifications.readnotifications with: filters: tools.filters outputParameters: - type: object mapping: $. - name: unread-all-notifications description: Unread all notifications hints: readOnly: false destructive: false idempotent: false call: openproject-notifications.unreadnotifications with: filters: tools.filters outputParameters: - type: object mapping: $. - name: get-notification description: Get the notification hints: readOnly: true destructive: false idempotent: true call: openproject-notifications.viewnotification with: id: tools.id outputParameters: - type: object mapping: $. - name: read-notification description: Read notification hints: readOnly: false destructive: false idempotent: false call: openproject-notifications.readnotification with: id: tools.id outputParameters: - type: object mapping: $. - name: unread-notification description: Unread notification hints: readOnly: false destructive: false idempotent: false call: openproject-notifications.unreadnotification with: id: tools.id outputParameters: - type: object mapping: $. - name: get-notification-detail description: Get a notification detail hints: readOnly: true destructive: false idempotent: true call: openproject-notifications.viewnotificationdetail with: notification_id: tools.notification_id id: tools.id outputParameters: - type: object mapping: $.