naftiko: 1.0.0-alpha2 info: label: "Paystack Subscriptions API \u2014 Plan" description: 'Paystack Subscriptions API. 11 operations. Lead operation: Paystack Create Plan. Self-contained Naftiko capability covering one Paystack business surface.' tags: - Paystack - Plan - Subscription created: '2026-05-24' modified: '2026-05-24' binds: - namespace: env keys: PAYSTACK_SECRET_KEY: PAYSTACK_SECRET_KEY capability: consumes: - type: http namespace: subscriptions-plan baseUri: https://api.paystack.co description: Paystack Subscriptions API business capability. Self-contained, no shared references. resources: - name: plan path: /plan operations: - name: plancreate method: POST description: Paystack Create Plan outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body. required: true - name: planlist method: GET description: Paystack List Plans outputRawFormat: json outputParameters: - name: result type: object value: $. - name: plan path: /plan/{code} operations: - name: planfetch method: GET description: Paystack Fetch Plan outputRawFormat: json outputParameters: - name: result type: object value: $. - name: planupdate method: PUT description: Paystack Update Plan outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body. required: true - name: subscription path: /subscription operations: - name: subscriptioncreate method: POST description: Paystack Create Subscription outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body. required: true - name: subscriptionlist method: GET description: Paystack List Subscriptions outputRawFormat: json outputParameters: - name: result type: object value: $. - name: subscription path: /subscription/{code} operations: - name: subscriptionfetch method: GET description: Paystack Fetch Subscription outputRawFormat: json outputParameters: - name: result type: object value: $. - name: subscription-disable path: /subscription/disable operations: - name: subscriptiondisable method: POST description: Paystack Disable Subscription outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body. required: true - name: subscription-enable path: /subscription/enable operations: - name: subscriptionenable method: POST description: Paystack Enable Subscription outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body. required: true - name: subscription-manage-link path: /subscription/{code}/manage/link operations: - name: subscriptionmanagelink method: POST description: Paystack Generate Update Subscription Link outputRawFormat: json outputParameters: - name: result type: object value: $. - name: subscription-manage-email path: /subscription/{code}/manage/email operations: - name: subscriptionmanageemail method: POST description: Paystack Send Update Subscription Link outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: bearer value: '{{env.PAYSTACK_SECRET_KEY}}' placement: header exposes: - type: rest namespace: subscriptions-plan-rest port: 8080 description: REST adapter for Paystack Subscriptions API. One resource per consumed operation, prefixed with /v1. resources: - path: /v1/plan name: plan description: REST surface for plan. operations: - method: POST name: plancreate description: Paystack Create Plan call: subscriptions-plan.plancreate outputParameters: - type: object mapping: $. with: body: rest.body - method: GET name: planlist description: Paystack List Plans call: subscriptions-plan.planlist outputParameters: - type: object mapping: $. - path: /v1/plan/{code} name: plan description: REST surface for plan. operations: - method: GET name: planfetch description: Paystack Fetch Plan call: subscriptions-plan.planfetch outputParameters: - type: object mapping: $. - method: PUT name: planupdate description: Paystack Update Plan call: subscriptions-plan.planupdate outputParameters: - type: object mapping: $. with: body: rest.body - path: /v1/subscription name: subscription description: REST surface for subscription. operations: - method: POST name: subscriptioncreate description: Paystack Create Subscription call: subscriptions-plan.subscriptioncreate outputParameters: - type: object mapping: $. with: body: rest.body - method: GET name: subscriptionlist description: Paystack List Subscriptions call: subscriptions-plan.subscriptionlist outputParameters: - type: object mapping: $. - path: /v1/subscription/{code} name: subscription description: REST surface for subscription. operations: - method: GET name: subscriptionfetch description: Paystack Fetch Subscription call: subscriptions-plan.subscriptionfetch outputParameters: - type: object mapping: $. - path: /v1/subscription/disable name: subscription-disable description: REST surface for subscription-disable. operations: - method: POST name: subscriptiondisable description: Paystack Disable Subscription call: subscriptions-plan.subscriptiondisable outputParameters: - type: object mapping: $. with: body: rest.body - path: /v1/subscription/enable name: subscription-enable description: REST surface for subscription-enable. operations: - method: POST name: subscriptionenable description: Paystack Enable Subscription call: subscriptions-plan.subscriptionenable outputParameters: - type: object mapping: $. with: body: rest.body - path: /v1/subscription/{code}/manage/link name: subscription-manage-link description: REST surface for subscription-manage-link. operations: - method: POST name: subscriptionmanagelink description: Paystack Generate Update Subscription Link call: subscriptions-plan.subscriptionmanagelink outputParameters: - type: object mapping: $. - path: /v1/subscription/{code}/manage/email name: subscription-manage-email description: REST surface for subscription-manage-email. operations: - method: POST name: subscriptionmanageemail description: Paystack Send Update Subscription Link call: subscriptions-plan.subscriptionmanageemail outputParameters: - type: object mapping: $. - type: mcp namespace: subscriptions-plan-mcp port: 9090 transport: http description: MCP adapter for Paystack Subscriptions API. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: paystack-create-plan description: Paystack Create Plan hints: readOnly: false destructive: false idempotent: false call: subscriptions-plan.plancreate outputParameters: - type: object mapping: $. with: body: tools.body - name: paystack-list-plans description: Paystack List Plans hints: readOnly: true destructive: false idempotent: true call: subscriptions-plan.planlist outputParameters: - type: object mapping: $. - name: paystack-fetch-plan description: Paystack Fetch Plan hints: readOnly: true destructive: false idempotent: true call: subscriptions-plan.planfetch outputParameters: - type: object mapping: $. - name: paystack-update-plan description: Paystack Update Plan hints: readOnly: false destructive: false idempotent: true call: subscriptions-plan.planupdate outputParameters: - type: object mapping: $. with: body: tools.body - name: paystack-create-subscription description: Paystack Create Subscription hints: readOnly: false destructive: false idempotent: false call: subscriptions-plan.subscriptioncreate outputParameters: - type: object mapping: $. with: body: tools.body - name: paystack-list-subscriptions description: Paystack List Subscriptions hints: readOnly: true destructive: false idempotent: true call: subscriptions-plan.subscriptionlist outputParameters: - type: object mapping: $. - name: paystack-fetch-subscription description: Paystack Fetch Subscription hints: readOnly: true destructive: false idempotent: true call: subscriptions-plan.subscriptionfetch outputParameters: - type: object mapping: $. - name: paystack-disable-subscription description: Paystack Disable Subscription hints: readOnly: false destructive: false idempotent: false call: subscriptions-plan.subscriptiondisable outputParameters: - type: object mapping: $. with: body: tools.body - name: paystack-enable-subscription description: Paystack Enable Subscription hints: readOnly: false destructive: false idempotent: false call: subscriptions-plan.subscriptionenable outputParameters: - type: object mapping: $. with: body: tools.body - name: paystack-generate-update-subscription-link description: Paystack Generate Update Subscription Link hints: readOnly: false destructive: false idempotent: false call: subscriptions-plan.subscriptionmanagelink outputParameters: - type: object mapping: $. - name: paystack-send-update-subscription-link description: Paystack Send Update Subscription Link hints: readOnly: false destructive: false idempotent: false call: subscriptions-plan.subscriptionmanageemail outputParameters: - type: object mapping: $.