Asaari — pool, tranches, subscribe, remittance, distribute, claim.
https://demo.asaari.io| Method | Path | Body | Query | Description |
|---|---|---|---|---|
GET | /health | — | — | Health check and environment info |
GET | /settings | — | — | Get current tranche settings |
PUT | /settings | {"seniorCapital":"number","mezzanineCapital":"number","juniorCapital":"number","seniorCouponBps":"number","mezzanineCouponBps":"number","seniorTargetYield":"number","mezzanineTargetYield":"number","juniorTargetYield":"number","reserveTopupPct":"number","reserveCapPct":"number","liquidityPoolPct":"number (0-100, optional pre-funded buffer)","numLoans":"number","loanSeed":"number","btcPriceUsd":"number","enableStressTesting":"boolean","stressMonths":"number[]","revenueSettings":"object"} | — | Update tranche settings |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
POST | /auth/login | {"username":"string","password":"string"} | — | Login — returns token and user |
POST | /auth/logout | — | — | Logout — invalidate session |
GET | /auth/me | — | — | Get current user |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
GET | /metadata | — | — | Product and tranche metadata |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
POST | /pools | {"poolId":"string"} | — | Create pool |
GET | /pools/:poolId | — | — | Get pool config, reserve, tranche supply |
POST | /pools/:poolId/whitelist | {"address":"string"} | — | Whitelist address |
POST | /pools/:poolId/subscribe | {"trancheId":"string","address":"string","amountUsdc":"number"} | — | Subscribe (deposit USDC, mint tokens) |
GET | /pools/:poolId/balance | — | address, trancheId | Get holder tranche balance |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
GET | /pools/:poolId/loans | — | seed (default 42) | Loan book + interest summary |
POST | /pools/:poolId/loans/generate | {"seed":"number"} | — | Generate and link loan book to pool |
POST | /pools/:poolId/loans | {"loanBookPath":"string"} | — | Link loans to pool from file or inline array |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
POST | /pools/:poolId/remittance | {"amountUsdc":"number"} | — | Record USDC remittance |
POST | /pools/:poolId/principal-paydown | {"amountUsdc":"number"} | — | Record principal paydown |
POST | /pools/:poolId/distribute | {"epochId":"number"} | — | Distribute epoch (waterfall) |
POST | /pools/:poolId/claim | {"epochId":"number","address":"string","trancheId":"string"} | — | Claim epoch payout |
GET | /pools/:poolId/epoch/:epochId | — | — | Epoch claimable amounts |
GET | /pools/:poolId/capital-return | — | — | Capital return amounts at maturity |
POST | /pools/:poolId/capital-return/claim | {"address":"string","trancheId":"string"} | — | Claim capital return at maturity |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
POST | /web3/pools/:poolId/distribute-onchain | {"epochId":"number","chainId":"number","distributorAddress":"string","signature":"string"} | — | Mock on-chain distribution |
GET | /web3/pools/:poolId/distribution/:epochId | — | chainId | Fetch mock on-chain distribution |
POST | /web3/pools/:poolId/claim-onchain | {"epochId":"number","trancheId":"string","address":"string","chainId":"number","signature":"string"} | — | Mock on-chain claim |
GET | /web3/tx/:txHash | — | chainId | Fetch mock transaction |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
GET | /oracle/btc-price | — | — | Get current BTC price (USD) |
PUT | /oracle/btc-price | {"priceUsd":"number"} | — | Set BTC price for stress testing |
GET | /pools/:poolId/loans/liquidatable | — | priceUsd, ltvThresholdBps | Get loans eligible for liquidation |
POST | /pools/:poolId/loans/liquidate | {"loanIds":"string[]","recoveryRate":"number"} | — | Execute liquidations |
POST | /pools/:poolId/stress/evaluate | {"priceUsd":"number","warningLtvBps":"number","marginCallLtvBps":"number","partialLiqLtvBps":"number","marginCallResponsePct":"number","partialLiqTargetLtvBps":"number","recoveryRate":"number","seed":"number","loans":"LoanRecord[] (optional)","rngSeed":"number (optional)"} | — | Evaluate LTV cascade stress scenario |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
POST | /risk/monte-carlo | {"poolId":"string (optional)","horizon_days":"number (optional)","n_paths":"number (optional)","seed":"number (optional)","spot0":"number (optional)","market":"object (optional)"} | — | Run Monte Carlo simulation |
GET | /risk/config | — | — | Get default Monte Carlo config |
POST | /risk/calibrate | {"years_back":"number (optional)"} | — | Calibrate market model from BTC history |
GET | /risk/calibrate/status | — | — | Get calibration status and cached result |
GET | /risk/scenarios | — | — | List available stress scenarios |
POST | /risk/scenarios/run | {"scenarioId":"string","spot0":"number (optional)"} | — | Run a single scenario by ID |
POST | /risk/scenarios/compare | {"scenarioIds":"string[]","spot0":"number (optional)"} | — | Run and compare multiple scenarios |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
POST | /revenue/calculate | {"seniorCapital":"number","mezzanineCapital":"number","juniorCapital":"number","totalPrincipal":"number","numMonths":"number","annualInterest":"number","avgOutstandingBalance":"number","actualPlatformFees":"number","seniorClaims":"number[]","mezzanineClaims":"number[]","juniorClaims":"number[]","remittances":"number[]","revenueSettings":"object (optional)"} | — | Calculate platform revenue for a deal (upfront, recurring, junior, spread, performance, secondary fees) |
| Method | Path | Body | Query | Description |
|---|---|---|---|---|
POST | /demo/reset | — | — | Reset all state (for demo replay) |
POST | /demo/setup | {"poolId":"string (default demo-pool)","loanSeed":"number","walletSuffix":"Wallet|Stress"} | — | Full demo setup: reset, create pool, whitelist, subscribe, generate loans (allows originator) |