@bebapps/rapyd-sdk
Version:
An un-official [Rapyd](https://rapyd.net) SDK for Node.js.
53 lines (46 loc) • 2.57 kB
text/typescript
import { RapydClient } from '../../../core/RapydClient';
import { Subscription } from '../types/Subscription';
import { PayoutSubscriptionError } from '../enums/PayoutSubscriptionError';
import { CreateSubscriptionRequest } from '../requests/CreateSubscriptionRequest';
import { UpdateSubscriptionRequest } from '../requests/UpdateSubscriptionRequest';
import { RetrieveSubscriptionRequest } from '../requests/RetrieveSubscriptionRequest';
import { ListSubscriptionsRequest } from '../requests/ListSubscriptionsRequest';
import { CancelSubscriptionRequest } from '../requests/CancelSubscriptionRequest';
export async function createSubscription<R = Subscription>(client: RapydClient, request: CreateSubscriptionRequest): Promise<R> {
const response = await client.post('/v1/payouts/subscriptions/', {
billing: request.billing,
cancel_at_period_end: request.cancel_at_period_end,
metadata: request.metadata,
payout_fields: request.payout_fields,
subscription_items: request.subscription_items,
});
return await response.data<R, PayoutSubscriptionError>();
}
export async function updateSubscription<R = Subscription>(client: RapydClient, request: UpdateSubscriptionRequest): Promise<R> {
const response = await client.post('/v1/payouts/subscriptions/{}', request.subscription, {
metadata: request.metadata,
});
return await response.data<R, PayoutSubscriptionError>();
}
export async function retrieveSubscription<R = Subscription>(client: RapydClient, request: RetrieveSubscriptionRequest): Promise<R> {
const response = await client.get('/v1/payouts/subscriptions/{}', request.subscription);
return await response.data<R, PayoutSubscriptionError>();
}
export async function listSubscriptions<R = Subscription>(client: RapydClient, request: ListSubscriptionsRequest): Promise<R> {
const queryParams = client.queryParams({
billing: request.billing,
customer: request.customer,
ending_before: request.ending_before,
limit: request.limit,
starting_after: request.starting_after,
status: request.status,
});
const response = await client.get('/v1/payouts/subscriptions' + queryParams);
return await response.data<R, PayoutSubscriptionError>();
}
export async function cancelSubscription<R = Subscription>(client: RapydClient, request: CancelSubscriptionRequest): Promise<R> {
const response = await client.delete('/v1/payouts/subscriptions/{}', request.subscription, {
cancel_at_period_end: request.cancel_at_period_end,
});
return await response.data<R, PayoutSubscriptionError>();
}