@bebapps/rapyd-sdk
Version:
An un-official [Rapyd](https://rapyd.net) SDK for Node.js.
117 lines (103 loc) • 5.53 kB
text/typescript
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>();
}