naftiko: 1.0.0-alpha2 info: label: Courier — Bulk description: 'Courier — Bulk. 5 operations. Lead operation: Create a bulk job. Self-contained Naftiko capability covering one Courier business surface.' tags: - Courier - Bulk created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: COURIER_API_KEY: COURIER_API_KEY capability: consumes: - type: http namespace: courier-bulk baseUri: https://api.courier.com description: Courier — Bulk business capability. Self-contained, no shared references. resources: - name: bulk path: /bulk operations: - name: bulkcreatejob method: POST description: Create a bulk job outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: bulk-job_id path: /bulk/{job_id} operations: - name: bulkingestusers method: POST description: Add users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: job_id in: path type: string description: A unique identifier representing the bulk job required: true - name: body in: body type: object description: Request body (JSON). required: true - name: bulkgetjob method: GET description: Get a Job outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: job_id in: path type: string description: A unique identifier representing the bulk job required: true - name: bulk-job_id-run path: /bulk/{job_id}/run operations: - name: bulkrunjob method: POST description: Run a job outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: job_id in: path type: string description: A unique identifier representing the bulk job required: true - name: bulk-job_id-users path: /bulk/{job_id}/users operations: - name: bulkgetusers method: GET description: Get users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: job_id in: path type: string description: A unique identifier representing the bulk job required: true - name: cursor in: query type: string description: A unique identifier that allows for fetching the next set of users added to the bulk job authentication: type: bearer token: '{{env.COURIER_API_KEY}}' exposes: - type: rest namespace: courier-bulk-rest port: 8080 description: REST adapter for Courier — Bulk. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/bulk name: bulk description: REST surface for bulk. operations: - method: POST name: bulkcreatejob description: Create a bulk job call: courier-bulk.bulkcreatejob with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/bulk/{job-id} name: bulk-job-id description: REST surface for bulk-job_id. operations: - method: POST name: bulkingestusers description: Add users call: courier-bulk.bulkingestusers with: job_id: rest.job_id body: rest.body outputParameters: - type: object mapping: $. - method: GET name: bulkgetjob description: Get a Job call: courier-bulk.bulkgetjob with: job_id: rest.job_id outputParameters: - type: object mapping: $. - path: /v1/bulk/{job-id}/run name: bulk-job-id-run description: REST surface for bulk-job_id-run. operations: - method: POST name: bulkrunjob description: Run a job call: courier-bulk.bulkrunjob with: job_id: rest.job_id outputParameters: - type: object mapping: $. - path: /v1/bulk/{job-id}/users name: bulk-job-id-users description: REST surface for bulk-job_id-users. operations: - method: GET name: bulkgetusers description: Get users call: courier-bulk.bulkgetusers with: job_id: rest.job_id cursor: rest.cursor outputParameters: - type: object mapping: $. - type: mcp namespace: courier-bulk-mcp port: 9090 transport: http description: MCP adapter for Courier — Bulk. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: create-bulk-job description: Create a bulk job hints: readOnly: false destructive: false idempotent: false call: courier-bulk.bulkcreatejob with: body: tools.body outputParameters: - type: object mapping: $. - name: add-users description: Add users hints: readOnly: false destructive: false idempotent: false call: courier-bulk.bulkingestusers with: job_id: tools.job_id body: tools.body outputParameters: - type: object mapping: $. - name: get-job description: Get a Job hints: readOnly: true destructive: false idempotent: true call: courier-bulk.bulkgetjob with: job_id: tools.job_id outputParameters: - type: object mapping: $. - name: run-job description: Run a job hints: readOnly: false destructive: false idempotent: false call: courier-bulk.bulkrunjob with: job_id: tools.job_id outputParameters: - type: object mapping: $. - name: get-users description: Get users hints: readOnly: true destructive: false idempotent: true call: courier-bulk.bulkgetusers with: job_id: tools.job_id cursor: tools.cursor outputParameters: - type: object mapping: $.