naftiko: 1.0.0-alpha2 info: label: Suger API — Billing description: 'Suger API — Billing. 15 operations. Lead operation: List Addons. Self-contained Naftiko capability covering one Suger business surface.' tags: - Suger - Billing created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SUGER_API_KEY: SUGER_API_KEY capability: consumes: - type: http namespace: suger-billing baseUri: https://api.suger.cloud description: Suger API — Billing business capability. Self-contained, no shared references. resources: - name: org-orgId-addon path: /org/{orgId}/addon operations: - name: listaddons method: GET description: List Addons outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: limit in: query type: integer description: List pagination size, default 1000, max value is 1000 - name: offset in: query type: integer description: List pagination offset, default 0 - name: createaddon method: POST description: Create Addon outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: body in: body type: object description: Request body (JSON). required: true - name: org-orgId-addon-addonId path: /org/{orgId}/addon/{addonId} operations: - name: deleteaddon method: DELETE description: Delete Addon outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: addonId in: path type: string description: Addon ID required: true - name: getaddon method: GET description: Get Addon outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: addonId in: path type: string description: Addon ID required: true - name: updateaddon method: PATCH description: Update Addon outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: addonId in: path type: string description: Addon ID required: true - name: body in: body type: object description: Request body (JSON). required: true - name: org-orgId-buyer-buyerId-paymentTransaction-paymentTransactionId-refund path: /org/{orgId}/buyer/{buyerId}/paymentTransaction/{paymentTransactionId}/refund operations: - name: listrefundofpaymenttransaction method: GET description: List Refunds. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: buyerId in: path type: string description: Buyer ID required: true - name: paymentTransactionId in: path type: string description: Payment transaction ID required: true - name: createrefund method: POST description: Create Refund. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: buyerId in: path type: string description: Buyer ID required: true - name: paymentTransactionId in: path type: string description: Payment transaction ID required: true - name: amount in: query type: number description: Refund amount required: true - name: org-orgId-invoice path: /org/{orgId}/invoice operations: - name: listinvoices method: GET description: List Invoices outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: entitlementId in: query type: string description: Optional, filter by the entitlement ID - name: buyerId in: query type: string description: Optional, filter by the given buyer ID - name: status in: query type: string description: Optional, filter by invoice status as filter, if not provided, all status invoices are returned - name: limit in: query type: integer description: List pagination size, default 1000, max value is 1000 - name: offset in: query type: integer description: List pagination offset, default 0 - name: org-orgId-invoice-invoiceId path: /org/{orgId}/invoice/{invoiceId} operations: - name: getinvoice method: GET description: Get Invoice outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: invoiceId in: path type: string description: Invoice ID required: true - name: org-orgId-invoice-invoiceId-info path: /org/{orgId}/invoice/{invoiceId}/info operations: - name: updateinvoiceinfo method: PATCH description: Update Invoice Info outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: invoiceId in: path type: string description: Invoice ID required: true - name: body in: body type: object description: Request body (JSON). required: true - name: org-orgId-invoice-invoiceId-issue path: /org/{orgId}/invoice/{invoiceId}/issue operations: - name: issueinvoice method: PATCH description: Issue Invoice outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: invoiceId in: path type: string description: Invoice ID required: true - name: body in: body type: object description: Request body (JSON). required: false - name: org-orgId-invoice-invoiceId-pay path: /org/{orgId}/invoice/{invoiceId}/pay operations: - name: payinvoice method: PATCH description: Pay Invoice outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: invoiceId in: path type: string description: Invoice ID required: true - name: org-orgId-invoice-invoiceId-preview path: /org/{orgId}/invoice/{invoiceId}/preview operations: - name: previewinvoiceemail method: GET description: Preview Invoice Email outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: invoiceId in: path type: string description: Invoice ID required: true - name: org-orgId-invoice-invoiceId-void path: /org/{orgId}/invoice/{invoiceId}/void operations: - name: voidinvoice method: PATCH description: Void Invoice outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: invoiceId in: path type: string description: Invoice ID required: true - name: org-orgId-paymentTransaction path: /org/{orgId}/paymentTransaction operations: - name: listpaymenttransactions method: GET description: List Payment Transactions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: Organization ID required: true - name: buyerId in: query type: string description: Optional, filter by the given buyer ID - name: entitlementId in: query type: string description: Optional, filter by the given entitlement ID - name: invoiceId in: query type: string description: Optional, filter by the given invoice ID - name: status in: query type: string description: Optional, filter by status - name: type in: query type: string description: Optional, filter by transaction type - name: limit in: query type: integer description: List pagination size, default 1000, max value is 1000 - name: offset in: query type: integer description: List pagination offset, default 0 authentication: type: apikey key: Authorization value: '{{env.SUGER_API_KEY}}' placement: header exposes: - type: rest namespace: suger-billing-rest port: 8080 description: REST adapter for Suger API — Billing. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/org/{orgid}/addon name: org-orgid-addon description: REST surface for org-orgId-addon. operations: - method: GET name: listaddons description: List Addons call: suger-billing.listaddons with: orgId: rest.orgId limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: createaddon description: Create Addon call: suger-billing.createaddon with: orgId: rest.orgId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/addon/{addonid} name: org-orgid-addon-addonid description: REST surface for org-orgId-addon-addonId. operations: - method: DELETE name: deleteaddon description: Delete Addon call: suger-billing.deleteaddon with: orgId: rest.orgId addonId: rest.addonId outputParameters: - type: object mapping: $. - method: GET name: getaddon description: Get Addon call: suger-billing.getaddon with: orgId: rest.orgId addonId: rest.addonId outputParameters: - type: object mapping: $. - method: PATCH name: updateaddon description: Update Addon call: suger-billing.updateaddon with: orgId: rest.orgId addonId: rest.addonId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/buyer/{buyerid}/paymenttransaction/{paymenttransactionid}/refund name: org-orgid-buyer-buyerid-paymenttransaction-paymenttransactionid-refund description: REST surface for org-orgId-buyer-buyerId-paymentTransaction-paymentTransactionId-refund. operations: - method: GET name: listrefundofpaymenttransaction description: List Refunds. call: suger-billing.listrefundofpaymenttransaction with: orgId: rest.orgId buyerId: rest.buyerId paymentTransactionId: rest.paymentTransactionId outputParameters: - type: object mapping: $. - method: POST name: createrefund description: Create Refund. call: suger-billing.createrefund with: orgId: rest.orgId buyerId: rest.buyerId paymentTransactionId: rest.paymentTransactionId amount: rest.amount outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/invoice name: org-orgid-invoice description: REST surface for org-orgId-invoice. operations: - method: GET name: listinvoices description: List Invoices call: suger-billing.listinvoices with: orgId: rest.orgId entitlementId: rest.entitlementId buyerId: rest.buyerId status: rest.status limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/invoice/{invoiceid} name: org-orgid-invoice-invoiceid description: REST surface for org-orgId-invoice-invoiceId. operations: - method: GET name: getinvoice description: Get Invoice call: suger-billing.getinvoice with: orgId: rest.orgId invoiceId: rest.invoiceId outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/invoice/{invoiceid}/info name: org-orgid-invoice-invoiceid-info description: REST surface for org-orgId-invoice-invoiceId-info. operations: - method: PATCH name: updateinvoiceinfo description: Update Invoice Info call: suger-billing.updateinvoiceinfo with: orgId: rest.orgId invoiceId: rest.invoiceId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/invoice/{invoiceid}/issue name: org-orgid-invoice-invoiceid-issue description: REST surface for org-orgId-invoice-invoiceId-issue. operations: - method: PATCH name: issueinvoice description: Issue Invoice call: suger-billing.issueinvoice with: orgId: rest.orgId invoiceId: rest.invoiceId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/invoice/{invoiceid}/pay name: org-orgid-invoice-invoiceid-pay description: REST surface for org-orgId-invoice-invoiceId-pay. operations: - method: PATCH name: payinvoice description: Pay Invoice call: suger-billing.payinvoice with: orgId: rest.orgId invoiceId: rest.invoiceId outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/invoice/{invoiceid}/preview name: org-orgid-invoice-invoiceid-preview description: REST surface for org-orgId-invoice-invoiceId-preview. operations: - method: GET name: previewinvoiceemail description: Preview Invoice Email call: suger-billing.previewinvoiceemail with: orgId: rest.orgId invoiceId: rest.invoiceId outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/invoice/{invoiceid}/void name: org-orgid-invoice-invoiceid-void description: REST surface for org-orgId-invoice-invoiceId-void. operations: - method: PATCH name: voidinvoice description: Void Invoice call: suger-billing.voidinvoice with: orgId: rest.orgId invoiceId: rest.invoiceId outputParameters: - type: object mapping: $. - path: /v1/org/{orgid}/paymenttransaction name: org-orgid-paymenttransaction description: REST surface for org-orgId-paymentTransaction. operations: - method: GET name: listpaymenttransactions description: List Payment Transactions call: suger-billing.listpaymenttransactions with: orgId: rest.orgId buyerId: rest.buyerId entitlementId: rest.entitlementId invoiceId: rest.invoiceId status: rest.status type: rest.type limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - type: mcp namespace: suger-billing-mcp port: 9090 transport: http description: MCP adapter for Suger API — Billing. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-addons description: List Addons hints: readOnly: true destructive: false idempotent: true call: suger-billing.listaddons with: orgId: tools.orgId limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: create-addon description: Create Addon hints: readOnly: false destructive: false idempotent: false call: suger-billing.createaddon with: orgId: tools.orgId body: tools.body outputParameters: - type: object mapping: $. - name: delete-addon description: Delete Addon hints: readOnly: false destructive: true idempotent: true call: suger-billing.deleteaddon with: orgId: tools.orgId addonId: tools.addonId outputParameters: - type: object mapping: $. - name: get-addon description: Get Addon hints: readOnly: true destructive: false idempotent: true call: suger-billing.getaddon with: orgId: tools.orgId addonId: tools.addonId outputParameters: - type: object mapping: $. - name: update-addon description: Update Addon hints: readOnly: false destructive: false idempotent: true call: suger-billing.updateaddon with: orgId: tools.orgId addonId: tools.addonId body: tools.body outputParameters: - type: object mapping: $. - name: list-refunds description: List Refunds. hints: readOnly: true destructive: false idempotent: true call: suger-billing.listrefundofpaymenttransaction with: orgId: tools.orgId buyerId: tools.buyerId paymentTransactionId: tools.paymentTransactionId outputParameters: - type: object mapping: $. - name: create-refund description: Create Refund. hints: readOnly: false destructive: false idempotent: false call: suger-billing.createrefund with: orgId: tools.orgId buyerId: tools.buyerId paymentTransactionId: tools.paymentTransactionId amount: tools.amount outputParameters: - type: object mapping: $. - name: list-invoices description: List Invoices hints: readOnly: true destructive: false idempotent: true call: suger-billing.listinvoices with: orgId: tools.orgId entitlementId: tools.entitlementId buyerId: tools.buyerId status: tools.status limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-invoice description: Get Invoice hints: readOnly: true destructive: false idempotent: true call: suger-billing.getinvoice with: orgId: tools.orgId invoiceId: tools.invoiceId outputParameters: - type: object mapping: $. - name: update-invoice-info description: Update Invoice Info hints: readOnly: false destructive: false idempotent: true call: suger-billing.updateinvoiceinfo with: orgId: tools.orgId invoiceId: tools.invoiceId body: tools.body outputParameters: - type: object mapping: $. - name: issue-invoice description: Issue Invoice hints: readOnly: false destructive: false idempotent: true call: suger-billing.issueinvoice with: orgId: tools.orgId invoiceId: tools.invoiceId body: tools.body outputParameters: - type: object mapping: $. - name: pay-invoice description: Pay Invoice hints: readOnly: false destructive: false idempotent: true call: suger-billing.payinvoice with: orgId: tools.orgId invoiceId: tools.invoiceId outputParameters: - type: object mapping: $. - name: preview-invoice-email description: Preview Invoice Email hints: readOnly: true destructive: false idempotent: true call: suger-billing.previewinvoiceemail with: orgId: tools.orgId invoiceId: tools.invoiceId outputParameters: - type: object mapping: $. - name: void-invoice description: Void Invoice hints: readOnly: false destructive: false idempotent: true call: suger-billing.voidinvoice with: orgId: tools.orgId invoiceId: tools.invoiceId outputParameters: - type: object mapping: $. - name: list-payment-transactions description: List Payment Transactions hints: readOnly: true destructive: false idempotent: true call: suger-billing.listpaymenttransactions with: orgId: tools.orgId buyerId: tools.buyerId entitlementId: tools.entitlementId invoiceId: tools.invoiceId status: tools.status type: tools.type limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $.