get_subscription_invoices
Retrieve paginated invoices for a subscription with optional line-item, transaction, billrun, or external invoice details.
Instructions
List invoices for a subscription. GET /subscriptions/{subscriptionId}/invoices. Returns paginated invoices. Use include for line-item detail and transactions (e.g. include=detail,transactions).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID (required) | |
| include | No | Comma-separated: detail, transactions, billruns, externalInvoices | |
| pageNo | No | Page number (default: 1) | |
| itemPerPage | No | Items per page (default: 25) |
Implementation Reference
- The handler function that validates input via Zod schema, then calls subscriptionService.getSubscriptionInvoices to fetch paginated invoices for a subscription.
async function handler(client: Client, args: Record<string, unknown> | undefined) { const parsed = schema.safeParse(args); if (!parsed.success) { return errorResult(parsed.error.errors.map((e) => e.message).join("; ")); } const { subscriptionId, include, pageNo, itemPerPage } = parsed.data; return handleToolCall(() => subscriptionService.getSubscriptionInvoices(client, subscriptionId, { include, pageNo, itemPerPage, }) ); } - Zod schema defining input validation: subscriptionId (required string), include (optional string), pageNo (optional int >=1), itemPerPage (optional int >=1).
const schema = z.object({ subscriptionId: z.string().min(1, "subscriptionId is required"), include: z.string().optional(), pageNo: z.number().int().min(1).optional(), itemPerPage: z.number().int().min(1).optional(), }); - src/tools/subscriptions/getSubscriptionInvoices.ts:48-51 (registration)Exports the Tool object (definition + handler) registered as 'get_subscription_invoices'.
export const getSubscriptionInvoicesTool: Tool = { definition, handler, }; - src/tools/subscriptions/index.ts:27-49 (registration)Registers getSubscriptionInvoicesTool in the array returned by registerSubscriptionTools(), making it available alongside other subscription tools.
export function registerSubscriptionTools(): Tool[] { return [ listSubscriptionsTool, getSubscriptionTool, createSubscriptionTool, updateSubscriptionTool, deleteSubscriptionTool, updateSubscriptionStatusTool, getSubscriptionUpcomingChargesTool, getSubscriptionInvoicesTool, getSubscriptionLogsTool, getSubscriptionExternalInvoicesTool, listSubscriptionRatePlansTool, getSubscriptionRatePlanTool, addSubscriptionRatePlanTool, updateSubscriptionRatePlanTool, removeSubscriptionRatePlanTool, getSubscriptionRatePlanChargeTool, addSubscriptionRatePlanChargeTool, updateSubscriptionRatePlanChargeTool, removeSubscriptionRatePlanChargeTool, ]; } - The service function that builds query params and performs the GET /subscriptions/{subscriptionId}/invoices API call, returning a paginated response.
export async function getSubscriptionInvoices( client: Client, subscriptionId: string, params?: SubscriptionInvoicesParams ): Promise<PaginatedResponse<unknown>> { const search = new URLSearchParams(); if (params?.include) search.append("include", params.include); if (params?.pageNo != null) search.append("pageNo", String(params.pageNo)); if (params?.itemPerPage != null) search.append("itemPerPage", String(params.itemPerPage)); const q = search.toString(); return client.get<PaginatedResponse<unknown>>( `/subscriptions/${subscriptionId}/invoices${q ? `?${q}` : ""}` ); }