naftiko: 1.0.0-alpha2 info: label: Fastly Observability — Notification Service description: Manage notification integrations (e.g. Slack, PagerDuty, webhooks) used by Fastly alerts. tags: [Fastly, Observability, Notifications] created: '2026-05-22' modified: '2026-05-22' binds: - namespace: env keys: { FASTLY_API_KEY: FASTLY_API_KEY } capability: consumes: - type: http namespace: observability-notification-service baseUri: https://api.fastly.com description: Notification integrations CRUD. resources: - name: integrations path: /notifications/integrations operations: - { name: listintegrations, method: GET, description: List notification integrations, outputRawFormat: json, outputParameters: [ { name: result, type: object, value: $. } ] } - { name: createintegration, method: POST, description: Create notification integration, outputRawFormat: json, outputParameters: [ { name: result, type: object, value: $. } ] } - name: integration path: /notifications/integrations/{integration_id} operations: - { name: getintegration, method: GET, description: Get notification integration, outputRawFormat: json, outputParameters: [ { name: result, type: object, value: $. } ] } - { name: deleteintegration, method: DELETE, description: Delete notification integration, outputRawFormat: json, outputParameters: [ { name: result, type: object, value: $. } ] } authentication: { type: apikey, key: Fastly-Key, value: '{{env.FASTLY_API_KEY}}', placement: header } exposes: - type: rest namespace: observability-notification-service-rest port: 8080 description: REST adapter. resources: - path: /v1/notifications/integrations name: integrations description: Notification integrations collection. operations: - { method: GET, name: listintegrations, description: List notification integrations, call: observability-notification-service.listintegrations, outputParameters: [ { type: object, mapping: $. } ] } - { method: POST, name: createintegration, description: Create notification integration, call: observability-notification-service.createintegration, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/notifications/integrations/{integration-id} name: integration description: Single integration. operations: - { method: GET, name: getintegration, description: Get notification integration, call: observability-notification-service.getintegration, outputParameters: [ { type: object, mapping: $. } ] } - { method: DELETE, name: deleteintegration, description: Delete notification integration, call: observability-notification-service.deleteintegration, outputParameters: [ { type: object, mapping: $. } ] } - type: mcp namespace: observability-notification-service-mcp port: 9090 transport: http description: MCP adapter. tools: - { name: list-notification-integrations, description: List Fastly notification integrations, hints: { readOnly: true, destructive: false, idempotent: true }, call: observability-notification-service.listintegrations, outputParameters: [ { type: object, mapping: $. } ] } - { name: create-notification-integration, description: Create a Fastly notification integration, hints: { readOnly: false, destructive: false, idempotent: false }, call: observability-notification-service.createintegration, outputParameters: [ { type: object, mapping: $. } ] } - { name: get-notification-integration, description: Get a Fastly notification integration, hints: { readOnly: true, destructive: false, idempotent: true }, call: observability-notification-service.getintegration, outputParameters: [ { type: object, mapping: $. } ] } - { name: delete-notification-integration, description: Delete a Fastly notification integration, hints: { readOnly: false, destructive: true, idempotent: true }, call: observability-notification-service.deleteintegration, outputParameters: [ { type: object, mapping: $. } ] }