UNPKG

@eczodex/issuers-sdk

Version:

SDK for interacting with Eczodex issuer APIs.

130 lines (129 loc) 4.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBraleBankAddress = createBraleBankAddress; exports.createBralePlaidLinkToken = createBralePlaidLinkToken; exports.registerBralePlaidAccount = registerBralePlaidAccount; exports.getBraleAddressById = getBraleAddressById; exports.listBraleAddresses = listBraleAddresses; exports.requestBraleAddressUpdateLinkToken = requestBraleAddressUpdateLinkToken; // src/adapters/braleBankAdapter.ts const axios_1 = __importDefault(require("axios")); const BASE_URL = "https://api.brale.xyz"; /** * Create a manual external bank address for the given Brale account. * POST /accounts/{account_id}/addresses/external * * `payload` (snake_case) from mapper: * { * owner: string, * transfer_types: string[], * account_number: string, * routing_number: string, * name: string, * bank_address: { * street_line_1: string, * street_line_2?: string, * city: string, * state: string, * zip: string * }, * beneficiary_address: { * street_line_1: string, * street_line_2?: string, * city: string, * state: string, * zip: string * }, * account_type: "checking" | "savings" * } */ async function createBraleBankAddress(accountId, payload, token, idempotencyKey) { const url = `${BASE_URL}/accounts/${accountId}/addresses/external`; const headers = { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }; if (idempotencyKey) { headers["Idempotency-Key"] = idempotencyKey; } const { data } = await axios_1.default.post(url, payload, { headers }); return data; } /** * Create a Plaid Link token for the given Brale account. * POST /accounts/{account_id}/plaid/link_token * * `payload` (snake_case) from mapper: * { date_of_birth?, email_address?, legal_name?, phone_number? } */ async function createBralePlaidLinkToken(accountId, payload, token, idempotencyKey) { const url = `${BASE_URL}/accounts/${accountId}/plaid/link_token`; const headers = { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }; if (idempotencyKey) headers["Idempotency-Key"] = idempotencyKey; const { data } = await axios_1.default.post(url, payload, { headers }); return data; } /** * Exchange Plaid public_token with Brale and create/update an Address. * POST /accounts/{account_id}/plaid/register-account * * `payload`: * { * public_token: string, * customer_webhook_url?: string, * transfer_types?: ["ach_debit","same_day_ach_debit","ach_credit","same_day_ach_credit","rtp"] * } */ async function registerBralePlaidAccount(accountId, payload, token, idempotencyKey) { const url = `${BASE_URL}/accounts/${accountId}/plaid/register-account`; const headers = { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }; if (idempotencyKey) headers["Idempotency-Key"] = idempotencyKey; const { data } = await axios_1.default.post(url, payload, { headers }); return data; } /** * Get a single Address (Plaid-linked or internal). * GET /accounts/{account_id}/addresses/{address_id} */ async function getBraleAddressById(accountId, addressId, token) { const url = `${BASE_URL}/accounts/${accountId}/addresses/${addressId}`; const headers = { Authorization: `Bearer ${token}` }; const { data } = await axios_1.default.get(url, { headers }); return data; } /** * List all Addresses for the account. * GET /accounts/{account_id}/addresses */ async function listBraleAddresses(accountId, token) { const url = `${BASE_URL}/accounts/${accountId}/addresses`; const headers = { Authorization: `Bearer ${token}` }; const { data } = await axios_1.default.get(url, { headers }); return data; } /** * Request an update Link token for an Address that needs re-auth. * POST /accounts/{account_id}/addresses/{address_id}/update-link-token */ async function requestBraleAddressUpdateLinkToken(accountId, addressId, token, idempotencyKey) { const url = `${BASE_URL}/accounts/${accountId}/addresses/${addressId}/update-link-token`; const headers = { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }; if (idempotencyKey) headers["Idempotency-Key"] = idempotencyKey; const { data } = await axios_1.default.post(url, {}, { headers }); return data; }