naftiko: 1.0.0-alpha2 info: label: Courier — Notification Templates description: 'Courier — Notification Templates. 14 operations. Lead operation: List Notification Templates. Self-contained Naftiko capability covering one Courier business surface.' tags: - Courier - Notification Templates created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: COURIER_API_KEY: COURIER_API_KEY capability: consumes: - type: http namespace: courier-notification-templates baseUri: https://api.courier.com description: Courier — Notification Templates business capability. Self-contained, no shared references. resources: - name: notifications path: /notifications operations: - name: notificationslist method: GET description: List Notification Templates outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: cursor in: query type: string description: Opaque pagination cursor from a previous response. Omit for the first page. - name: notes in: query type: boolean description: Include template notes in the response. Only applies to legacy templates. - name: event_id in: query type: string description: Filter to templates linked to this event map ID. - name: notificationscreate method: POST description: Create Notification Template outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: notifications-id path: /notifications/{id} operations: - name: notificationsretrieve method: GET description: Get Notification Template outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Template ID (nt_ prefix). required: true - name: version in: query type: string description: Version to retrieve. One of "draft", "published", or a version string like "v001". Defaults to "published". - name: notificationsreplace method: PUT description: Replace Notification Template outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Template ID (nt_ prefix). required: true - name: body in: body type: object description: Request body (JSON). required: true - name: notificationsarchive method: DELETE description: Archive Notification Template outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Template ID (nt_ prefix). required: true - name: notifications-id-content path: /notifications/{id}/content operations: - name: notificationsgetcontent method: GET description: Get Notification Content outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Notification template ID (`nt_` prefix). required: true - name: version in: query type: string description: Accepts `draft`, `published`, or a version string (e.g., `v001`). Defaults to `published`. - name: notificationsputcontent method: PUT description: Put Notification Content outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Notification template ID (`nt_` prefix). required: true - name: body in: body type: object description: Request body (JSON). required: true - name: notifications-id-elements-elementId path: /notifications/{id}/elements/{elementId} operations: - name: notificationsputelement method: PUT description: Put Notification Element outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Notification template ID (`nt_` prefix). required: true - name: elementId in: path type: string description: Element ID within the template. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: notifications-id-locales-localeId path: /notifications/{id}/locales/{localeId} operations: - name: notificationsputlocale method: PUT description: Put Notification Locale outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Notification template ID (`nt_` prefix). required: true - name: localeId in: path type: string description: Locale code (e.g., `es`, `fr`, `pt-BR`). required: true - name: body in: body type: object description: Request body (JSON). required: true - name: notifications-id-publish path: /notifications/{id}/publish operations: - name: notificationspublish method: POST description: Publish Notification Template outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Template ID (nt_ prefix). required: true - name: body in: body type: object description: Request body (JSON). required: false - name: notifications-id-versions path: /notifications/{id}/versions operations: - name: notificationslistversions method: GET description: List Notification Template Versions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Template ID (nt_ prefix). required: true - name: cursor in: query type: string description: Opaque pagination cursor from a previous response. Omit for the first page. - name: limit in: query type: integer description: Maximum number of versions to return per page. Default 10, max 10. - name: notifications-id-submissionId-checks path: /notifications/{id}/{submissionId}/checks operations: - name: notificationsgetsubmissionchecks method: GET description: Get Submission Checks outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Notification template ID. required: true - name: submissionId in: path type: string description: Submission ID. required: true - name: notificationsreplacesubmissionchecks method: PUT description: Replace Submission Checks outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Notification template ID. required: true - name: submissionId in: path type: string description: Submission ID. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: notificationscancelsubmission method: DELETE description: Cancel Submission outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Notification template ID. required: true - name: submissionId in: path type: string description: Submission ID. required: true authentication: type: bearer token: '{{env.COURIER_API_KEY}}' exposes: - type: rest namespace: courier-notification-templates-rest port: 8080 description: REST adapter for Courier — Notification Templates. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/notifications name: notifications description: REST surface for notifications. operations: - method: GET name: notificationslist description: List Notification Templates call: courier-notification-templates.notificationslist with: cursor: rest.cursor notes: rest.notes event_id: rest.event_id outputParameters: - type: object mapping: $. - method: POST name: notificationscreate description: Create Notification Template call: courier-notification-templates.notificationscreate with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/notifications/{id} name: notifications-id description: REST surface for notifications-id. operations: - method: GET name: notificationsretrieve description: Get Notification Template call: courier-notification-templates.notificationsretrieve with: id: rest.id version: rest.version outputParameters: - type: object mapping: $. - method: PUT name: notificationsreplace description: Replace Notification Template call: courier-notification-templates.notificationsreplace with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: notificationsarchive description: Archive Notification Template call: courier-notification-templates.notificationsarchive with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/notifications/{id}/content name: notifications-id-content description: REST surface for notifications-id-content. operations: - method: GET name: notificationsgetcontent description: Get Notification Content call: courier-notification-templates.notificationsgetcontent with: id: rest.id version: rest.version outputParameters: - type: object mapping: $. - method: PUT name: notificationsputcontent description: Put Notification Content call: courier-notification-templates.notificationsputcontent with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/notifications/{id}/elements/{elementid} name: notifications-id-elements-elementid description: REST surface for notifications-id-elements-elementId. operations: - method: PUT name: notificationsputelement description: Put Notification Element call: courier-notification-templates.notificationsputelement with: id: rest.id elementId: rest.elementId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/notifications/{id}/locales/{localeid} name: notifications-id-locales-localeid description: REST surface for notifications-id-locales-localeId. operations: - method: PUT name: notificationsputlocale description: Put Notification Locale call: courier-notification-templates.notificationsputlocale with: id: rest.id localeId: rest.localeId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/notifications/{id}/publish name: notifications-id-publish description: REST surface for notifications-id-publish. operations: - method: POST name: notificationspublish description: Publish Notification Template call: courier-notification-templates.notificationspublish with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/notifications/{id}/versions name: notifications-id-versions description: REST surface for notifications-id-versions. operations: - method: GET name: notificationslistversions description: List Notification Template Versions call: courier-notification-templates.notificationslistversions with: id: rest.id cursor: rest.cursor limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/notifications/{id}/{submissionid}/checks name: notifications-id-submissionid-checks description: REST surface for notifications-id-submissionId-checks. operations: - method: GET name: notificationsgetsubmissionchecks description: Get Submission Checks call: courier-notification-templates.notificationsgetsubmissionchecks with: id: rest.id submissionId: rest.submissionId outputParameters: - type: object mapping: $. - method: PUT name: notificationsreplacesubmissionchecks description: Replace Submission Checks call: courier-notification-templates.notificationsreplacesubmissionchecks with: id: rest.id submissionId: rest.submissionId body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: notificationscancelsubmission description: Cancel Submission call: courier-notification-templates.notificationscancelsubmission with: id: rest.id submissionId: rest.submissionId outputParameters: - type: object mapping: $. - type: mcp namespace: courier-notification-templates-mcp port: 9090 transport: http description: MCP adapter for Courier — Notification Templates. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-notification-templates description: List Notification Templates hints: readOnly: true destructive: false idempotent: true call: courier-notification-templates.notificationslist with: cursor: tools.cursor notes: tools.notes event_id: tools.event_id outputParameters: - type: object mapping: $. - name: create-notification-template description: Create Notification Template hints: readOnly: false destructive: false idempotent: false call: courier-notification-templates.notificationscreate with: body: tools.body outputParameters: - type: object mapping: $. - name: get-notification-template description: Get Notification Template hints: readOnly: true destructive: false idempotent: true call: courier-notification-templates.notificationsretrieve with: id: tools.id version: tools.version outputParameters: - type: object mapping: $. - name: replace-notification-template description: Replace Notification Template hints: readOnly: false destructive: false idempotent: true call: courier-notification-templates.notificationsreplace with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: archive-notification-template description: Archive Notification Template hints: readOnly: false destructive: true idempotent: true call: courier-notification-templates.notificationsarchive with: id: tools.id outputParameters: - type: object mapping: $. - name: get-notification-content description: Get Notification Content hints: readOnly: true destructive: false idempotent: true call: courier-notification-templates.notificationsgetcontent with: id: tools.id version: tools.version outputParameters: - type: object mapping: $. - name: put-notification-content description: Put Notification Content hints: readOnly: false destructive: false idempotent: true call: courier-notification-templates.notificationsputcontent with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: put-notification-element description: Put Notification Element hints: readOnly: false destructive: false idempotent: true call: courier-notification-templates.notificationsputelement with: id: tools.id elementId: tools.elementId body: tools.body outputParameters: - type: object mapping: $. - name: put-notification-locale description: Put Notification Locale hints: readOnly: false destructive: false idempotent: true call: courier-notification-templates.notificationsputlocale with: id: tools.id localeId: tools.localeId body: tools.body outputParameters: - type: object mapping: $. - name: publish-notification-template description: Publish Notification Template hints: readOnly: false destructive: false idempotent: false call: courier-notification-templates.notificationspublish with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: list-notification-template-versions description: List Notification Template Versions hints: readOnly: true destructive: false idempotent: true call: courier-notification-templates.notificationslistversions with: id: tools.id cursor: tools.cursor limit: tools.limit outputParameters: - type: object mapping: $. - name: get-submission-checks description: Get Submission Checks hints: readOnly: true destructive: false idempotent: true call: courier-notification-templates.notificationsgetsubmissionchecks with: id: tools.id submissionId: tools.submissionId outputParameters: - type: object mapping: $. - name: replace-submission-checks description: Replace Submission Checks hints: readOnly: false destructive: false idempotent: true call: courier-notification-templates.notificationsreplacesubmissionchecks with: id: tools.id submissionId: tools.submissionId body: tools.body outputParameters: - type: object mapping: $. - name: cancel-submission description: Cancel Submission hints: readOnly: false destructive: true idempotent: true call: courier-notification-templates.notificationscancelsubmission with: id: tools.id submissionId: tools.submissionId outputParameters: - type: object mapping: $.