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