UNPKG

@vulog/aima-billing

Version:

Invoice management, credits, wallets, and refunds.

35 lines (30 loc) 1.22 kB
import { Client } from '@vulog/aima-client'; import { z } from 'zod'; import { ChargeProductInfo, Invoice } from './types'; const schema = z.object({ productId: z.string().trim().min(1).uuid(), serviceId: z.string().trim().min(1).uuid().nullable().optional(), amount: z.number().min(0), userId: z.string().trim().min(1).uuid(), entityId: z.string().trim().min(1).uuid(), subscriptionId: z.string().trim().min(1).uuid().nullable().optional(), productNotes: z.string().trim().nullable().optional(), originId: z.string().trim().nullable().optional(), chargeProductRequestId: z.string().trim().min(1).uuid().nullable().optional(), additionalInfo: z .object({ manualPayment: z.boolean().optional(), }) .optional(), }); export const chargeProduct = async (client: Client, info: ChargeProductInfo) => { const result = schema.safeParse(info); if (!result.success) { throw new TypeError('Invalid args', { cause: result.error.issues, }); } return client .post<Invoice>(`/boapi/proxy/billing/fleets/${client.clientOptions.fleetId}/invoices/product`, info) .then(({ data }) => data); };