naftiko: 1.0.0-alpha2 info: label: "Convoy API \u2014 Subscriptions" description: "Convoy webhooks gateway \u2014 Subscriptions. 8 operations. Lead operation: Validate source function. Self-contained\ \ Naftiko capability covering one Convoy business surface." tags: - Convoy - Webhooks - Subscriptions created: '2026-05-22' modified: '2026-05-22' binds: - namespace: env keys: CONVOY_API_KEY: CONVOY_API_KEY capability: consumes: - type: http namespace: convoy-subscriptions baseUri: https://us.getconvoy.cloud/api description: "Convoy API \u2014 Subscriptions business capability. Self-contained, no shared references." authentication: type: bearer token: '{{env.CONVOY_API_KEY}}' resources: - name: v1-projects-project-id-sources-test-function path: /v1/projects/{projectID}/sources/test_function operations: - name: postv1-projects-project-id-sources-test-function method: POST description: Validate source function inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: body in: body type: object required: true description: Request body payload. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-projects-project-id-subscriptions path: /v1/projects/{projectID}/subscriptions operations: - name: GetSubscriptions method: GET description: List all subscriptions inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: direction in: query type: string required: false description: query parameter direction - name: endpointId in: query type: array required: false description: A list of endpointIDs to filter by - name: name in: query type: string required: false description: Subscription name to filter by - name: next_page_cursor in: query type: string required: false description: A pagination cursor to fetch the next page of a list - name: perPage in: query type: integer required: false description: The number of items to return per page - name: prev_page_cursor in: query type: string required: false description: A pagination cursor to fetch the previous page of a list - name: sort in: query type: string required: false description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` outputRawFormat: json outputParameters: - name: result type: object value: $. - name: CreateSubscription method: POST description: Create a subscription inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: body in: body type: object required: true description: Request body payload. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-projects-project-id-subscriptions-test-filter path: /v1/projects/{projectID}/subscriptions/test_filter operations: - name: TestSubscriptionFilter method: POST description: Validate subscription filter inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: body in: body type: object required: true description: Request body payload. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-projects-project-id-subscriptions-test-function path: /v1/projects/{projectID}/subscriptions/test_function operations: - name: TestSubscriptionFunction method: POST description: Test a subscription function inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: body in: body type: object required: true description: Request body payload. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-projects-project-id-subscriptions-subscription-id path: /v1/projects/{projectID}/subscriptions/{subscriptionID} operations: - name: DeleteSubscription method: DELETE description: Delete subscription inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: subscriptionID in: path type: string required: true description: subscription id outputRawFormat: json outputParameters: - name: result type: object value: $. - name: GetSubscription method: GET description: Retrieve a subscription inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: subscriptionID in: path type: string required: true description: subscription id outputRawFormat: json outputParameters: - name: result type: object value: $. - name: UpdateSubscription method: PUT description: Update a subscription inputParameters: - name: projectID in: path type: string required: true description: Project ID - name: subscriptionID in: path type: string required: true description: subscription id - name: body in: body type: object required: true description: Request body payload. outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: convoy-subscriptions-rest port: 8080 description: "REST adapter for Convoy API \u2014 Subscriptions. One Spectral-compliant resource per consumed operation,\ \ prefixed with /v1." resources: - path: /v1/projects/{project-id}/sources/test_function name: v1-projects-project-id-sources-test-function description: REST surface for /v1/projects/{project-id}/sources/test_function. operations: - method: POST name: postv1-projects-project-id-sources-test-function description: Validate source function call: convoy-subscriptions.postv1-projects-project-id-sources-test-function with: projectID: rest.projectID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/subscriptions name: v1-projects-project-id-subscriptions description: REST surface for /v1/projects/{project-id}/subscriptions. operations: - method: GET name: GetSubscriptions description: List all subscriptions call: convoy-subscriptions.GetSubscriptions with: projectID: rest.projectID direction: rest.direction endpointId: rest.endpointId name: rest.name next_page_cursor: rest.next_page_cursor perPage: rest.perPage prev_page_cursor: rest.prev_page_cursor sort: rest.sort outputParameters: - type: object mapping: $. - method: POST name: CreateSubscription description: Create a subscription call: convoy-subscriptions.CreateSubscription with: projectID: rest.projectID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/subscriptions/test_filter name: v1-projects-project-id-subscriptions-test-filter description: REST surface for /v1/projects/{project-id}/subscriptions/test_filter. operations: - method: POST name: TestSubscriptionFilter description: Validate subscription filter call: convoy-subscriptions.TestSubscriptionFilter with: projectID: rest.projectID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/subscriptions/test_function name: v1-projects-project-id-subscriptions-test-function description: REST surface for /v1/projects/{project-id}/subscriptions/test_function. operations: - method: POST name: TestSubscriptionFunction description: Test a subscription function call: convoy-subscriptions.TestSubscriptionFunction with: projectID: rest.projectID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/subscriptions/{subscription-id} name: v1-projects-project-id-subscriptions-subscription-id description: REST surface for /v1/projects/{project-id}/subscriptions/{subscription-id}. operations: - method: DELETE name: DeleteSubscription description: Delete subscription call: convoy-subscriptions.DeleteSubscription with: projectID: rest.projectID subscriptionID: rest.subscriptionID outputParameters: - type: object mapping: $. - method: GET name: GetSubscription description: Retrieve a subscription call: convoy-subscriptions.GetSubscription with: projectID: rest.projectID subscriptionID: rest.subscriptionID outputParameters: - type: object mapping: $. - method: PUT name: UpdateSubscription description: Update a subscription call: convoy-subscriptions.UpdateSubscription with: projectID: rest.projectID subscriptionID: rest.subscriptionID body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: convoy-subscriptions-mcp port: 9090 transport: http description: "MCP adapter for Convoy API \u2014 Subscriptions. One tool per consumed operation, routed inline through\ \ this capability's consumes block." tools: - name: validate-source-function description: Validate source function hints: readOnly: true destructive: false idempotent: false call: convoy-subscriptions.postv1-projects-project-id-sources-test-function with: projectID: tools.projectID body: tools.body outputParameters: - type: object mapping: $. - name: list-subscriptions description: List all subscriptions hints: readOnly: true destructive: false idempotent: true call: convoy-subscriptions.GetSubscriptions with: projectID: tools.projectID direction: tools.direction endpointId: tools.endpointId name: tools.name next_page_cursor: tools.next_page_cursor perPage: tools.perPage prev_page_cursor: tools.prev_page_cursor sort: tools.sort outputParameters: - type: object mapping: $. - name: create-subscription description: Create a subscription hints: readOnly: false destructive: false idempotent: false call: convoy-subscriptions.CreateSubscription with: projectID: tools.projectID body: tools.body outputParameters: - type: object mapping: $. - name: validate-subscription-filter description: Validate subscription filter hints: readOnly: true destructive: false idempotent: false call: convoy-subscriptions.TestSubscriptionFilter with: projectID: tools.projectID body: tools.body outputParameters: - type: object mapping: $. - name: test-subscription-function description: Test a subscription function hints: readOnly: true destructive: false idempotent: false call: convoy-subscriptions.TestSubscriptionFunction with: projectID: tools.projectID body: tools.body outputParameters: - type: object mapping: $. - name: delete-subscription description: Delete subscription hints: readOnly: false destructive: true idempotent: true call: convoy-subscriptions.DeleteSubscription with: projectID: tools.projectID subscriptionID: tools.subscriptionID outputParameters: - type: object mapping: $. - name: retrieve-subscription description: Retrieve a subscription hints: readOnly: true destructive: false idempotent: true call: convoy-subscriptions.GetSubscription with: projectID: tools.projectID subscriptionID: tools.subscriptionID outputParameters: - type: object mapping: $. - name: update-subscription description: Update a subscription hints: readOnly: false destructive: false idempotent: true call: convoy-subscriptions.UpdateSubscription with: projectID: tools.projectID subscriptionID: tools.subscriptionID body: tools.body outputParameters: - type: object mapping: $.