Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/plaid

src/accounts.ts

43 lines · 1.2 KB · TypeScript
import { normalizeAccount, plaidRequest, type PlaidAuthInput } from './plaid-core.ts'

export type AccountsInput = PlaidAuthInput & {
	accountIds?: string[]
}

/**
 * List accounts on an Item (`/accounts/get`), including cached balances.
 */
export async function getAccounts(input: AccountsInput = {}) {
	const data = await plaidRequest({
		...input,
		path: '/accounts/get',
		includeAccessToken: true,
		body: input.accountIds?.length ? { options: { account_ids: input.accountIds } } : {},
	})
	const accounts = Array.isArray(data?.accounts) ? data.accounts.map(normalizeAccount) : []
	return {
		accounts,
		item_id: data?.item?.item_id ?? null,
		request_id: data?.request_id ?? null,
	}
}

/**
 * Real-time balances (`/accounts/balance/get`).
 */
export async function getBalances(input: AccountsInput = {}) {
	const data = await plaidRequest({
		...input,
		path: '/accounts/balance/get',
		includeAccessToken: true,
		body: input.accountIds?.length ? { options: { account_ids: input.accountIds } } : {},
	})
	const accounts = Array.isArray(data?.accounts) ? data.accounts.map(normalizeAccount) : []
	return {
		accounts,
		item_id: data?.item?.item_id ?? null,
		request_id: data?.request_id ?? null,
	}
}

export default getAccounts