@eczodex/issuers-sdk
Version:
SDK for interacting with Eczodex issuer APIs.
130 lines (129 loc) • 4.62 kB
JavaScript
;
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;
}