UNPKG

@vulog/aima-billing

Version:

37 lines (30 loc) 1.21 kB
import { Client } from '@vulog/aima-client'; import z from 'zod'; import type { Credit } from './types'; interface Payload extends Omit<Credit, 'id' | 'availableAmount' | 'usedAmount' | 'originId' | 'creditAlreadyUsed' | 'updateDate'> {} const schema = z.object({ initialAmount: z.number().min(0), validityStartDate: z.string().datetime(), validityEndDate: z.string().datetime(), notes: z.string().trim().nullable().optional(), discountCategory: z.enum(['CREDITS', 'PERCENTAGE']), oneTimeUsage: z.boolean().optional(), entityId: z.string().trim().min(1).uuid(), type: z.enum(['LOCAL', 'GLOBAL', 'PERIODIC']), usage: z.enum(['TRIP', 'REGISTRATION', 'PRODUCTS', 'ALL']), }); export const addCredits = async (client: Client, payload: Payload): Promise<Credit> => { const result = schema.safeParse(payload); if (!result.success) { throw new TypeError('Invalid args', { cause: result.error.issues, }); } return client .post<Credit>( `/boapi/proxy/billing/fleets/${client.clientOptions.fleetId}/entities/${payload.entityId}/wallets`, result.data ) .then(({ data }) => data); };