UNPKG

@bebapps/rapyd-sdk

Version:

An un-official [Rapyd](https://rapyd.net) SDK for Node.js.

117 lines (103 loc) 5.53 kB
import { RapydClient } from '../../../core/RapydClient'; import { Invoice } from '../types/Invoice'; import { InvoiceError } from '../enums/InvoiceError'; import { CreateInvoiceRequest } from '../requests/CreateInvoiceRequest'; import { UpdateInvoiceRequest } from '../requests/UpdateInvoiceRequest'; import { FinalizeInvoiceRequest } from '../requests/FinalizeInvoiceRequest'; import { PayInvoiceRequest } from '../requests/PayInvoiceRequest'; import { VoidInvoiceRequest } from '../requests/VoidInvoiceRequest'; import { MarkInvoiceUncollectibleRequest } from '../requests/MarkInvoiceUncollectibleRequest'; import { RetrieveInvoiceRequest } from '../requests/RetrieveInvoiceRequest'; import { RetrieveInvoiceLinesFromInvoiceRequest } from '../requests/RetrieveInvoiceLinesFromInvoiceRequest'; import { RetrieveUpcomingInvoiceRequest } from '../requests/RetrieveUpcomingInvoiceRequest'; import { RetrieveInvoiceLinesFromUpcomingInvoiceRequest } from '../requests/RetrieveInvoiceLinesFromUpcomingInvoiceRequest'; import { ListInvoicesRequest } from '../requests/ListInvoicesRequest'; import { DeleteInvoiceRequest } from '../requests/DeleteInvoiceRequest'; export async function createInvoice<R = Invoice>(client: RapydClient, request: CreateInvoiceRequest): Promise<R> { const response = await client.post('/v1/invoices', { billing: request.billing, currency: request.currency, customer: request.customer, days_until_due: request.days_until_due, description: request.description, due_date: request.due_date, metadata: request.metadata, payment_fields: request.payment_fields, payment_method: request.payment_method, statement_descriptor: request.statement_descriptor, subscription: request.subscription, tax_percent: request.tax_percent, }); return await response.data<R, InvoiceError>(); } export async function updateInvoice<R = Invoice>(client: RapydClient, request: UpdateInvoiceRequest): Promise<R> { const response = await client.post('/v1/invoices/{}', request.invoice, { days_until_due: request.days_until_due, description: request.description, due_date: request.due_date, metadata: request.metadata, payment_fields: request.payment_fields, statement_descriptor: request.statement_descriptor, tax_percent: request.tax_percent, }); return await response.data<R, InvoiceError>(); } export async function finalizeInvoice<R = Invoice>(client: RapydClient, request: FinalizeInvoiceRequest): Promise<R> { const response = await client.post('/v1/invoices/{}/finalize', request.invoice); return await response.data<R, InvoiceError>(); } export async function payInvoice<R = Invoice>(client: RapydClient, request: PayInvoiceRequest): Promise<R> { const response = await client.post('/v1/invoices/{}/pay', request.invoice, { payment_method: request.payment_method, }); return await response.data<R, InvoiceError>(); } export async function voidInvoice<R = Invoice>(client: RapydClient, request: VoidInvoiceRequest): Promise<R> { const response = await client.post('/v1/invoices/{}/void', request.invoice); return await response.data<R, InvoiceError>(); } export async function markInvoiceUncollectible<R = Invoice>(client: RapydClient, request: MarkInvoiceUncollectibleRequest): Promise<R> { const response = await client.post('/v1/invoices/{}/mark_uncollectible', request.invoice); return await response.data<R, InvoiceError>(); } export async function retrieveInvoice<R = Invoice>(client: RapydClient, request: RetrieveInvoiceRequest): Promise<R> { const response = await client.get('/v1/invoices/{}', request.invoice); return await response.data<R, InvoiceError>(); } export async function retrieveInvoiceLinesFromInvoice<R = Invoice>(client: RapydClient, request: RetrieveInvoiceLinesFromInvoiceRequest): Promise<R> { const response = await client.get('/v1/invoices/{}/lines', request.invoice); return await response.data<R, InvoiceError>(); } export async function retrieveUpcomingInvoice<R = Invoice>(client: RapydClient, request: RetrieveUpcomingInvoiceRequest): Promise<R> { const queryParams = client.queryParams({ customer: request.customer, currency: request.currency, }); const response = await client.get('/v1/invoices/upcoming' + queryParams); return await response.data<R, InvoiceError>(); } export async function retrieveInvoiceLinesFromUpcomingInvoice<R = Invoice>(client: RapydClient, request: RetrieveInvoiceLinesFromUpcomingInvoiceRequest): Promise<R> { const queryParams = client.queryParams({ customer: request.customer, currency: request.currency, }); const response = await client.get('/v1/invoices/upcoming/lines' + queryParams); return await response.data<R, InvoiceError>(); } export async function listInvoices<R = Invoice>(client: RapydClient, request: ListInvoicesRequest): Promise<R> { const queryParams = client.queryParams({ starting_after: request.starting_after, ending_before: request.ending_before, limit: request.limit, customer: request.customer, date: request.date, due_date: request.due_date, subscription: request.subscription, }); const response = await client.get('/v1/invoices' + queryParams); return await response.data<R, InvoiceError>(); } export async function deleteInvoice<R = Invoice>(client: RapydClient, request: DeleteInvoiceRequest): Promise<R> { const response = await client.delete('/v1/invoices/{}', request.invoice); return await response.data<R, InvoiceError>(); }