import { requireApiContext } from "@/server/api/context"; import { paginated, parsePagination, withApi } from "@/server/api/respond"; import { listBillingRecords } from "@/server/services/billing/queries"; /** * GET /api/v1/billing — billing overview (L14). Query: status (open|billed|voided, default open), kind, * customerId, teamId, from/to (YYYY-MM-DD), q, page, pageSize. No prices or amounts. */ export const GET = withApi(async (req: Request) => { const ctx = await requireApiContext("billing", "billing:read"); const url = new URL(req.url); const { page, pageSize } = parsePagination(url); const sp = url.searchParams; const res = await listBillingRecords(ctx, { status: (sp.get("status") ?? undefined) as never, kind: (sp.get("kind") ?? undefined) as never, customerId: sp.get("customerId") ?? undefined, teamId: sp.get("teamId") ?? undefined, from: sp.get("from") ?? undefined, to: sp.get("to") ?? undefined, q: sp.get("q") ?? undefined, page, pageSize, }); return paginated(res.items, res.total, res.page, res.pageSize); });