naftiko: 1.0.0-alpha2 info: label: Flutterwave Payments API — Charges description: 'Flutterwave Payments API — Charges. 6 operations covering charge lifecycle plus Orchestrator helpers. Lead operation: Flutterwave Create A Charge.' tags: [Flutterwave, Payments, Charges] created: '2026-05-24' modified: '2026-05-24' binds: - namespace: env keys: FLUTTERWAVE_ACCESS_TOKEN: FLUTTERWAVE_ACCESS_TOKEN capability: consumes: - type: http namespace: payments-charges baseUri: https://api.flutterwave.cloud/f4b/production description: Flutterwave Charges business capability. resources: - name: charges path: /charges operations: - { name: listcharges, method: GET, description: Flutterwave List Charges, outputRawFormat: json, outputParameters: [{ name: result, type: object, value: $. }] } - name: createcharge method: POST description: Flutterwave Create A Charge outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: [{ name: body, in: body, type: object, required: true }] - name: charges-id path: /charges/{id} operations: - { name: getcharge, method: GET, description: Flutterwave Retrieve A Charge, outputRawFormat: json, outputParameters: [{ name: result, type: object, value: $. }] } - name: updatecharge method: PUT description: Flutterwave Update A Charge outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: [{ name: body, in: body, type: object, required: true }] - name: orchestration-direct-charges path: /orchestration/direct-charges operations: - name: orchestratorcharge method: POST description: Flutterwave Initiate An Orchestrator Charge outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: [{ name: body, in: body, type: object, required: true }] - name: orchestration-direct-orders path: /orchestration/direct-orders operations: - name: orchestratororder method: POST description: Flutterwave Initiate An Order With Orchestrator outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: [{ name: body, in: body, type: object, required: true }] authentication: type: bearer value: '{{env.FLUTTERWAVE_ACCESS_TOKEN}}' placement: header exposes: - type: rest namespace: payments-charges-rest port: 8080 description: REST adapter for Flutterwave Charges. resources: - path: /v4/charges name: charges operations: - { method: GET, name: listcharges, description: Flutterwave List Charges, call: payments-charges.listcharges, outputParameters: [{ type: object, mapping: $. }] } - method: POST name: createcharge description: Flutterwave Create A Charge call: payments-charges.createcharge with: { body: rest.body } outputParameters: [{ type: object, mapping: $. }] - path: /v4/charges/{id} name: charges-id operations: - { method: GET, name: getcharge, description: Flutterwave Retrieve A Charge, call: payments-charges.getcharge, outputParameters: [{ type: object, mapping: $. }] } - method: PUT name: updatecharge description: Flutterwave Update A Charge call: payments-charges.updatecharge with: { body: rest.body } outputParameters: [{ type: object, mapping: $. }] - path: /v4/orchestration/direct-charges name: orchestration-direct-charges operations: - method: POST name: orchestratorcharge description: Flutterwave Initiate An Orchestrator Charge call: payments-charges.orchestratorcharge with: { body: rest.body } outputParameters: [{ type: object, mapping: $. }] - path: /v4/orchestration/direct-orders name: orchestration-direct-orders operations: - method: POST name: orchestratororder description: Flutterwave Initiate An Order With Orchestrator call: payments-charges.orchestratororder with: { body: rest.body } outputParameters: [{ type: object, mapping: $. }] - type: mcp namespace: payments-charges-mcp port: 9090 transport: http description: MCP adapter for Flutterwave Charges. tools: - { name: flutterwave-list-charges, description: Flutterwave List Charges, hints: { readOnly: true, destructive: false, idempotent: true }, call: payments-charges.listcharges, outputParameters: [{ type: object, mapping: $. }] } - name: flutterwave-create-charge description: Flutterwave Create A Charge hints: { readOnly: false, destructive: false, idempotent: false } call: payments-charges.createcharge with: { body: tools.body } outputParameters: [{ type: object, mapping: $. }] - { name: flutterwave-get-charge, description: Flutterwave Retrieve A Charge, hints: { readOnly: true, destructive: false, idempotent: true }, call: payments-charges.getcharge, outputParameters: [{ type: object, mapping: $. }] } - name: flutterwave-update-charge description: Flutterwave Update A Charge hints: { readOnly: false, destructive: false, idempotent: true } call: payments-charges.updatecharge with: { body: tools.body } outputParameters: [{ type: object, mapping: $. }] - name: flutterwave-orchestrator-charge description: Flutterwave Initiate An Orchestrator Charge hints: { readOnly: false, destructive: false, idempotent: false } call: payments-charges.orchestratorcharge with: { body: tools.body } outputParameters: [{ type: object, mapping: $. }] - name: flutterwave-orchestrator-order description: Flutterwave Initiate An Order With Orchestrator hints: { readOnly: false, destructive: false, idempotent: false } call: payments-charges.orchestratororder with: { body: tools.body } outputParameters: [{ type: object, mapping: $. }]