From ba91b08bcdad1bf957ec3cba476c4002a37b3c79 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 00:23:40 +0200 Subject: [PATCH 01/19] docs: inventory of all 533 HTTP endpoints Adds docs/endpoints.md, a complete list of every HTTP endpoint the service exposes, grouped by controller file and listing method, path, handler and whether the endpoint is hidden from the Swagger schema. The list is derived from the routing decorators in src/**/*.controller.ts. Endpoints are attributed to the @Controller scope that precedes them, which matters for the four files declaring two controller classes with different base paths and for the one declaring @Controller() without an argument. The result was cross-checked in both directions against the route list the framework registers at startup: all 526 distinct method/path pairs match. The cross-check surfaced one discrepancy, documented in the file: the handler for the KuCoin Pay webhook carries two @Post decorators, so only .../webhook/success is registered and .../webhook/cancel never takes effect. That defect is left untouched here. This is preparation for a follow-up that adds a column marking read paths - endpoints that only read and render data - so queries there can select individual fields instead of loading whole object graphs. --- docs/endpoints.md | 1206 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1206 insertions(+) create mode 100644 docs/endpoints.md diff --git a/docs/endpoints.md b/docs/endpoints.md new file mode 100644 index 0000000000..7e381973c1 --- /dev/null +++ b/docs/endpoints.md @@ -0,0 +1,1206 @@ +# HTTP endpoints + +Complete inventory of every HTTP endpoint this service exposes: **533 handlers** across 93 controller files. 223 of them are marked `@ApiExcludeEndpoint` and therefore do not appear in the public Swagger schema. + +This file is an inventory, not a usage guide. For request and response shapes use the Swagger schema; for payment links see [payment-links.md](payment-links.md). + +## Why this list exists + +It is the base for per-endpoint analysis. The intended next step is an additional column marking whether an endpoint is a **read path** — one that only reads data and renders it (invoices, receipts, history, exports) — or a write path that has to load complete entities in order to persist them. That distinction decides where a query may safely select individual fields instead of loading whole object graphs, and it cannot be derived from the HTTP verb: `PUT /transaction/:id/invoice` writes nothing, it renders a PDF. + +## How this list is produced + +Derived from the `@Get` / `@Post` / `@Put` / `@Patch` / `@Delete` decorators in `src/**/*.controller.ts`, with each endpoint attributed to the `@Controller` scope that precedes it — four files declare two controller classes with different base paths, and one declares `@Controller()` without an argument, placing its routes at the root. + +The result was cross-checked against the route list the framework registers at startup: all 526 distinct method/path pairs match, in both directions. + +## Known discrepancy + +`POST /paymentLink/integrations/kucoin/webhook/cancel` appears in the source but is **not registered at runtime**. Its handler in `src/subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` carries two `@Post` decorators, and the framework stores a single path per handler, so only `.../webhook/success` takes effect. The endpoint is listed below for completeness and marked accordingly; it is a defect to be fixed separately, not a documentation gap. + +## Endpoints + +### AppController + +`src/app.controller.ts` — 7 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/` | `home` | public | +| GET | `/app` | `createRefNew` | public | +| GET | `/app/:app` | `redirectToStore` | hidden | +| GET | `/app/advertisements` | `getAds` | hidden | +| GET | `/app/announcements` | `getAnnouncements` | public | +| GET | `/app/settings/flags` | `getFlags` | hidden | +| GET | `/version` | `getVersion` | hidden | + +### AlchemyController + +`src/integration/alchemy/controllers/alchemy.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/alchemy/addressWebhook` | `addressWebhook` | public | +| GET | `/alchemy/addresses/:webhookId` | `addresses` | public | + +### YapealWebhookController + +`src/integration/bank/controllers/yapeal-webhook.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/bank/yapeal/webhook` | `handleYapealWebhook` | public | + +### BlockchainApiController + +`src/integration/blockchain/api/controllers/blockchain-api.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/blockchain/balances` | `getBalances` | public | +| POST | `/blockchain/broadcast` | `broadcastTransaction` | public | +| POST | `/blockchain/transaction` | `createTransaction` | public | + +### NodeController + +`src/integration/blockchain/bitcoin/node/node.controller.ts` — 6 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/node/:node/:mode/cmd` | `cmdForMode` | hidden | +| POST | `/node/:node/:mode/rpc` | `rpcForMode` | hidden | +| GET | `/node/:node/:mode/tx/:txId` | `waitForTxForMode` | hidden | +| POST | `/node/:node/cmd` | `cmd` | hidden | +| POST | `/node/:node/rpc` | `rpc` | public | +| GET | `/node/:node/tx/:txId` | `waitForTx` | hidden | + +### DEuroController + +`src/integration/blockchain/deuro/controllers/deuro.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/deuro/info` | `getInfo` | public | + +### FrankencoinController + +`src/integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/frankencoin/info` | `getInfo` | public | + +### JuiceController + +`src/integration/blockchain/juice/controllers/juice.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/juice/info` | `getInfo` | public | + +### ExchangeController + +`src/integration/exchange/controllers/exchange.controller.ts` — 9 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/exchange/:exchange/balances` | `getBalance` | public | +| GET | `/exchange/:exchange/price` | `getPrice` | hidden | +| PUT | `/exchange/:exchange/sync` | `syncExchange` | hidden | +| GET | `/exchange/:exchange/trade` | `getTrades` | hidden | +| POST | `/exchange/:exchange/trade` | `trade` | hidden | +| GET | `/exchange/:exchange/trade/history` | `getTradeHistory` | hidden | +| POST | `/exchange/:exchange/withdraw` | `withdrawFunds` | hidden | +| GET | `/exchange/:exchange/withdraw/:id` | `getWithdraw` | public | +| GET | `/exchange/trade/:id` | `getTrade` | hidden | + +### IknaController + +`src/integration/ikna/controllers/ikna.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/ikna/bfs/:id` | `getBfsResult` | hidden | +| POST | `/ikna/bfs/address` | `createBfsAddressRequest` | public | +| GET | `/ikna/tag` | `getIknaAddressTag` | hidden | + +### ScorechainController + +`src/integration/scorechain/controllers/scorechain.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/scorechain/screening` | `screen` | public | + +### TatumController + +`src/integration/tatum/controllers/tatum.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/tatum/addressWebhook` | `addressWebhook` | public | + +### AssetController + +`src/shared/models/asset/asset.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/asset` | `getAllAsset` | public | +| PUT | `/asset/:id` | `updateAsset` | public | + +### CountryController + +`src/shared/models/country/country.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/country` | `getAllCountry` | public | + +### FiatController + +`src/shared/models/fiat/fiat.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/fiat` | `getAllFiat` | public | + +### LanguageController + +`src/shared/models/language/language.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/language` | `getAllLanguage` | public | + +### SettingController + +`src/shared/models/setting/setting.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/setting` | `getSettings` | public | +| PUT | `/setting/:key` | `updateSetting` | hidden | +| PUT | `/setting/customSignUpFees` | `updateCustomSignUpFees` | hidden | +| PUT | `/setting/disabledProcesses` | `updateProcess` | hidden | +| GET | `/setting/infoBanner` | `getInfoBanner` | public | + +### LedgerController + +`src/subdomains/core/accounting/controllers/ledger.controller.ts` — 6 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/dashboard/accounting/ledger/accounts` | `getAccounts` | public | +| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | `getAccountDetail` | hidden | +| GET | `/dashboard/accounting/ledger/equity-comparison` | `getEquityComparison` | hidden | +| GET | `/dashboard/accounting/ledger/margin` | `getMargin` | hidden | +| GET | `/dashboard/accounting/ledger/reconciliation` | `getReconStatus` | hidden | +| GET | `/dashboard/accounting/ledger/suspense` | `getSuspense` | hidden | + +### BuyCryptoController + +`src/subdomains/core/buy-crypto/process/buy-crypto.controller.ts` — 8 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/buyCrypto/:id` | `update` | hidden | +| PUT | `/buyCrypto/:id/amlCheck` | `manualPassAmlCheck` | hidden | +| DELETE | `/buyCrypto/:id/amlCheck` | `resetAmlCheck` | hidden | +| POST | `/buyCrypto/:id/refund` | `refundBuyCrypto` | hidden | +| POST | `/buyCrypto/:id/scorechain` | `retriggerScorechain` | hidden | +| POST | `/buyCrypto/:id/webhook` | `triggerWebhook` | public | +| PUT | `/buyCrypto/refVolumes` | `updateRefVolumes` | hidden | +| PUT | `/buyCrypto/volumes` | `updateBuyVolumes` | hidden | + +### BuyController + +`src/subdomains/core/buy-crypto/routes/buy/buy.controller.ts` — 11 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/buy` | `getAllBuy` | public | +| POST | `/buy` | `createBuy` | hidden | +| GET | `/buy/:id` | `getBuy` | hidden | +| PUT | `/buy/:id` | `updateBuyRoute` | public | +| GET | `/buy/:id/history` | `getBuyRouteHistory` | hidden | +| PUT | `/buy/paymentInfos` | `createBuyWithPaymentInfo` | public | +| PUT | `/buy/paymentInfos/:id/confirm` | `confirmBuy` | public | +| PUT | `/buy/paymentInfos/:id/invoice` | `generateInvoicePDF` | public | +| GET | `/buy/personalIban` | `getAllPersonalIbans` | public | +| POST | `/buy/personalIban` | `AuthGuard` | public | +| PUT | `/buy/quote` | `getBuyQuote` | hidden | + +### CryptoRouteController + +`src/subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/cryptoRoute` | `getAllCrypto` | public | +| POST | `/cryptoRoute` | `createCrypto` | hidden | +| GET | `/cryptoRoute/:id` | `getCrypto` | hidden | +| PUT | `/cryptoRoute/:id` | `updateCryptoRoute` | hidden | +| GET | `/cryptoRoute/:id/history` | `getCryptoRouteHistory` | hidden | + +### SwapController + +`src/subdomains/core/buy-crypto/routes/swap/swap.controller.ts` — 9 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/swap` | `getAllSwap` | public | +| POST | `/swap` | `createSwap` | hidden | +| GET | `/swap/:id` | `getSwap` | hidden | +| PUT | `/swap/:id` | `updateSwapRoute` | public | +| GET | `/swap/:id/history` | `getSwapRouteHistory` | hidden | +| PUT | `/swap/paymentInfos` | `createSwapWithPaymentInfo` | public | +| PUT | `/swap/paymentInfos/:id/confirm` | `confirmSwap` | public | +| GET | `/swap/paymentInfos/:id/tx` | `depositTx` | public | +| PUT | `/swap/quote` | `getSwapQuote` | hidden | + +### CustodyAccountController + +`src/subdomains/core/custody/controllers/custody-account.controller.ts` — 12 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/custody/account` | `getCustodyAccounts` | public | +| POST | `/custody/account` | `createCustodyAccount` | public | +| GET | `/custody/account/:id` | `getCustodyAccount` | public | +| PUT | `/custody/account/:id` | `updateCustodyAccount` | public | +| GET | `/custody/account/:id/access` | `getAccessList` | public | +| POST | `/custody/account/:id/access` | `grantAccess` | public | +| PUT | `/custody/account/:id/access/:accessId` | `updateAccess` | public | +| DELETE | `/custody/account/:id/access/:accessId` | `revokeAccess` | public | +| GET | `/custody/account/:id/balance` | `getAccountBalance` | public | +| GET | `/custody/account/:id/history` | `getAccountHistory` | public | +| GET | `/custody/account/:id/order` | `getAccountOrders` | public | +| GET | `/custody/account/:id/pdf` | `getAccountPdf` | public | + +### CustodyAdminController, CustodyController + +`src/subdomains/core/custody/controllers/custody.controller.ts` — 10 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/custody` | `getUserCustodyBalance` | public | +| POST | `/custody` | `createCustodyAccount` | public | +| POST | `/custody/admin/order/:id/approve` | `approveOrder` | public | +| GET | `/custody/admin/orders` | `getOrders` | public | +| PUT | `/custody/admin/user/:id/balance` | `updateUserBalance` | public | +| GET | `/custody/history` | `getUserCustodyHistory` | public | +| GET | `/custody/order` | `getOrders` | public | +| POST | `/custody/order` | `createOrder` | public | +| POST | `/custody/order/:id/confirm` | `confirmOrder` | public | +| GET | `/custody/pdf` | `getCustodyPdf` | public | + +### FaucetRequestController + +`src/subdomains/core/faucet-request/controller/faucet-request.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/faucet` | `faucetRequest` | public | + +### HistoryController + +`src/subdomains/core/history/controllers/history.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/history` | `getHistory` | public | +| GET | `/history/:exportType` | `getApiHistory` | hidden | +| GET | `/history/csv` | `getCsv` | hidden | +| POST | `/history/csv` | `createCsv` | public | + +### TransactionController + +`src/subdomains/core/history/controllers/transaction.controller.ts` — 16 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/transaction` | `getTransactions` | public | +| PUT | `/transaction/:id/invoice` | `generateInvoiceFromTransaction` | public | +| PUT | `/transaction/:id/receipt` | `generateReceiptFromTransaction` | public | +| GET | `/transaction/:id/refund` | `AuthGuard` | public | +| PUT | `/transaction/:id/refund` | `AuthGuard` | public | +| PUT | `/transaction/:id/target` | `setTransactionTarget` | hidden | +| GET | `/transaction/ChainReport` | `getCsvChainReport` | hidden | +| GET | `/transaction/CoinTracking` | `getCsvCT` | public | +| GET | `/transaction/csv` | `getCsv` | public | +| PUT | `/transaction/csv` | `createCsv` | public | +| GET | `/transaction/detail` | `getTransactionDetails` | hidden | +| PUT | `/transaction/detail/csv` | `createDetailCsv` | public | +| GET | `/transaction/detail/single` | `getSingleTransactionDetails` | public | +| GET | `/transaction/single` | `getSingleTransaction` | public | +| GET | `/transaction/target` | `getTransactionTargets` | hidden | +| GET | `/transaction/unassigned` | `getUnassignedTransactions` | public | + +### LiquidityBalanceController + +`src/subdomains/core/liquidity-management/controllers/balance.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/liquidityManagement/balance` | `getBalances` | public | + +### LiquidityManagementOrderController + +`src/subdomains/core/liquidity-management/controllers/order.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/liquidityManagement/order/:id/resolveUncertain` | `resolveUncertainOrder` | hidden | +| GET | `/liquidityManagement/order/in-progress` | `getProcessingOrders` | public | + +### LiquidityManagementPipelineController + +`src/subdomains/core/liquidity-management/controllers/pipeline.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/liquidityManagement/pipeline/:id/status` | `getPipelineStatus` | hidden | +| POST | `/liquidityManagement/pipeline/buy` | `buyLiquidity` | public | +| GET | `/liquidityManagement/pipeline/in-progress` | `getProcessingPipelines` | hidden | +| POST | `/liquidityManagement/pipeline/sell` | `sellLiquidity` | hidden | +| GET | `/liquidityManagement/pipeline/stopped` | `getStoppedPipelines` | hidden | + +### LiquidityManagementRuleController + +`src/subdomains/core/liquidity-management/controllers/rule.controller.ts` — 6 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/liquidityManagement/rule` | `createRule` | public | +| GET | `/liquidityManagement/rule/:id` | `getRule` | hidden | +| PUT | `/liquidityManagement/rule/:id` | `updateRule` | hidden | +| PATCH | `/liquidityManagement/rule/:id/deactivate` | `deactivateRule` | hidden | +| PATCH | `/liquidityManagement/rule/:id/reactivate` | `reactivateRule` | hidden | +| PATCH | `/liquidityManagement/rule/:id/settings` | `setReactivationTime` | hidden | + +### HealthController + +`src/subdomains/core/monitoring/health.controller.ts` — 6 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/health` | `getHealth` | public | +| GET | `/health/banking` | `getBankingHealth` | public | +| GET | `/health/external` | `getExternalHealth` | public | +| GET | `/health/liquidity` | `getLiquidityHealth` | public | +| GET | `/health/nodes` | `getNodeHealth` | public | +| GET | `/health/payment` | `getPaymentHealth` | public | + +### MonitoringController + +`src/subdomains/core/monitoring/monitoring.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/monitoring/data` | `getSystemState` | public | +| POST | `/monitoring/data` | `onWebhook` | hidden | + +### C2BPaymentLinkController + +`src/subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/paymentLink/integration/binance/activate/:id` | `activateBinancePay` | public | +| POST | `/paymentLink/integration/binance/webhook` | `binancePayWebhook` | hidden | +| POST | `/paymentLink/integration/kucoin/activate/:id` | `activateKucoinPay` | public | +| POST | `/paymentLink/integrations/kucoin/webhook/cancel` | `kucoinPayWebhook` | hidden — not registered, see above | +| POST | `/paymentLink/integrations/kucoin/webhook/success` | `kucoinPayWebhook` | hidden | + +### PaymentLinkController, PaymentLinkShortController + +`src/subdomains/core/payment-link/controllers/payment-link.controller.ts` — 22 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/paymentLink` | `getAllPaymentLinks` | public | +| POST | `/paymentLink` | `createPaymentLink` | public | +| PUT | `/paymentLink` | `updatePaymentLink` | public | +| PUT | `/paymentLink/:id` | `updatePaymentLinkAdmin` | hidden | +| DELETE | `/paymentLink/:id` | `deletePaymentLink` | hidden | +| PUT | `/paymentLink/:id/pos` | `createPosLinkAdmin` | hidden | +| PUT | `/paymentLink/assign` | `assignPaymentLink` | public | +| GET | `/paymentLink/config` | `getUserPaymentLinksConfig` | public | +| PUT | `/paymentLink/config` | `updateUserPaymentLinksConfig` | public | +| GET | `/paymentLink/history` | `getPaymentHistory` | public | +| GET | `/paymentLink/locations` | `getLocations` | public | +| POST | `/paymentLink/merchant` | `createMerchant` | public | +| GET | `/paymentLink/payment` | `createInvoicePayment` | hidden | +| POST | `/paymentLink/payment` | `createPayment` | public | +| DELETE | `/paymentLink/payment` | `cancelPayment` | public | +| PUT | `/paymentLink/payment/:id` | `updatePaymentLinkPayment` | public | +| PUT | `/paymentLink/payment/confirm` | `confirmPayment` | public | +| GET | `/paymentLink/payment/wait` | `waitForPayment` | public | +| PUT | `/paymentLink/pos` | `createPosLink` | public | +| GET | `/paymentLink/recipient` | `getPaymentRecipient` | public | +| GET | `/paymentLink/stickers` | `generateOcpStickers` | hidden | +| GET | `/plp` | `createInvoicePayment` | public | + +### PaymentStandardController + +`src/subdomains/core/payment-link/controllers/payment-standard.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/paymentLink/standard` | `getAll` | public | +| GET | `/paymentLink/standard/:id` | `getById` | public | + +### WalletAppController + +`src/subdomains/core/payment-link/controllers/wallet-app.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/paymentLink/walletApp` | `getAll` | public | +| GET | `/paymentLink/walletApp/:id` | `getById` | public | +| GET | `/paymentLink/walletApp/recommended` | `getRecommended` | public | + +### RefController + +`src/subdomains/core/referral/process/ref.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/ref` | `createRef` | public | + +### RefRewardController + +`src/subdomains/core/referral/reward/ref-reward.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/reward/ref` | `createPendingRefRewards` | hidden | +| PUT | `/reward/ref/:id` | `updateRefReward` | hidden | +| POST | `/reward/ref/manual` | `createManualRefReward` | hidden | +| PUT | `/reward/ref/volumes` | `updateVolumes` | public | + +### RouteController + +`src/subdomains/core/route/route.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/route` | `getAllRoutes` | public | +| PUT | `/route/:id` | `updateRoute` | hidden | + +### BuyFiatController + +`src/subdomains/core/sell-crypto/process/buy-fiat.controller.ts` — 8 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/buyFiat/:id` | `update` | hidden | +| PUT | `/buyFiat/:id/amlCheck` | `manualPassAmlCheck` | hidden | +| DELETE | `/buyFiat/:id/amlCheck` | `resetAmlCheck` | hidden | +| POST | `/buyFiat/:id/refund` | `refundBuyFiat` | hidden | +| POST | `/buyFiat/:id/scorechain` | `retriggerScorechain` | hidden | +| POST | `/buyFiat/:id/webhook` | `triggerWebhook` | public | +| PUT | `/buyFiat/refVolumes` | `updateRefVolumes` | hidden | +| PUT | `/buyFiat/volumes` | `updateVolumes` | hidden | + +### SellController + +`src/subdomains/core/sell-crypto/route/sell.controller.ts` — 9 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/sell` | `getAllSell` | public | +| POST | `/sell` | `createSell` | hidden | +| GET | `/sell/:id` | `getSell` | hidden | +| PUT | `/sell/:id` | `updateSell` | public | +| GET | `/sell/:id/history` | `getSellRouteHistory` | hidden | +| PUT | `/sell/paymentInfos` | `createSellWithPaymentInfo` | public | +| PUT | `/sell/paymentInfos/:id/confirm` | `confirmSell` | public | +| GET | `/sell/paymentInfos/:id/tx` | `depositTx` | public | +| PUT | `/sell/quote` | `getSellQuote` | hidden | + +### StatisticController + +`src/subdomains/core/statistic/statistic.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/statistic` | `getAll` | public | +| GET | `/statistic/status` | `getStatus` | public | +| GET | `/statistic/transactions` | `getTransactions` | public | + +### TradingRuleController + +`src/subdomains/core/trading/controllers/trading-rule.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/trading/rule/:id` | `update` | public | + +### AdminController + +`src/subdomains/generic/admin/admin.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/admin/lightning/rotate-webhook-secrets` | `rotateLightningWebhookSecrets` | hidden | +| POST | `/admin/mail` | `sendMail` | public | +| POST | `/admin/payout` | `payout` | hidden | +| POST | `/admin/sendLetter` | `sendLetter` | hidden | + +### LnurldForwardController + +`src/subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/lnurld/:id` | `lnurldForward` | public | +| GET | `/lnurld/cb/:id/:var` | `lnurldCallbackForward` | public | + +### LnUrlPForwardController + +`src/subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` — 6 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/lnurlp/:id` | `lnUrlPForward` | public | +| POST | `/lnurlp/:id` | `activatePublicPayment` | public | +| DELETE | `/lnurlp/cancel/:id` | `cancelPayment` | public | +| GET | `/lnurlp/cb/:id` | `lnUrlPCallbackForward` | public | +| GET | `/lnurlp/tx/:id` | `txHexForward` | public | +| GET | `/lnurlp/wait/:id` | `waitForPayment` | public | + +### LnUrlWForwardController + +`src/subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/lnurlw/:id` | `lnUrlWForward` | public | +| GET | `/lnurlw/cb/:id` | `lnUrlWCallbackForward` | public | + +### PaymentForwardController + +`src/subdomains/generic/forwarding/controllers/payment-forward.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/pl` | `lnUrlPForward` | public | + +### GsEvmController + +`src/subdomains/generic/gs/gs-evm.controller.ts` — 6 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/gs/evm/bridgeApproval` | `approveBridge` | hidden | +| POST | `/gs/evm/coinTransaction` | `sendCoinTransaction` | hidden | +| POST | `/gs/evm/contractApproval` | `approveContract` | hidden | +| POST | `/gs/evm/contractTransaction` | `sendContractTransaction` | hidden | +| POST | `/gs/evm/rawTransaction` | `sendRawTransaction` | public | +| POST | `/gs/evm/tokenTransaction` | `sendTokenTransaction` | hidden | + +### GsController + +`src/subdomains/generic/gs/gs.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/gs/db` | `getDbData` | public | +| POST | `/gs/db/custom` | `getExtendedData` | hidden | +| POST | `/gs/debug` | `executeDebugQuery` | hidden | +| GET | `/gs/support` | `getSupportData` | hidden | + +### KycAdminController + +`src/subdomains/generic/kyc/controllers/kyc-admin.controller.ts` — 8 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/kyc/admin/blacklist/ip` | `addIpToBlacklist` | hidden | +| DELETE | `/kyc/admin/blacklist/ip` | `deleteIpToBlacklist` | hidden | +| POST | `/kyc/admin/ident/file/sync` | `syncIdentFiles` | hidden | +| POST | `/kyc/admin/log` | `createLog` | hidden | +| PUT | `/kyc/admin/log/:id` | `updateLog` | hidden | +| PUT | `/kyc/admin/nameCheck/:id` | `updateNameCheckLog` | public | +| PUT | `/kyc/admin/step/:id` | `updateKycStep` | hidden | +| POST | `/kyc/admin/webhook` | `triggerWebhook` | hidden | + +### KycClientController + +`src/subdomains/generic/kyc/controllers/kyc-client.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/kyc/client/payments` | `getAllPayments` | public | +| GET | `/kyc/client/users` | `getAllKycData` | public | +| GET | `/kyc/client/users/:id/documents` | `getKycFiles` | public | +| GET | `/kyc/client/users/:id/documents/:type` | `getKycFile` | public | +| GET | `/kyc/client/users/:id/payments` | `getUserPayments` | public | + +### KycController + +`src/subdomains/generic/kyc/controllers/kyc.controller.ts` — 34 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/kyc` | `getKycLevel` | public | +| PUT | `/kyc` | `continueKyc` | public | +| GET | `/kyc/2fa` | `check2fa` | public | +| POST | `/kyc/2fa` | `start2fa` | public | +| POST | `/kyc/2fa/verify` | `verify2fa` | public | +| GET | `/kyc/:step` | `initiateStep` | public | +| GET | `/kyc/countries` | `getKycCountries` | public | +| DELETE | `/kyc/data/:type/:id` | `cancelStep` | hidden | +| PUT | `/kyc/data/additional/:id` | `updateAdditionalDocumentsData` | public | +| PUT | `/kyc/data/address/:id` | `updateAddressChangeData` | public | +| PUT | `/kyc/data/authority/:id` | `updateAuthorityData` | public | +| PUT | `/kyc/data/beneficial/:id` | `updateBeneficialData` | public | +| PUT | `/kyc/data/confirmation/:id` | `updateSoleProprietorshipConfirmationData` | public | +| PUT | `/kyc/data/contact/:id` | `updateContactData` | hidden | +| GET | `/kyc/data/financial/:id` | `getFinancialData` | public | +| PUT | `/kyc/data/financial/:id` | `updateFinancialData` | public | +| PUT | `/kyc/data/legal/:id` | `updateCommercialRegisterData` | public | +| PUT | `/kyc/data/name/:id` | `updateNameChangeData` | public | +| PUT | `/kyc/data/nationality/:id` | `updateNationalityData` | public | +| PUT | `/kyc/data/operational/:id` | `updateOperationalData` | public | +| PUT | `/kyc/data/owner/:id` | `updateOwnerDirectoryData` | public | +| PUT | `/kyc/data/payment/:id` | `updatePaymentsData` | public | +| PUT | `/kyc/data/personal/:id` | `updatePersonalData` | public | +| PUT | `/kyc/data/phone/:id` | `updatePhoneChangeData` | public | +| PUT | `/kyc/data/recall/:id` | `updateRecallAgreement` | public | +| PUT | `/kyc/data/recommendation/:id` | `updateRecommendationData` | public | +| PUT | `/kyc/data/residence/:id` | `updateResidencePermitData` | public | +| PUT | `/kyc/data/signatory/:id` | `updateSignatoryPowerData` | public | +| PUT | `/kyc/data/statutes/:id` | `updateStatutesData` | public | +| GET | `/kyc/file/:id` | `getFile` | hidden | +| PUT | `/kyc/ident/manual/:id` | `updateIdentData` | hidden | +| POST | `/kyc/ident/sumsub` | `sumsubWebhook` | public | +| POST | `/kyc/transfer` | `addKycClient` | hidden | +| DELETE | `/kyc/transfer` | `removeKycClient` | hidden | + +### SupportController + +`src/subdomains/generic/support/support.controller.ts` — 27 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/support` | `searchUserByKey` | public | +| GET | `/support/:id` | `getUserData` | hidden | +| GET | `/support/:id/ip-log-pdf` | `getIpLogPdf` | hidden | +| POST | `/support/:id/onboarding-pdf` | `generateOnboardingPdf` | hidden | +| GET | `/support/:id/scorechain` | `getScorechainScreenings` | hidden | +| GET | `/support/:id/transaction-pdf` | `getTransactionPdf` | hidden | +| GET | `/support/call-queues` | `getCallQueues` | hidden | +| GET | `/support/call-queues/:queue/items` | `getCallQueueItems` | hidden | +| GET | `/support/call-queues/clerks` | `getCallQueueClerks` | hidden | +| GET | `/support/kycFileList` | `getKycFileList` | hidden | +| GET | `/support/kycFileStats` | `getKycFileStats` | hidden | +| GET | `/support/note` | `getNotes` | hidden | +| POST | `/support/note` | `createNote` | hidden | +| PUT | `/support/note/:id` | `updateNote` | hidden | +| DELETE | `/support/note/:id` | `deleteNote` | hidden | +| GET | `/support/note/users` | `listNoteUsers` | hidden | +| GET | `/support/pending-reviews` | `getPendingReviews` | hidden | +| GET | `/support/pending-reviews/items` | `getPendingReviewItems` | hidden | +| GET | `/support/pending-transactions` | `getPendingTransactions` | hidden | +| GET | `/support/recommendation-graph/:id/neighbors` | `getRecommendationGraphNeighbors` | hidden | +| GET | `/support/template` | `getTemplates` | hidden | +| POST | `/support/template` | `createTemplate` | hidden | +| PUT | `/support/template/:id` | `updateTemplate` | hidden | +| DELETE | `/support/template/:id` | `deleteTemplate` | hidden | +| GET | `/support/transaction/:id/refund` | `getTransactionRefund` | hidden | +| PUT | `/support/transaction/:id/refund` | `setTransactionRefund` | hidden | +| GET | `/support/transactionList` | `getTransactionList` | hidden | + +### AuthLnurlController + +`src/subdomains/generic/user/models/auth/auth-lnurl.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/lnurla` | `signInWithLnurlAuth` | public | +| POST | `/lnurla` | `getLnurlAuth` | public | +| GET | `/lnurla/status` | `lnurlAuthStatus` | public | + +### AuthController + +`src/subdomains/generic/user/models/auth/auth.controller.ts` — 14 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/auth` | `authenticate` | public | +| GET | `/auth/2fa` | `check2fa` | hidden | +| POST | `/auth/2fa` | `setup2fa` | public | +| POST | `/auth/2fa/verify` | `verify2fa` | public | +| GET | `/auth/alby` | `signInWithAlby` | hidden | +| GET | `/auth/alby/redirect/:id` | `redirectAlby` | hidden | +| GET | `/auth/challenge` | `companyChallenge` | hidden | +| POST | `/auth/mail` | `signInByMail` | hidden | +| GET | `/auth/mail/confirm` | `executeMerge` | public | +| GET | `/auth/mail/redirect` | `redirectMail` | hidden | +| POST | `/auth/signIn` | `signIn` | hidden | +| GET | `/auth/signMessage` | `getSignMessage` | public | +| POST | `/auth/signUp` | `signUp` | public | +| GET | `/auth/verifySignature` | `verifySignMessage` | public | + +### BankDataController + +`src/subdomains/generic/user/models/bank-data/bank-data.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/bankData/:id` | `updateBankData` | public | +| PUT | `/bankData/:id/nameCheck` | `doNameCheck` | hidden | + +### CustodyProviderController + +`src/subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/CustodyProvider` | `createCustodyProvider` | public | +| PUT | `/CustodyProvider/:id` | `updateCustodyProvider` | hidden | + +### KycClientController, KycController + +`src/subdomains/generic/user/models/kyc/kyc.controller.ts` — 10 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/kyc` | `getKycProgressV1` | public | +| POST | `/kyc` | `requestKycV1` | public | +| GET | `/kyc/:code` | `getKycProgressByCodeV1` | public | +| POST | `/kyc/:code` | `requestKycByCodeV1` | public | +| GET | `/kyc/:code/countries` | `getKycCountriesByCodeV1` | public | +| GET | `/kyc/:id/documents` | `getKycFilesV1` | public | +| GET | `/kyc/:id/documents/:type` | `getKycFileV1` | public | +| GET | `/kyc/countries` | `getKycCountriesV1` | public | +| PUT | `/kyc/transfer` | `transferKycDataV1` | public | +| GET | `/kyc/users` | `getAllKycDataV1` | public | + +### RecommendationController + +`src/subdomains/generic/user/models/recommendation/recommendation.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/recommendation` | `getAllRecommendation` | public | +| POST | `/recommendation` | `createRecommendation` | hidden | +| PUT | `/recommendation/:id/confirm` | `confirmRecommendation` | hidden | +| PUT | `/recommendation/:id/reject` | `rejectRecommendation` | hidden | + +### UserDataRelationController + +`src/subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/userDataRelation` | `create` | public | +| PUT | `/userDataRelation/:id` | `update` | public | +| DELETE | `/userDataRelation/:id` | `delete` | public | + +### UserDataController + +`src/subdomains/generic/user/models/user-data/user-data.controller.ts` — 12 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/userData` | `getAllUserData` | public | +| POST | `/userData` | `createEmptyUserData` | hidden | +| GET | `/userData/:id` | `getUserData` | public | +| PUT | `/userData/:id` | `updateUserData` | hidden | +| PUT | `/userData/:id/bankDatas` | `addBankData` | hidden | +| PUT | `/userData/:id/fee` | `addFee` | hidden | +| DELETE | `/userData/:id/fee` | `removeFee` | hidden | +| POST | `/userData/:id/kycFile` | `uploadKycFile` | hidden | +| PUT | `/userData/:id/merge` | `mergeUserData` | hidden | +| PUT | `/userData/:id/volumes` | `updateVolumes` | hidden | +| PUT | `/userData/auditPeriodNumbers` | `calculateAuditPeriodNumbers` | hidden | +| POST | `/userData/download` | `downloadUserData` | public | + +### UserController, UserV2Controller + +`src/subdomains/generic/user/models/user/user.controller.ts` — 26 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/user` | `getUserV1` | public | +| GET | `/user` | `AuthGuard` | public | +| PUT | `/user` | `updateUserV1` | public | +| PUT | `/user` | `updateUser` | public | +| DELETE | `/user` | `AuthGuard` | public | +| DELETE | `/user` | `deleteAccount` | public | +| PUT | `/user/:id` | `updateUserAdmin` | hidden | +| DELETE | `/user/account` | `deleteUserAccount` | public | +| PUT | `/user/addresses/:address` | `updateAddress` | public | +| DELETE | `/user/addresses/:address` | `AuthGuard` | public | +| PUT | `/user/apiFilter/CT` | `updateApiFilter` | public | +| POST | `/user/apiKey/CT` | `createApiKey` | public | +| DELETE | `/user/apiKey/CT` | `deleteApiKey` | public | +| POST | `/user/change` | `changeUser` | public | +| POST | `/user/data` | `updateKycData` | hidden | +| GET | `/user/detail` | `getUserDetailV1` | public | +| PUT | `/user/discountCodes` | `addDiscountCode` | public | +| PUT | `/user/mail` | `updateUserMail` | public | +| POST | `/user/mail/verify` | `verifyMail` | public | +| PUT | `/user/name` | `updateUserName` | public | +| GET | `/user/profile` | `getProfile` | public | +| GET | `/user/ref` | `getRefInfo` | public | +| GET | `/user/ref` | `getRef` | public | +| PUT | `/user/ref` | `updateRefAsset` | public | +| PUT | `/user/specialCodes` | `addSpecialCode` | public | +| GET | `/user/volumes` | `getVolumes` | hidden | + +### WalletController + +`src/subdomains/generic/user/models/wallet/wallet.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/wallet` | `createWallet` | public | +| PUT | `/wallet/:id` | `updateWallet` | hidden | + +### DepositController + +`src/subdomains/supporting/address-pool/deposit/deposit.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/deposit` | `createDeposits` | public | +| PUT | `/deposit/lightningWebhook` | `updateLightningDepositWebhook` | hidden | + +### BalanceController + +`src/subdomains/supporting/balance/controllers/balance.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/balance/pdf` | `getBalancePdf` | public | +| GET | `/balance/pdf/blockchains` | `getSupportedBlockchains` | public | + +### BankTxRepeatController + +`src/subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/bankTxRepeat/:id` | `update` | public | + +### BankTxReturnController + +`src/subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/bankTxReturn/:id` | `update` | public | +| POST | `/bankTxReturn/:id/refund` | `refundBuyCrypto` | hidden | + +### BankTxController + +`src/subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/bankTx` | `uploadSepaFiles` | public | +| PUT | `/bankTx/:id` | `update` | hidden | +| DELETE | `/bankTx/:id/buyCrypto` | `reset` | hidden | + +### BankAccountController + +`src/subdomains/supporting/bank/bank-account/bank-account.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/bankAccount` | `AuthGuard` | public | +| POST | `/bankAccount` | `createBankAccount` | public | +| PUT | `/bankAccount/:id` | `updateBankAccount` | public | +| POST | `/bankAccount/bic` | `addBankAccountBic` | hidden | +| POST | `/bankAccount/iban` | `addBankAccountIban` | public | + +### BankController + +`src/subdomains/supporting/bank/bank/bank.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/bank` | `getAllBanks` | public | +| PUT | `/bank/receiveIban` | `checkReceiveIban` | public | + +### DashboardFinancialController + +`src/subdomains/supporting/dashboard/dashboard-financial.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/dashboard/financial/changes` | `getFinancialChanges` | hidden | +| GET | `/dashboard/financial/changes/latest` | `getLatestChanges` | hidden | +| GET | `/dashboard/financial/latest` | `getLatestBalance` | hidden | +| GET | `/dashboard/financial/log` | `getFinancialLog` | public | +| GET | `/dashboard/financial/ref-recipients` | `getRefRewardRecipients` | hidden | + +### DashboardReconciliationController + +`src/subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/dashboard/financial/reconciliation` | `getReconciliation` | public | +| GET | `/dashboard/financial/reconciliation/overview` | `getOverview` | hidden | + +### DexController + +`src/subdomains/supporting/dex/dex.controller.ts` — 7 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/dex/check-liquidity` | `checkLiquidity` | public | +| PUT | `/dex/complete-orders` | `completeOrders` | hidden | +| GET | `/dex/liquidity-after-purchase` | `fetchTargetLiquidityAfterPurchase` | hidden | +| POST | `/dex/purchase-liquidity` | `purchaseLiquidity` | hidden | +| POST | `/dex/reserve-liquidity` | `reserveLiquidity` | hidden | +| GET | `/dex/transfer-completion` | `checkTransferCompletion` | hidden | +| POST | `/dex/transfer-liquidity` | `transferLiquidity` | hidden | + +### FiatOutputController + +`src/subdomains/supporting/fiat-output/fiat-output.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/fiatOutput` | `create` | public | +| PUT | `/fiatOutput/:id` | `update` | hidden | + +### LogController + +`src/subdomains/supporting/log/log.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/log` | `create` | public | +| PUT | `/log/:id` | `update` | hidden | +| PUT | `/log/financial/validity` | `setFinancialLogValidity` | hidden | + +### MrosController + +`src/subdomains/supporting/mros/mros.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/mros` | `getAll` | hidden | +| POST | `/mros` | `createMros` | public | +| GET | `/mros/:id` | `getById` | hidden | +| PUT | `/mros/:id` | `updateMros` | hidden | + +### NotificationController + +`src/subdomains/supporting/notification/notification.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/notification/send-mail` | `sendMail` | public | + +### PayInWebhookController + +`src/subdomains/supporting/payin/controllers/payin-webhook.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/payIn/lnurlpDeposit/:uniqueId` | `deposit` | public | +| POST | `/payIn/lnurlpPayment/:uniqueId` | `payment` | hidden | + +### PayInController + +`src/subdomains/supporting/payin/controllers/payin.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/payIn` | `createPayIn` | public | +| POST | `/payIn/poll` | `pollAddress` | hidden | +| POST | `/payIn/retry` | `retryUncertainSend` | hidden | + +### FeeController + +`src/subdomains/supporting/payment/controllers/fee.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/fee` | `createFee` | public | + +### SpecialExternalAccountController + +`src/subdomains/supporting/payment/controllers/special-external-account.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/specialExternalAccount` | `createSpecialExternalAccount` | public | + +### TransactionAdminController + +`src/subdomains/supporting/payment/controllers/transaction-admin.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/transaction/admin/:id` | `updateTransaction` | public | +| POST | `/transaction/admin/:id/stop` | `stopTransaction` | hidden | +| POST | `/transaction/admin/:txId/riskAssessment` | `createRiskAssessment` | hidden | +| PUT | `/transaction/admin/:txId/riskAssessment/:id` | `updateRiskAssessment` | hidden | + +### PayoutController + +`src/subdomains/supporting/payout/payout.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| POST | `/payout` | `doPayout` | public | +| GET | `/payout/completion` | `checkOrderCompletion` | hidden | +| POST | `/payout/retry` | `retryUncertainPayout` | hidden | +| POST | `/payout/speedup` | `speedupTransaction` | hidden | + +### PricingController + +`src/subdomains/supporting/pricing/pricing.controller.ts` — 3 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/pricing` | `getRawPrice` | hidden | +| PUT | `/pricing` | `updatePrices` | hidden | +| GET | `/pricing/price` | `getPrice` | public | + +### RealUnitComplianceController + +`src/subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` — 5 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/realunit/compliance/customers` | `searchCustomers` | public | +| GET | `/realunit/compliance/customers/:id` | `getCustomer` | hidden | +| GET | `/realunit/compliance/customers/:id/dossier` | `downloadCustomerDossier` | hidden | +| GET | `/realunit/compliance/customers/:id/files` | `getCustomerFiles` | hidden | +| GET | `/realunit/compliance/customers/:id/files/:uid` | `downloadCustomerFile` | hidden | + +### RealUnitLegalController + +`src/subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` — 2 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/realunit/legal` | `getLegal` | public | +| PUT | `/realunit/legal` | `acceptLegal` | public | + +### RealUnitSupportController + +`src/subdomains/supporting/realunit/controllers/realunit-support.controller.ts` — 10 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/realunit/support/:id` | `updateSupportIssue` | hidden | +| GET | `/realunit/support/:id/data` | `getIssueData` | hidden | +| POST | `/realunit/support/:id/message` | `createSupportMessage` | hidden | +| GET | `/realunit/support/:id/message/:messageId/file` | `getFile` | hidden | +| GET | `/realunit/support/:id/messages` | `getIssueMessages` | hidden | +| GET | `/realunit/support/activity` | `getSupportIssueActivity` | hidden | +| GET | `/realunit/support/clerks` | `getRealUnitSupportClerks` | hidden | +| GET | `/realunit/support/counts` | `getSupportIssueCounts` | hidden | +| GET | `/realunit/support/list` | `getSupportIssueList` | public | +| GET | `/realunit/support/statistics` | `getSupportIssueStatistics` | hidden | + +### RealUnitController + +`src/subdomains/supporting/realunit/controllers/realunit.controller.ts` — 47 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/realunit/account/:address` | `getAccountSummary` | public | +| GET | `/realunit/account/:address/history` | `getAccountHistory` | public | +| GET | `/realunit/admin/quotes` | `getAdminQuotes` | public | +| PUT | `/realunit/admin/quotes/:id/confirm-payment` | `confirmPaymentReceived` | hidden | +| PUT | `/realunit/admin/registration/:id/forward` | `forwardRegistration` | hidden | +| GET | `/realunit/admin/transactions` | `getAdminTransactions` | hidden | +| POST | `/realunit/balance/pdf` | `getBalancePdf` | public | +| GET | `/realunit/brokerbot/buyPrice` | `getBrokerbotBuyPrice` | public | +| GET | `/realunit/brokerbot/buyShares` | `getBrokerbotBuyShares` | public | +| GET | `/realunit/brokerbot/info` | `getBrokerbotInfo` | public | +| GET | `/realunit/brokerbot/price` | `getBrokerbotPrice` | public | +| GET | `/realunit/brokerbot/sellPrice` | `getBrokerbotSellPrice` | public | +| GET | `/realunit/brokerbot/sellShares` | `getBrokerbotSellShares` | public | +| PUT | `/realunit/buy` | `getPaymentInfo` | public | +| PUT | `/realunit/buy/:id/confirm` | `confirmBuy` | public | +| GET | `/realunit/confirm-aktionariat` | `confirmAktionariat` | public | +| GET | `/realunit/holders` | `getHolders` | public | +| GET | `/realunit/pay/:id/status` | `getOcpPayStatus` | public | +| PUT | `/realunit/pay/submit` | `submitOcpPay` | public | +| PUT | `/realunit/pay/unsigned-transaction` | `getOcpPayUnsignedTransaction` | public | +| GET | `/realunit/price` | `getRealUnitPrice` | public | +| GET | `/realunit/price/history` | `getHistoricalPrice` | public | +| GET | `/realunit/quote/buyPrice` | `getQuoteBuyPrice` | public | +| GET | `/realunit/quote/buyShares` | `getQuoteBuyShares` | public | +| GET | `/realunit/quote/info` | `getQuoteInfo` | public | +| GET | `/realunit/quote/price` | `getQuotePrice` | public | +| GET | `/realunit/quote/sellPrice` | `getQuoteSellPrice` | public | +| GET | `/realunit/quote/sellShares` | `getQuoteSellShares` | public | +| POST | `/realunit/register/complete` | `completeRegistration` | public | +| GET | `/realunit/register/date` | `getRegistrationDate` | public | +| POST | `/realunit/register/email` | `registerEmail` | public | +| GET | `/realunit/register/status` | `isRegistered` | public | +| POST | `/realunit/register/wallet` | `completeRegistrationForWalletAddress` | public | +| GET | `/realunit/registration` | `getRegistrationInfo` | public | +| PUT | `/realunit/sell` | `getSellPaymentInfo` | public | +| PUT | `/realunit/sell/:id/broadcast` | `broadcastSellTransaction` | public | +| PUT | `/realunit/sell/:id/confirm` | `confirmSell` | public | +| PUT | `/realunit/sell/:id/unsigned-transactions` | `getSellUnsignedTransactions` | public | +| PUT | `/realunit/swap` | `getSwapPaymentInfo` | public | +| PUT | `/realunit/swap/:id/broadcast` | `broadcastSwapTransaction` | public | +| PUT | `/realunit/swap/:id/unsigned-transaction` | `getSwapUnsignedTransaction` | public | +| GET | `/realunit/tokenInfo` | `getTokenInfo` | public | +| POST | `/realunit/transactions/receipt/multi` | `generateHistoryMultiReceipt` | public | +| POST | `/realunit/transactions/receipt/single` | `generateHistoryReceipt` | public | +| PUT | `/realunit/transfer` | `prepareTransfer` | public | +| PUT | `/realunit/transfer/:id/confirm` | `confirmTransfer` | public | +| GET | `/realunit/wallet/status` | `getWalletStatus` | public | + +### RecallController + +`src/subdomains/supporting/recall/recall.controller.ts` — 4 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/recall` | `getAll` | hidden | +| POST | `/recall` | `createRecall` | public | +| GET | `/recall/:id` | `getById` | hidden | +| PUT | `/recall/:id` | `updateRecall` | hidden | + +### LimitRequestController + +`src/subdomains/supporting/support-issue/limit-request.controller.ts` — 1 endpoint + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| PUT | `/limitRequest/:id` | `updateUserData` | public | + +### SupportIssueController + +`src/subdomains/supporting/support-issue/support-issue.controller.ts` — 18 endpoints + +| Method | Path | Handler | Swagger | +| ------ | ---- | ------- | ------- | +| GET | `/support/issue` | `getIssues` | public | +| POST | `/support/issue` | `createIssue` | public | +| GET | `/support/issue/:id` | `getIssue` | hidden | +| PUT | `/support/issue/:id` | `updateSupportIssue` | public | +| PUT | `/support/issue/:id/close` | `closeIssue` | public | +| GET | `/support/issue/:id/data` | `getIssueData` | hidden | +| POST | `/support/issue/:id/message` | `createSupportMessage` | hidden | +| GET | `/support/issue/:id/message/:messageId/file` | `getFile` | public | +| GET | `/support/issue/activity` | `getSupportIssueActivity` | hidden | +| GET | `/support/issue/clerk` | `getSupportIssueClerk` | hidden | +| GET | `/support/issue/clerks` | `getSupportIssueClerks` | hidden | +| GET | `/support/issue/counts` | `getSupportIssueCounts` | hidden | +| POST | `/support/issue/escalation/telegram-bind` | `bindEscalationChat` | hidden | +| GET | `/support/issue/escalation/telegram-chats` | `getEscalationChats` | hidden | +| POST | `/support/issue/escalation/telegram-test` | `testEscalationChat` | hidden | +| GET | `/support/issue/list` | `getSupportIssueList` | public | +| GET | `/support/issue/statistics` | `getSupportIssueStatistics` | hidden | +| POST | `/support/issue/support` | `createIssueBySupport` | public | + From b5cf50c4df2d3e46b94a3403581fe7e3544e6ef5 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 00:26:48 +0200 Subject: [PATCH 02/19] docs: require the endpoint inventory to be kept in sync Every PR that adds, removes, renames or re-scopes a route must now update docs/endpoints.md in the same PR. Recorded in two places: as item 5 of the PR completeness checklist, and as a section next to the REST endpoint conventions explaining how to edit the list and how to verify it. The section names the two traps that make a hand-edited list wrong: a file may declare several @Controller classes, so a route belongs to the scope preceding it rather than to the first in the file, and @Controller() without an argument places its routes at the root. It also points at the startup route log as the way to confirm that a new route is actually registered. --- CONTRIBUTING.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1a7212d758..c52a5117f8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,6 +29,7 @@ Every PR must include: 2. **Environment/Infrastructure updates** (config, environment variables) 3. **Service updates** (if DTOs/interfaces changed) 4. **Frontend synchronization** (if API contracts changed) +5. **Endpoint inventory** (if routes were added, removed, renamed or re-scoped) — [docs/endpoints.md](docs/endpoints.md) Missing any of these = changes requested. @@ -510,6 +511,19 @@ export class SupportIssueController { - Status 200 for GET (not 201) - Plain string responses are annoying — return JSON objects +### Endpoint Inventory + +[docs/endpoints.md](docs/endpoints.md) lists every route this service exposes. **Any change to the set of routes must be reflected there in the same PR** — adding, removing, renaming or re-scoping an endpoint, and equally a change to a `@Controller` base path, which moves every route beneath it. + +The file is grouped by controller file. Add or amend the row in path order and record whether the endpoint carries `@ApiExcludeEndpoint()`. + +Two details are easy to get wrong when editing the list by hand: + +- a file may declare more than one `@Controller` class, and a route belongs to the scope that **precedes** it, not to the first one in the file — `custody.controller.ts` declares both `custody` and `custody/admin` +- `@Controller()` without an argument puts its routes at the root, not under a prefix + +To verify a change, compare against the routes the framework logs at startup: every `Mapped {, }` line is one registered route. If a route you added does not appear there, it is not reachable — two routing decorators on the same handler, for instance, keep only one path. + ### Cron Jobs Use `@DfxCron` (custom wrapper with built-in locking, process control, and error handling). It replaces `@Cron` + `@Lock` + `DisabledProcess` — never combine these manually with `@DfxCron`. From 6d1ce809c41f39d35d791f73e7abca9a8e186d41 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 01:53:45 +0200 Subject: [PATCH 03/19] docs: one table for all endpoints, with eager and load-volume columns Replaces the per-controller tables with a single table sorted by path, and adds three measured columns. Eager: whether the endpoint's load path triggers TypeORM's automatic eager relations. The rule is mechanical - eager applies to the find* family, not to createQueryBuilder with an explicit field list or to raw SQL. Determined from the call chain between handler and repository; 82% of endpoints resolve, the rest are marked '?' rather than guessed. Cols and Fields: columns the query actually selects, measured against the real entity metadata by building the query and counting its SELECT list, against the field count of the declared response DTO. Ratio is the quotient where both are known. These are measurements, not estimates - a plain findOne() on UserData selects 253 columns across 8 joins, one on LimitRequest 434 across 15. Gaps are marked with an em dash and explained in a coverage section: they are limits of static analysis, not zeros. CONTRIBUTING is updated to match the new structure and states the rule for the Eager column, so it can be filled in by hand when an endpoint is added. --- CONTRIBUTING.md | 9 +- docs/endpoints.md | 1758 +++++++++++++++------------------------------ 2 files changed, 578 insertions(+), 1189 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c52a5117f8..aaed93a6a7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -515,7 +515,14 @@ export class SupportIssueController { [docs/endpoints.md](docs/endpoints.md) lists every route this service exposes. **Any change to the set of routes must be reflected there in the same PR** — adding, removing, renaming or re-scoping an endpoint, and equally a change to a `@Controller` base path, which moves every route beneath it. -The file is grouped by controller file. Add or amend the row in path order and record whether the endpoint carries `@ApiExcludeEndpoint()`. +The file is a single table sorted by path. Add or amend the row in that order and fill every column: whether the endpoint carries `@ApiExcludeEndpoint()`, and whether its load path triggers eager relations. + +The `Eager` column follows a mechanical rule — eager relations apply to the `find*` family, not to `createQueryBuilder` with an explicit field list or to raw SQL: + +- the handler reaches a `find` / `findOne` / `findBy` / `findOneBy` on a repository → `yes` +- it loads only through `createQueryBuilder(...).select([...])` or `dataSource.query(...)`, or touches no database at all → `no` + +This matters because eager relations expand recursively: a plain `findOne()` on `UserData` already selects 253 columns across 8 joins before any `relations` option is added. The `Cols`, `Fields` and `Ratio` columns are optional when adding an endpoint — they are measured, not hand-written. Two details are easy to get wrong when editing the list by hand: diff --git a/docs/endpoints.md b/docs/endpoints.md index 7e381973c1..7a01fcc492 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -1,1206 +1,588 @@ # HTTP endpoints -Complete inventory of every HTTP endpoint this service exposes: **533 handlers** across 93 controller files. 223 of them are marked `@ApiExcludeEndpoint` and therefore do not appear in the public Swagger schema. +Every HTTP endpoint this service exposes: **533 handlers** across 93 controller files. 223 are marked `@ApiExcludeEndpoint` and do not appear in the public Swagger schema. -This file is an inventory, not a usage guide. For request and response shapes use the Swagger schema; for payment links see [payment-links.md](payment-links.md). +## Columns -## Why this list exists - -It is the base for per-endpoint analysis. The intended next step is an additional column marking whether an endpoint is a **read path** — one that only reads data and renders it (invoices, receipts, history, exports) — or a write path that has to load complete entities in order to persist them. That distinction decides where a query may safely select individual fields instead of loading whole object graphs, and it cannot be derived from the HTTP verb: `PUT /transaction/:id/invoice` writes nothing, it renders a PDF. - -## How this list is produced - -Derived from the `@Get` / `@Post` / `@Put` / `@Patch` / `@Delete` decorators in `src/**/*.controller.ts`, with each endpoint attributed to the `@Controller` scope that precedes it — four files declare two controller classes with different base paths, and one declares `@Controller()` without an argument, placing its routes at the root. - -The result was cross-checked against the route list the framework registers at startup: all 526 distinct method/path pairs match, in both directions. - -## Known discrepancy - -`POST /paymentLink/integrations/kucoin/webhook/cancel` appears in the source but is **not registered at runtime**. Its handler in `src/subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` carries two `@Post` decorators, and the framework stores a single path per handler, so only `.../webhook/success` takes effect. The endpoint is listed below for completeness and marked accordingly; it is a defect to be fixed separately, not a documentation gap. - -## Endpoints - -### AppController - -`src/app.controller.ts` — 7 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/` | `home` | public | -| GET | `/app` | `createRefNew` | public | -| GET | `/app/:app` | `redirectToStore` | hidden | -| GET | `/app/advertisements` | `getAds` | hidden | -| GET | `/app/announcements` | `getAnnouncements` | public | -| GET | `/app/settings/flags` | `getFlags` | hidden | -| GET | `/version` | `getVersion` | hidden | - -### AlchemyController - -`src/integration/alchemy/controllers/alchemy.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/alchemy/addressWebhook` | `addressWebhook` | public | -| GET | `/alchemy/addresses/:webhookId` | `addresses` | public | - -### YapealWebhookController - -`src/integration/bank/controllers/yapeal-webhook.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/bank/yapeal/webhook` | `handleYapealWebhook` | public | - -### BlockchainApiController - -`src/integration/blockchain/api/controllers/blockchain-api.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/blockchain/balances` | `getBalances` | public | -| POST | `/blockchain/broadcast` | `broadcastTransaction` | public | -| POST | `/blockchain/transaction` | `createTransaction` | public | - -### NodeController - -`src/integration/blockchain/bitcoin/node/node.controller.ts` — 6 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/node/:node/:mode/cmd` | `cmdForMode` | hidden | -| POST | `/node/:node/:mode/rpc` | `rpcForMode` | hidden | -| GET | `/node/:node/:mode/tx/:txId` | `waitForTxForMode` | hidden | -| POST | `/node/:node/cmd` | `cmd` | hidden | -| POST | `/node/:node/rpc` | `rpc` | public | -| GET | `/node/:node/tx/:txId` | `waitForTx` | hidden | - -### DEuroController - -`src/integration/blockchain/deuro/controllers/deuro.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/deuro/info` | `getInfo` | public | - -### FrankencoinController - -`src/integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/frankencoin/info` | `getInfo` | public | - -### JuiceController - -`src/integration/blockchain/juice/controllers/juice.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/juice/info` | `getInfo` | public | - -### ExchangeController - -`src/integration/exchange/controllers/exchange.controller.ts` — 9 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/exchange/:exchange/balances` | `getBalance` | public | -| GET | `/exchange/:exchange/price` | `getPrice` | hidden | -| PUT | `/exchange/:exchange/sync` | `syncExchange` | hidden | -| GET | `/exchange/:exchange/trade` | `getTrades` | hidden | -| POST | `/exchange/:exchange/trade` | `trade` | hidden | -| GET | `/exchange/:exchange/trade/history` | `getTradeHistory` | hidden | -| POST | `/exchange/:exchange/withdraw` | `withdrawFunds` | hidden | -| GET | `/exchange/:exchange/withdraw/:id` | `getWithdraw` | public | -| GET | `/exchange/trade/:id` | `getTrade` | hidden | - -### IknaController - -`src/integration/ikna/controllers/ikna.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/ikna/bfs/:id` | `getBfsResult` | hidden | -| POST | `/ikna/bfs/address` | `createBfsAddressRequest` | public | -| GET | `/ikna/tag` | `getIknaAddressTag` | hidden | - -### ScorechainController - -`src/integration/scorechain/controllers/scorechain.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/scorechain/screening` | `screen` | public | - -### TatumController - -`src/integration/tatum/controllers/tatum.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/tatum/addressWebhook` | `addressWebhook` | public | - -### AssetController - -`src/shared/models/asset/asset.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/asset` | `getAllAsset` | public | -| PUT | `/asset/:id` | `updateAsset` | public | - -### CountryController - -`src/shared/models/country/country.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/country` | `getAllCountry` | public | - -### FiatController - -`src/shared/models/fiat/fiat.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/fiat` | `getAllFiat` | public | - -### LanguageController - -`src/shared/models/language/language.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/language` | `getAllLanguage` | public | - -### SettingController - -`src/shared/models/setting/setting.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/setting` | `getSettings` | public | -| PUT | `/setting/:key` | `updateSetting` | hidden | -| PUT | `/setting/customSignUpFees` | `updateCustomSignUpFees` | hidden | -| PUT | `/setting/disabledProcesses` | `updateProcess` | hidden | -| GET | `/setting/infoBanner` | `getInfoBanner` | public | - -### LedgerController - -`src/subdomains/core/accounting/controllers/ledger.controller.ts` — 6 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/dashboard/accounting/ledger/accounts` | `getAccounts` | public | -| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | `getAccountDetail` | hidden | -| GET | `/dashboard/accounting/ledger/equity-comparison` | `getEquityComparison` | hidden | -| GET | `/dashboard/accounting/ledger/margin` | `getMargin` | hidden | -| GET | `/dashboard/accounting/ledger/reconciliation` | `getReconStatus` | hidden | -| GET | `/dashboard/accounting/ledger/suspense` | `getSuspense` | hidden | - -### BuyCryptoController - -`src/subdomains/core/buy-crypto/process/buy-crypto.controller.ts` — 8 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/buyCrypto/:id` | `update` | hidden | -| PUT | `/buyCrypto/:id/amlCheck` | `manualPassAmlCheck` | hidden | -| DELETE | `/buyCrypto/:id/amlCheck` | `resetAmlCheck` | hidden | -| POST | `/buyCrypto/:id/refund` | `refundBuyCrypto` | hidden | -| POST | `/buyCrypto/:id/scorechain` | `retriggerScorechain` | hidden | -| POST | `/buyCrypto/:id/webhook` | `triggerWebhook` | public | -| PUT | `/buyCrypto/refVolumes` | `updateRefVolumes` | hidden | -| PUT | `/buyCrypto/volumes` | `updateBuyVolumes` | hidden | - -### BuyController - -`src/subdomains/core/buy-crypto/routes/buy/buy.controller.ts` — 11 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/buy` | `getAllBuy` | public | -| POST | `/buy` | `createBuy` | hidden | -| GET | `/buy/:id` | `getBuy` | hidden | -| PUT | `/buy/:id` | `updateBuyRoute` | public | -| GET | `/buy/:id/history` | `getBuyRouteHistory` | hidden | -| PUT | `/buy/paymentInfos` | `createBuyWithPaymentInfo` | public | -| PUT | `/buy/paymentInfos/:id/confirm` | `confirmBuy` | public | -| PUT | `/buy/paymentInfos/:id/invoice` | `generateInvoicePDF` | public | -| GET | `/buy/personalIban` | `getAllPersonalIbans` | public | -| POST | `/buy/personalIban` | `AuthGuard` | public | -| PUT | `/buy/quote` | `getBuyQuote` | hidden | - -### CryptoRouteController - -`src/subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/cryptoRoute` | `getAllCrypto` | public | -| POST | `/cryptoRoute` | `createCrypto` | hidden | -| GET | `/cryptoRoute/:id` | `getCrypto` | hidden | -| PUT | `/cryptoRoute/:id` | `updateCryptoRoute` | hidden | -| GET | `/cryptoRoute/:id/history` | `getCryptoRouteHistory` | hidden | - -### SwapController - -`src/subdomains/core/buy-crypto/routes/swap/swap.controller.ts` — 9 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/swap` | `getAllSwap` | public | -| POST | `/swap` | `createSwap` | hidden | -| GET | `/swap/:id` | `getSwap` | hidden | -| PUT | `/swap/:id` | `updateSwapRoute` | public | -| GET | `/swap/:id/history` | `getSwapRouteHistory` | hidden | -| PUT | `/swap/paymentInfos` | `createSwapWithPaymentInfo` | public | -| PUT | `/swap/paymentInfos/:id/confirm` | `confirmSwap` | public | -| GET | `/swap/paymentInfos/:id/tx` | `depositTx` | public | -| PUT | `/swap/quote` | `getSwapQuote` | hidden | - -### CustodyAccountController - -`src/subdomains/core/custody/controllers/custody-account.controller.ts` — 12 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/custody/account` | `getCustodyAccounts` | public | -| POST | `/custody/account` | `createCustodyAccount` | public | -| GET | `/custody/account/:id` | `getCustodyAccount` | public | -| PUT | `/custody/account/:id` | `updateCustodyAccount` | public | -| GET | `/custody/account/:id/access` | `getAccessList` | public | -| POST | `/custody/account/:id/access` | `grantAccess` | public | -| PUT | `/custody/account/:id/access/:accessId` | `updateAccess` | public | -| DELETE | `/custody/account/:id/access/:accessId` | `revokeAccess` | public | -| GET | `/custody/account/:id/balance` | `getAccountBalance` | public | -| GET | `/custody/account/:id/history` | `getAccountHistory` | public | -| GET | `/custody/account/:id/order` | `getAccountOrders` | public | -| GET | `/custody/account/:id/pdf` | `getAccountPdf` | public | - -### CustodyAdminController, CustodyController - -`src/subdomains/core/custody/controllers/custody.controller.ts` — 10 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/custody` | `getUserCustodyBalance` | public | -| POST | `/custody` | `createCustodyAccount` | public | -| POST | `/custody/admin/order/:id/approve` | `approveOrder` | public | -| GET | `/custody/admin/orders` | `getOrders` | public | -| PUT | `/custody/admin/user/:id/balance` | `updateUserBalance` | public | -| GET | `/custody/history` | `getUserCustodyHistory` | public | -| GET | `/custody/order` | `getOrders` | public | -| POST | `/custody/order` | `createOrder` | public | -| POST | `/custody/order/:id/confirm` | `confirmOrder` | public | -| GET | `/custody/pdf` | `getCustodyPdf` | public | - -### FaucetRequestController - -`src/subdomains/core/faucet-request/controller/faucet-request.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/faucet` | `faucetRequest` | public | - -### HistoryController - -`src/subdomains/core/history/controllers/history.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/history` | `getHistory` | public | -| GET | `/history/:exportType` | `getApiHistory` | hidden | -| GET | `/history/csv` | `getCsv` | hidden | -| POST | `/history/csv` | `createCsv` | public | - -### TransactionController - -`src/subdomains/core/history/controllers/transaction.controller.ts` — 16 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/transaction` | `getTransactions` | public | -| PUT | `/transaction/:id/invoice` | `generateInvoiceFromTransaction` | public | -| PUT | `/transaction/:id/receipt` | `generateReceiptFromTransaction` | public | -| GET | `/transaction/:id/refund` | `AuthGuard` | public | -| PUT | `/transaction/:id/refund` | `AuthGuard` | public | -| PUT | `/transaction/:id/target` | `setTransactionTarget` | hidden | -| GET | `/transaction/ChainReport` | `getCsvChainReport` | hidden | -| GET | `/transaction/CoinTracking` | `getCsvCT` | public | -| GET | `/transaction/csv` | `getCsv` | public | -| PUT | `/transaction/csv` | `createCsv` | public | -| GET | `/transaction/detail` | `getTransactionDetails` | hidden | -| PUT | `/transaction/detail/csv` | `createDetailCsv` | public | -| GET | `/transaction/detail/single` | `getSingleTransactionDetails` | public | -| GET | `/transaction/single` | `getSingleTransaction` | public | -| GET | `/transaction/target` | `getTransactionTargets` | hidden | -| GET | `/transaction/unassigned` | `getUnassignedTransactions` | public | - -### LiquidityBalanceController - -`src/subdomains/core/liquidity-management/controllers/balance.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/liquidityManagement/balance` | `getBalances` | public | - -### LiquidityManagementOrderController - -`src/subdomains/core/liquidity-management/controllers/order.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/liquidityManagement/order/:id/resolveUncertain` | `resolveUncertainOrder` | hidden | -| GET | `/liquidityManagement/order/in-progress` | `getProcessingOrders` | public | - -### LiquidityManagementPipelineController - -`src/subdomains/core/liquidity-management/controllers/pipeline.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/liquidityManagement/pipeline/:id/status` | `getPipelineStatus` | hidden | -| POST | `/liquidityManagement/pipeline/buy` | `buyLiquidity` | public | -| GET | `/liquidityManagement/pipeline/in-progress` | `getProcessingPipelines` | hidden | -| POST | `/liquidityManagement/pipeline/sell` | `sellLiquidity` | hidden | -| GET | `/liquidityManagement/pipeline/stopped` | `getStoppedPipelines` | hidden | - -### LiquidityManagementRuleController - -`src/subdomains/core/liquidity-management/controllers/rule.controller.ts` — 6 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/liquidityManagement/rule` | `createRule` | public | -| GET | `/liquidityManagement/rule/:id` | `getRule` | hidden | -| PUT | `/liquidityManagement/rule/:id` | `updateRule` | hidden | -| PATCH | `/liquidityManagement/rule/:id/deactivate` | `deactivateRule` | hidden | -| PATCH | `/liquidityManagement/rule/:id/reactivate` | `reactivateRule` | hidden | -| PATCH | `/liquidityManagement/rule/:id/settings` | `setReactivationTime` | hidden | - -### HealthController - -`src/subdomains/core/monitoring/health.controller.ts` — 6 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/health` | `getHealth` | public | -| GET | `/health/banking` | `getBankingHealth` | public | -| GET | `/health/external` | `getExternalHealth` | public | -| GET | `/health/liquidity` | `getLiquidityHealth` | public | -| GET | `/health/nodes` | `getNodeHealth` | public | -| GET | `/health/payment` | `getPaymentHealth` | public | - -### MonitoringController - -`src/subdomains/core/monitoring/monitoring.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/monitoring/data` | `getSystemState` | public | -| POST | `/monitoring/data` | `onWebhook` | hidden | - -### C2BPaymentLinkController - -`src/subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/paymentLink/integration/binance/activate/:id` | `activateBinancePay` | public | -| POST | `/paymentLink/integration/binance/webhook` | `binancePayWebhook` | hidden | -| POST | `/paymentLink/integration/kucoin/activate/:id` | `activateKucoinPay` | public | -| POST | `/paymentLink/integrations/kucoin/webhook/cancel` | `kucoinPayWebhook` | hidden — not registered, see above | -| POST | `/paymentLink/integrations/kucoin/webhook/success` | `kucoinPayWebhook` | hidden | - -### PaymentLinkController, PaymentLinkShortController - -`src/subdomains/core/payment-link/controllers/payment-link.controller.ts` — 22 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/paymentLink` | `getAllPaymentLinks` | public | -| POST | `/paymentLink` | `createPaymentLink` | public | -| PUT | `/paymentLink` | `updatePaymentLink` | public | -| PUT | `/paymentLink/:id` | `updatePaymentLinkAdmin` | hidden | -| DELETE | `/paymentLink/:id` | `deletePaymentLink` | hidden | -| PUT | `/paymentLink/:id/pos` | `createPosLinkAdmin` | hidden | -| PUT | `/paymentLink/assign` | `assignPaymentLink` | public | -| GET | `/paymentLink/config` | `getUserPaymentLinksConfig` | public | -| PUT | `/paymentLink/config` | `updateUserPaymentLinksConfig` | public | -| GET | `/paymentLink/history` | `getPaymentHistory` | public | -| GET | `/paymentLink/locations` | `getLocations` | public | -| POST | `/paymentLink/merchant` | `createMerchant` | public | -| GET | `/paymentLink/payment` | `createInvoicePayment` | hidden | -| POST | `/paymentLink/payment` | `createPayment` | public | -| DELETE | `/paymentLink/payment` | `cancelPayment` | public | -| PUT | `/paymentLink/payment/:id` | `updatePaymentLinkPayment` | public | -| PUT | `/paymentLink/payment/confirm` | `confirmPayment` | public | -| GET | `/paymentLink/payment/wait` | `waitForPayment` | public | -| PUT | `/paymentLink/pos` | `createPosLink` | public | -| GET | `/paymentLink/recipient` | `getPaymentRecipient` | public | -| GET | `/paymentLink/stickers` | `generateOcpStickers` | hidden | -| GET | `/plp` | `createInvoicePayment` | public | - -### PaymentStandardController - -`src/subdomains/core/payment-link/controllers/payment-standard.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/paymentLink/standard` | `getAll` | public | -| GET | `/paymentLink/standard/:id` | `getById` | public | - -### WalletAppController - -`src/subdomains/core/payment-link/controllers/wallet-app.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/paymentLink/walletApp` | `getAll` | public | -| GET | `/paymentLink/walletApp/:id` | `getById` | public | -| GET | `/paymentLink/walletApp/recommended` | `getRecommended` | public | - -### RefController - -`src/subdomains/core/referral/process/ref.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/ref` | `createRef` | public | - -### RefRewardController - -`src/subdomains/core/referral/reward/ref-reward.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/reward/ref` | `createPendingRefRewards` | hidden | -| PUT | `/reward/ref/:id` | `updateRefReward` | hidden | -| POST | `/reward/ref/manual` | `createManualRefReward` | hidden | -| PUT | `/reward/ref/volumes` | `updateVolumes` | public | - -### RouteController - -`src/subdomains/core/route/route.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/route` | `getAllRoutes` | public | -| PUT | `/route/:id` | `updateRoute` | hidden | - -### BuyFiatController - -`src/subdomains/core/sell-crypto/process/buy-fiat.controller.ts` — 8 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/buyFiat/:id` | `update` | hidden | -| PUT | `/buyFiat/:id/amlCheck` | `manualPassAmlCheck` | hidden | -| DELETE | `/buyFiat/:id/amlCheck` | `resetAmlCheck` | hidden | -| POST | `/buyFiat/:id/refund` | `refundBuyFiat` | hidden | -| POST | `/buyFiat/:id/scorechain` | `retriggerScorechain` | hidden | -| POST | `/buyFiat/:id/webhook` | `triggerWebhook` | public | -| PUT | `/buyFiat/refVolumes` | `updateRefVolumes` | hidden | -| PUT | `/buyFiat/volumes` | `updateVolumes` | hidden | - -### SellController - -`src/subdomains/core/sell-crypto/route/sell.controller.ts` — 9 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/sell` | `getAllSell` | public | -| POST | `/sell` | `createSell` | hidden | -| GET | `/sell/:id` | `getSell` | hidden | -| PUT | `/sell/:id` | `updateSell` | public | -| GET | `/sell/:id/history` | `getSellRouteHistory` | hidden | -| PUT | `/sell/paymentInfos` | `createSellWithPaymentInfo` | public | -| PUT | `/sell/paymentInfos/:id/confirm` | `confirmSell` | public | -| GET | `/sell/paymentInfos/:id/tx` | `depositTx` | public | -| PUT | `/sell/quote` | `getSellQuote` | hidden | - -### StatisticController - -`src/subdomains/core/statistic/statistic.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/statistic` | `getAll` | public | -| GET | `/statistic/status` | `getStatus` | public | -| GET | `/statistic/transactions` | `getTransactions` | public | - -### TradingRuleController +| Column | Meaning | +| ------ | ------- | +| **Swagger** | `public` — in the Swagger schema; `hidden` — carries `@ApiExcludeEndpoint` | +| **Eager** | Whether the load path triggers TypeORM's automatic eager relations. `yes` — reached through `find`/`findOne` on a repository; `no` — reached only through `createQueryBuilder` with an explicit field list or raw SQL, or no database access at all; `?` — the call chain could not be resolved statically | +| **Cols** | Columns the query actually selects, measured from the TypeORM metadata (largest load site reachable from the handler) | +| **Fields** | Fields of the response DTO, nested DTOs included | +| **Ratio** | Cols ÷ Fields — how much is loaded per field returned | -`src/subdomains/core/trading/controllers/trading-rule.controller.ts` — 1 endpoint +`—` means the value could not be determined statically, **not** that it is zero. See *Coverage* below. -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/trading/rule/:id` | `update` | public | - -### AdminController - -`src/subdomains/generic/admin/admin.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/admin/lightning/rotate-webhook-secrets` | `rotateLightningWebhookSecrets` | hidden | -| POST | `/admin/mail` | `sendMail` | public | -| POST | `/admin/payout` | `payout` | hidden | -| POST | `/admin/sendLetter` | `sendLetter` | hidden | - -### LnurldForwardController - -`src/subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/lnurld/:id` | `lnurldForward` | public | -| GET | `/lnurld/cb/:id/:var` | `lnurldCallbackForward` | public | - -### LnUrlPForwardController - -`src/subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` — 6 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/lnurlp/:id` | `lnUrlPForward` | public | -| POST | `/lnurlp/:id` | `activatePublicPayment` | public | -| DELETE | `/lnurlp/cancel/:id` | `cancelPayment` | public | -| GET | `/lnurlp/cb/:id` | `lnUrlPCallbackForward` | public | -| GET | `/lnurlp/tx/:id` | `txHexForward` | public | -| GET | `/lnurlp/wait/:id` | `waitForPayment` | public | - -### LnUrlWForwardController - -`src/subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/lnurlw/:id` | `lnUrlWForward` | public | -| GET | `/lnurlw/cb/:id` | `lnUrlWCallbackForward` | public | - -### PaymentForwardController - -`src/subdomains/generic/forwarding/controllers/payment-forward.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/pl` | `lnUrlPForward` | public | - -### GsEvmController - -`src/subdomains/generic/gs/gs-evm.controller.ts` — 6 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/gs/evm/bridgeApproval` | `approveBridge` | hidden | -| POST | `/gs/evm/coinTransaction` | `sendCoinTransaction` | hidden | -| POST | `/gs/evm/contractApproval` | `approveContract` | hidden | -| POST | `/gs/evm/contractTransaction` | `sendContractTransaction` | hidden | -| POST | `/gs/evm/rawTransaction` | `sendRawTransaction` | public | -| POST | `/gs/evm/tokenTransaction` | `sendTokenTransaction` | hidden | - -### GsController - -`src/subdomains/generic/gs/gs.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/gs/db` | `getDbData` | public | -| POST | `/gs/db/custom` | `getExtendedData` | hidden | -| POST | `/gs/debug` | `executeDebugQuery` | hidden | -| GET | `/gs/support` | `getSupportData` | hidden | - -### KycAdminController - -`src/subdomains/generic/kyc/controllers/kyc-admin.controller.ts` — 8 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/kyc/admin/blacklist/ip` | `addIpToBlacklist` | hidden | -| DELETE | `/kyc/admin/blacklist/ip` | `deleteIpToBlacklist` | hidden | -| POST | `/kyc/admin/ident/file/sync` | `syncIdentFiles` | hidden | -| POST | `/kyc/admin/log` | `createLog` | hidden | -| PUT | `/kyc/admin/log/:id` | `updateLog` | hidden | -| PUT | `/kyc/admin/nameCheck/:id` | `updateNameCheckLog` | public | -| PUT | `/kyc/admin/step/:id` | `updateKycStep` | hidden | -| POST | `/kyc/admin/webhook` | `triggerWebhook` | hidden | - -### KycClientController - -`src/subdomains/generic/kyc/controllers/kyc-client.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/kyc/client/payments` | `getAllPayments` | public | -| GET | `/kyc/client/users` | `getAllKycData` | public | -| GET | `/kyc/client/users/:id/documents` | `getKycFiles` | public | -| GET | `/kyc/client/users/:id/documents/:type` | `getKycFile` | public | -| GET | `/kyc/client/users/:id/payments` | `getUserPayments` | public | - -### KycController - -`src/subdomains/generic/kyc/controllers/kyc.controller.ts` — 34 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/kyc` | `getKycLevel` | public | -| PUT | `/kyc` | `continueKyc` | public | -| GET | `/kyc/2fa` | `check2fa` | public | -| POST | `/kyc/2fa` | `start2fa` | public | -| POST | `/kyc/2fa/verify` | `verify2fa` | public | -| GET | `/kyc/:step` | `initiateStep` | public | -| GET | `/kyc/countries` | `getKycCountries` | public | -| DELETE | `/kyc/data/:type/:id` | `cancelStep` | hidden | -| PUT | `/kyc/data/additional/:id` | `updateAdditionalDocumentsData` | public | -| PUT | `/kyc/data/address/:id` | `updateAddressChangeData` | public | -| PUT | `/kyc/data/authority/:id` | `updateAuthorityData` | public | -| PUT | `/kyc/data/beneficial/:id` | `updateBeneficialData` | public | -| PUT | `/kyc/data/confirmation/:id` | `updateSoleProprietorshipConfirmationData` | public | -| PUT | `/kyc/data/contact/:id` | `updateContactData` | hidden | -| GET | `/kyc/data/financial/:id` | `getFinancialData` | public | -| PUT | `/kyc/data/financial/:id` | `updateFinancialData` | public | -| PUT | `/kyc/data/legal/:id` | `updateCommercialRegisterData` | public | -| PUT | `/kyc/data/name/:id` | `updateNameChangeData` | public | -| PUT | `/kyc/data/nationality/:id` | `updateNationalityData` | public | -| PUT | `/kyc/data/operational/:id` | `updateOperationalData` | public | -| PUT | `/kyc/data/owner/:id` | `updateOwnerDirectoryData` | public | -| PUT | `/kyc/data/payment/:id` | `updatePaymentsData` | public | -| PUT | `/kyc/data/personal/:id` | `updatePersonalData` | public | -| PUT | `/kyc/data/phone/:id` | `updatePhoneChangeData` | public | -| PUT | `/kyc/data/recall/:id` | `updateRecallAgreement` | public | -| PUT | `/kyc/data/recommendation/:id` | `updateRecommendationData` | public | -| PUT | `/kyc/data/residence/:id` | `updateResidencePermitData` | public | -| PUT | `/kyc/data/signatory/:id` | `updateSignatoryPowerData` | public | -| PUT | `/kyc/data/statutes/:id` | `updateStatutesData` | public | -| GET | `/kyc/file/:id` | `getFile` | hidden | -| PUT | `/kyc/ident/manual/:id` | `updateIdentData` | hidden | -| POST | `/kyc/ident/sumsub` | `sumsubWebhook` | public | -| POST | `/kyc/transfer` | `addKycClient` | hidden | -| DELETE | `/kyc/transfer` | `removeKycClient` | hidden | - -### SupportController - -`src/subdomains/generic/support/support.controller.ts` — 27 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/support` | `searchUserByKey` | public | -| GET | `/support/:id` | `getUserData` | hidden | -| GET | `/support/:id/ip-log-pdf` | `getIpLogPdf` | hidden | -| POST | `/support/:id/onboarding-pdf` | `generateOnboardingPdf` | hidden | -| GET | `/support/:id/scorechain` | `getScorechainScreenings` | hidden | -| GET | `/support/:id/transaction-pdf` | `getTransactionPdf` | hidden | -| GET | `/support/call-queues` | `getCallQueues` | hidden | -| GET | `/support/call-queues/:queue/items` | `getCallQueueItems` | hidden | -| GET | `/support/call-queues/clerks` | `getCallQueueClerks` | hidden | -| GET | `/support/kycFileList` | `getKycFileList` | hidden | -| GET | `/support/kycFileStats` | `getKycFileStats` | hidden | -| GET | `/support/note` | `getNotes` | hidden | -| POST | `/support/note` | `createNote` | hidden | -| PUT | `/support/note/:id` | `updateNote` | hidden | -| DELETE | `/support/note/:id` | `deleteNote` | hidden | -| GET | `/support/note/users` | `listNoteUsers` | hidden | -| GET | `/support/pending-reviews` | `getPendingReviews` | hidden | -| GET | `/support/pending-reviews/items` | `getPendingReviewItems` | hidden | -| GET | `/support/pending-transactions` | `getPendingTransactions` | hidden | -| GET | `/support/recommendation-graph/:id/neighbors` | `getRecommendationGraphNeighbors` | hidden | -| GET | `/support/template` | `getTemplates` | hidden | -| POST | `/support/template` | `createTemplate` | hidden | -| PUT | `/support/template/:id` | `updateTemplate` | hidden | -| DELETE | `/support/template/:id` | `deleteTemplate` | hidden | -| GET | `/support/transaction/:id/refund` | `getTransactionRefund` | hidden | -| PUT | `/support/transaction/:id/refund` | `setTransactionRefund` | hidden | -| GET | `/support/transactionList` | `getTransactionList` | hidden | - -### AuthLnurlController - -`src/subdomains/generic/user/models/auth/auth-lnurl.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/lnurla` | `signInWithLnurlAuth` | public | -| POST | `/lnurla` | `getLnurlAuth` | public | -| GET | `/lnurla/status` | `lnurlAuthStatus` | public | - -### AuthController - -`src/subdomains/generic/user/models/auth/auth.controller.ts` — 14 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/auth` | `authenticate` | public | -| GET | `/auth/2fa` | `check2fa` | hidden | -| POST | `/auth/2fa` | `setup2fa` | public | -| POST | `/auth/2fa/verify` | `verify2fa` | public | -| GET | `/auth/alby` | `signInWithAlby` | hidden | -| GET | `/auth/alby/redirect/:id` | `redirectAlby` | hidden | -| GET | `/auth/challenge` | `companyChallenge` | hidden | -| POST | `/auth/mail` | `signInByMail` | hidden | -| GET | `/auth/mail/confirm` | `executeMerge` | public | -| GET | `/auth/mail/redirect` | `redirectMail` | hidden | -| POST | `/auth/signIn` | `signIn` | hidden | -| GET | `/auth/signMessage` | `getSignMessage` | public | -| POST | `/auth/signUp` | `signUp` | public | -| GET | `/auth/verifySignature` | `verifySignMessage` | public | - -### BankDataController - -`src/subdomains/generic/user/models/bank-data/bank-data.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/bankData/:id` | `updateBankData` | public | -| PUT | `/bankData/:id/nameCheck` | `doNameCheck` | hidden | - -### CustodyProviderController - -`src/subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/CustodyProvider` | `createCustodyProvider` | public | -| PUT | `/CustodyProvider/:id` | `updateCustodyProvider` | hidden | - -### KycClientController, KycController - -`src/subdomains/generic/user/models/kyc/kyc.controller.ts` — 10 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/kyc` | `getKycProgressV1` | public | -| POST | `/kyc` | `requestKycV1` | public | -| GET | `/kyc/:code` | `getKycProgressByCodeV1` | public | -| POST | `/kyc/:code` | `requestKycByCodeV1` | public | -| GET | `/kyc/:code/countries` | `getKycCountriesByCodeV1` | public | -| GET | `/kyc/:id/documents` | `getKycFilesV1` | public | -| GET | `/kyc/:id/documents/:type` | `getKycFileV1` | public | -| GET | `/kyc/countries` | `getKycCountriesV1` | public | -| PUT | `/kyc/transfer` | `transferKycDataV1` | public | -| GET | `/kyc/users` | `getAllKycDataV1` | public | - -### RecommendationController - -`src/subdomains/generic/user/models/recommendation/recommendation.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/recommendation` | `getAllRecommendation` | public | -| POST | `/recommendation` | `createRecommendation` | hidden | -| PUT | `/recommendation/:id/confirm` | `confirmRecommendation` | hidden | -| PUT | `/recommendation/:id/reject` | `rejectRecommendation` | hidden | - -### UserDataRelationController - -`src/subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/userDataRelation` | `create` | public | -| PUT | `/userDataRelation/:id` | `update` | public | -| DELETE | `/userDataRelation/:id` | `delete` | public | - -### UserDataController - -`src/subdomains/generic/user/models/user-data/user-data.controller.ts` — 12 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/userData` | `getAllUserData` | public | -| POST | `/userData` | `createEmptyUserData` | hidden | -| GET | `/userData/:id` | `getUserData` | public | -| PUT | `/userData/:id` | `updateUserData` | hidden | -| PUT | `/userData/:id/bankDatas` | `addBankData` | hidden | -| PUT | `/userData/:id/fee` | `addFee` | hidden | -| DELETE | `/userData/:id/fee` | `removeFee` | hidden | -| POST | `/userData/:id/kycFile` | `uploadKycFile` | hidden | -| PUT | `/userData/:id/merge` | `mergeUserData` | hidden | -| PUT | `/userData/:id/volumes` | `updateVolumes` | hidden | -| PUT | `/userData/auditPeriodNumbers` | `calculateAuditPeriodNumbers` | hidden | -| POST | `/userData/download` | `downloadUserData` | public | - -### UserController, UserV2Controller - -`src/subdomains/generic/user/models/user/user.controller.ts` — 26 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/user` | `getUserV1` | public | -| GET | `/user` | `AuthGuard` | public | -| PUT | `/user` | `updateUserV1` | public | -| PUT | `/user` | `updateUser` | public | -| DELETE | `/user` | `AuthGuard` | public | -| DELETE | `/user` | `deleteAccount` | public | -| PUT | `/user/:id` | `updateUserAdmin` | hidden | -| DELETE | `/user/account` | `deleteUserAccount` | public | -| PUT | `/user/addresses/:address` | `updateAddress` | public | -| DELETE | `/user/addresses/:address` | `AuthGuard` | public | -| PUT | `/user/apiFilter/CT` | `updateApiFilter` | public | -| POST | `/user/apiKey/CT` | `createApiKey` | public | -| DELETE | `/user/apiKey/CT` | `deleteApiKey` | public | -| POST | `/user/change` | `changeUser` | public | -| POST | `/user/data` | `updateKycData` | hidden | -| GET | `/user/detail` | `getUserDetailV1` | public | -| PUT | `/user/discountCodes` | `addDiscountCode` | public | -| PUT | `/user/mail` | `updateUserMail` | public | -| POST | `/user/mail/verify` | `verifyMail` | public | -| PUT | `/user/name` | `updateUserName` | public | -| GET | `/user/profile` | `getProfile` | public | -| GET | `/user/ref` | `getRefInfo` | public | -| GET | `/user/ref` | `getRef` | public | -| PUT | `/user/ref` | `updateRefAsset` | public | -| PUT | `/user/specialCodes` | `addSpecialCode` | public | -| GET | `/user/volumes` | `getVolumes` | hidden | - -### WalletController - -`src/subdomains/generic/user/models/wallet/wallet.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/wallet` | `createWallet` | public | -| PUT | `/wallet/:id` | `updateWallet` | hidden | - -### DepositController - -`src/subdomains/supporting/address-pool/deposit/deposit.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/deposit` | `createDeposits` | public | -| PUT | `/deposit/lightningWebhook` | `updateLightningDepositWebhook` | hidden | - -### BalanceController - -`src/subdomains/supporting/balance/controllers/balance.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/balance/pdf` | `getBalancePdf` | public | -| GET | `/balance/pdf/blockchains` | `getSupportedBlockchains` | public | - -### BankTxRepeatController - -`src/subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/bankTxRepeat/:id` | `update` | public | - -### BankTxReturnController - -`src/subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/bankTxReturn/:id` | `update` | public | -| POST | `/bankTxReturn/:id/refund` | `refundBuyCrypto` | hidden | - -### BankTxController - -`src/subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/bankTx` | `uploadSepaFiles` | public | -| PUT | `/bankTx/:id` | `update` | hidden | -| DELETE | `/bankTx/:id/buyCrypto` | `reset` | hidden | - -### BankAccountController - -`src/subdomains/supporting/bank/bank-account/bank-account.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/bankAccount` | `AuthGuard` | public | -| POST | `/bankAccount` | `createBankAccount` | public | -| PUT | `/bankAccount/:id` | `updateBankAccount` | public | -| POST | `/bankAccount/bic` | `addBankAccountBic` | hidden | -| POST | `/bankAccount/iban` | `addBankAccountIban` | public | - -### BankController - -`src/subdomains/supporting/bank/bank/bank.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/bank` | `getAllBanks` | public | -| PUT | `/bank/receiveIban` | `checkReceiveIban` | public | - -### DashboardFinancialController - -`src/subdomains/supporting/dashboard/dashboard-financial.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/dashboard/financial/changes` | `getFinancialChanges` | hidden | -| GET | `/dashboard/financial/changes/latest` | `getLatestChanges` | hidden | -| GET | `/dashboard/financial/latest` | `getLatestBalance` | hidden | -| GET | `/dashboard/financial/log` | `getFinancialLog` | public | -| GET | `/dashboard/financial/ref-recipients` | `getRefRewardRecipients` | hidden | - -### DashboardReconciliationController - -`src/subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/dashboard/financial/reconciliation` | `getReconciliation` | public | -| GET | `/dashboard/financial/reconciliation/overview` | `getOverview` | hidden | - -### DexController - -`src/subdomains/supporting/dex/dex.controller.ts` — 7 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/dex/check-liquidity` | `checkLiquidity` | public | -| PUT | `/dex/complete-orders` | `completeOrders` | hidden | -| GET | `/dex/liquidity-after-purchase` | `fetchTargetLiquidityAfterPurchase` | hidden | -| POST | `/dex/purchase-liquidity` | `purchaseLiquidity` | hidden | -| POST | `/dex/reserve-liquidity` | `reserveLiquidity` | hidden | -| GET | `/dex/transfer-completion` | `checkTransferCompletion` | hidden | -| POST | `/dex/transfer-liquidity` | `transferLiquidity` | hidden | - -### FiatOutputController - -`src/subdomains/supporting/fiat-output/fiat-output.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/fiatOutput` | `create` | public | -| PUT | `/fiatOutput/:id` | `update` | hidden | - -### LogController - -`src/subdomains/supporting/log/log.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/log` | `create` | public | -| PUT | `/log/:id` | `update` | hidden | -| PUT | `/log/financial/validity` | `setFinancialLogValidity` | hidden | - -### MrosController - -`src/subdomains/supporting/mros/mros.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/mros` | `getAll` | hidden | -| POST | `/mros` | `createMros` | public | -| GET | `/mros/:id` | `getById` | hidden | -| PUT | `/mros/:id` | `updateMros` | hidden | - -### NotificationController - -`src/subdomains/supporting/notification/notification.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/notification/send-mail` | `sendMail` | public | - -### PayInWebhookController - -`src/subdomains/supporting/payin/controllers/payin-webhook.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/payIn/lnurlpDeposit/:uniqueId` | `deposit` | public | -| POST | `/payIn/lnurlpPayment/:uniqueId` | `payment` | hidden | - -### PayInController - -`src/subdomains/supporting/payin/controllers/payin.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/payIn` | `createPayIn` | public | -| POST | `/payIn/poll` | `pollAddress` | hidden | -| POST | `/payIn/retry` | `retryUncertainSend` | hidden | - -### FeeController - -`src/subdomains/supporting/payment/controllers/fee.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/fee` | `createFee` | public | - -### SpecialExternalAccountController - -`src/subdomains/supporting/payment/controllers/special-external-account.controller.ts` — 1 endpoint - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/specialExternalAccount` | `createSpecialExternalAccount` | public | - -### TransactionAdminController - -`src/subdomains/supporting/payment/controllers/transaction-admin.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/transaction/admin/:id` | `updateTransaction` | public | -| POST | `/transaction/admin/:id/stop` | `stopTransaction` | hidden | -| POST | `/transaction/admin/:txId/riskAssessment` | `createRiskAssessment` | hidden | -| PUT | `/transaction/admin/:txId/riskAssessment/:id` | `updateRiskAssessment` | hidden | - -### PayoutController - -`src/subdomains/supporting/payout/payout.controller.ts` — 4 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| POST | `/payout` | `doPayout` | public | -| GET | `/payout/completion` | `checkOrderCompletion` | hidden | -| POST | `/payout/retry` | `retryUncertainPayout` | hidden | -| POST | `/payout/speedup` | `speedupTransaction` | hidden | - -### PricingController - -`src/subdomains/supporting/pricing/pricing.controller.ts` — 3 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/pricing` | `getRawPrice` | hidden | -| PUT | `/pricing` | `updatePrices` | hidden | -| GET | `/pricing/price` | `getPrice` | public | - -### RealUnitComplianceController - -`src/subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` — 5 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/realunit/compliance/customers` | `searchCustomers` | public | -| GET | `/realunit/compliance/customers/:id` | `getCustomer` | hidden | -| GET | `/realunit/compliance/customers/:id/dossier` | `downloadCustomerDossier` | hidden | -| GET | `/realunit/compliance/customers/:id/files` | `getCustomerFiles` | hidden | -| GET | `/realunit/compliance/customers/:id/files/:uid` | `downloadCustomerFile` | hidden | - -### RealUnitLegalController - -`src/subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` — 2 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/realunit/legal` | `getLegal` | public | -| PUT | `/realunit/legal` | `acceptLegal` | public | - -### RealUnitSupportController - -`src/subdomains/supporting/realunit/controllers/realunit-support.controller.ts` — 10 endpoints - -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/realunit/support/:id` | `updateSupportIssue` | hidden | -| GET | `/realunit/support/:id/data` | `getIssueData` | hidden | -| POST | `/realunit/support/:id/message` | `createSupportMessage` | hidden | -| GET | `/realunit/support/:id/message/:messageId/file` | `getFile` | hidden | -| GET | `/realunit/support/:id/messages` | `getIssueMessages` | hidden | -| GET | `/realunit/support/activity` | `getSupportIssueActivity` | hidden | -| GET | `/realunit/support/clerks` | `getRealUnitSupportClerks` | hidden | -| GET | `/realunit/support/counts` | `getSupportIssueCounts` | hidden | -| GET | `/realunit/support/list` | `getSupportIssueList` | public | -| GET | `/realunit/support/statistics` | `getSupportIssueStatistics` | hidden | - -### RealUnitController +## Why this list exists -`src/subdomains/supporting/realunit/controllers/realunit.controller.ts` — 47 endpoints +`Eager = yes` marks the endpoints that load whole object graphs instead of the fields they return. TypeORM expands eager relations recursively, so a plain `findOne()` on `UserData` already selects 253 columns across 8 joins, and one on `LimitRequest` selects 434 across 15 — before any `relations` option is added. Endpoints reached only through a query builder with an explicit field list do not have that property. -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/realunit/account/:address` | `getAccountSummary` | public | -| GET | `/realunit/account/:address/history` | `getAccountHistory` | public | -| GET | `/realunit/admin/quotes` | `getAdminQuotes` | public | -| PUT | `/realunit/admin/quotes/:id/confirm-payment` | `confirmPaymentReceived` | hidden | -| PUT | `/realunit/admin/registration/:id/forward` | `forwardRegistration` | hidden | -| GET | `/realunit/admin/transactions` | `getAdminTransactions` | hidden | -| POST | `/realunit/balance/pdf` | `getBalancePdf` | public | -| GET | `/realunit/brokerbot/buyPrice` | `getBrokerbotBuyPrice` | public | -| GET | `/realunit/brokerbot/buyShares` | `getBrokerbotBuyShares` | public | -| GET | `/realunit/brokerbot/info` | `getBrokerbotInfo` | public | -| GET | `/realunit/brokerbot/price` | `getBrokerbotPrice` | public | -| GET | `/realunit/brokerbot/sellPrice` | `getBrokerbotSellPrice` | public | -| GET | `/realunit/brokerbot/sellShares` | `getBrokerbotSellShares` | public | -| PUT | `/realunit/buy` | `getPaymentInfo` | public | -| PUT | `/realunit/buy/:id/confirm` | `confirmBuy` | public | -| GET | `/realunit/confirm-aktionariat` | `confirmAktionariat` | public | -| GET | `/realunit/holders` | `getHolders` | public | -| GET | `/realunit/pay/:id/status` | `getOcpPayStatus` | public | -| PUT | `/realunit/pay/submit` | `submitOcpPay` | public | -| PUT | `/realunit/pay/unsigned-transaction` | `getOcpPayUnsignedTransaction` | public | -| GET | `/realunit/price` | `getRealUnitPrice` | public | -| GET | `/realunit/price/history` | `getHistoricalPrice` | public | -| GET | `/realunit/quote/buyPrice` | `getQuoteBuyPrice` | public | -| GET | `/realunit/quote/buyShares` | `getQuoteBuyShares` | public | -| GET | `/realunit/quote/info` | `getQuoteInfo` | public | -| GET | `/realunit/quote/price` | `getQuotePrice` | public | -| GET | `/realunit/quote/sellPrice` | `getQuoteSellPrice` | public | -| GET | `/realunit/quote/sellShares` | `getQuoteSellShares` | public | -| POST | `/realunit/register/complete` | `completeRegistration` | public | -| GET | `/realunit/register/date` | `getRegistrationDate` | public | -| POST | `/realunit/register/email` | `registerEmail` | public | -| GET | `/realunit/register/status` | `isRegistered` | public | -| POST | `/realunit/register/wallet` | `completeRegistrationForWalletAddress` | public | -| GET | `/realunit/registration` | `getRegistrationInfo` | public | -| PUT | `/realunit/sell` | `getSellPaymentInfo` | public | -| PUT | `/realunit/sell/:id/broadcast` | `broadcastSellTransaction` | public | -| PUT | `/realunit/sell/:id/confirm` | `confirmSell` | public | -| PUT | `/realunit/sell/:id/unsigned-transactions` | `getSellUnsignedTransactions` | public | -| PUT | `/realunit/swap` | `getSwapPaymentInfo` | public | -| PUT | `/realunit/swap/:id/broadcast` | `broadcastSwapTransaction` | public | -| PUT | `/realunit/swap/:id/unsigned-transaction` | `getSwapUnsignedTransaction` | public | -| GET | `/realunit/tokenInfo` | `getTokenInfo` | public | -| POST | `/realunit/transactions/receipt/multi` | `generateHistoryMultiReceipt` | public | -| POST | `/realunit/transactions/receipt/single` | `generateHistoryReceipt` | public | -| PUT | `/realunit/transfer` | `prepareTransfer` | public | -| PUT | `/realunit/transfer/:id/confirm` | `confirmTransfer` | public | -| GET | `/realunit/wallet/status` | `getWalletStatus` | public | +The `Ratio` column quantifies it where both sides are known. It is the basis for deciding which read paths are worth converting to explicit projections. -### RecallController +## How the values are produced -`src/subdomains/supporting/recall/recall.controller.ts` — 4 endpoints +- **Endpoints** — from the routing decorators in `src/**/*.controller.ts`, each attributed to the `@Controller` scope preceding it. Four files declare two controller classes with different base paths, one declares `@Controller()` without an argument. Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match. +- **Eager** — from the call chain between handler and repository (up to four levels). The rule is mechanical: eager relations apply to the `find*` family, not to `createQueryBuilder` or raw SQL. +- **Cols** — measured against the real entity metadata: the query is built and its SELECT list counted. Not an estimate. +- **Fields** — field count of the declared response DTO, nested DTOs resolved recursively. -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/recall` | `getAll` | hidden | -| POST | `/recall` | `createRecall` | public | -| GET | `/recall/:id` | `getById` | hidden | -| PUT | `/recall/:id` | `updateRecall` | hidden | +## Coverage -### LimitRequestController +| | Endpoints | Share | +| --- | --- | --- | +| Eager determined (`yes`/`no`) | 437 | 82 % | +| — of those `yes` | 244 | | +| — of those `no` | 193 | | +| Eager unresolved (`?`) | 96 | 18 % | +| Column count measured | 245 | 46 % | +| Response DTO recognised | 215 | 40 % | +| Both, so `Ratio` available | 111 | 21 % | -`src/subdomains/supporting/support-issue/limit-request.controller.ts` — 1 endpoint +The gaps are honest limits of static analysis, not zeros. `Eager = ?` means a call in the chain could not be attributed — typically a service resolved through inheritance or a dynamically chosen target. A missing `Cols` means no load site was attributable to the handler; a missing `Fields` means the endpoint declares no DTO return type (`void`, a raw string, `StreamableFile`, or an entity). -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| PUT | `/limitRequest/:id` | `updateUserData` | public | +Where both sides are known, the median ratio is **16×** — 14 endpoints exceed 100×. -### SupportIssueController +## Known discrepancy -`src/subdomains/supporting/support-issue/support-issue.controller.ts` — 18 endpoints +`POST /paymentLink/integrations/kucoin/webhook/cancel` appears in the source but is **not registered at runtime**: its handler in `c2b-payment-link.controller.ts` carries two `@Post` decorators, and the framework stores a single path per handler, so only `.../webhook/success` takes effect. Listed below for completeness and marked accordingly. -| Method | Path | Handler | Swagger | -| ------ | ---- | ------- | ------- | -| GET | `/support/issue` | `getIssues` | public | -| POST | `/support/issue` | `createIssue` | public | -| GET | `/support/issue/:id` | `getIssue` | hidden | -| PUT | `/support/issue/:id` | `updateSupportIssue` | public | -| PUT | `/support/issue/:id/close` | `closeIssue` | public | -| GET | `/support/issue/:id/data` | `getIssueData` | hidden | -| POST | `/support/issue/:id/message` | `createSupportMessage` | hidden | -| GET | `/support/issue/:id/message/:messageId/file` | `getFile` | public | -| GET | `/support/issue/activity` | `getSupportIssueActivity` | hidden | -| GET | `/support/issue/clerk` | `getSupportIssueClerk` | hidden | -| GET | `/support/issue/clerks` | `getSupportIssueClerks` | hidden | -| GET | `/support/issue/counts` | `getSupportIssueCounts` | hidden | -| POST | `/support/issue/escalation/telegram-bind` | `bindEscalationChat` | hidden | -| GET | `/support/issue/escalation/telegram-chats` | `getEscalationChats` | hidden | -| POST | `/support/issue/escalation/telegram-test` | `testEscalationChat` | hidden | -| GET | `/support/issue/list` | `getSupportIssueList` | public | -| GET | `/support/issue/statistics` | `getSupportIssueStatistics` | hidden | -| POST | `/support/issue/support` | `createIssueBySupport` | public | +## Endpoints +| Method | Path | Swagger | Eager | Cols | Fields | Ratio | Handler | File | +| ------ | ---- | ------- | ----- | ---: | -----: | ----: | ------- | ---- | +| GET | `/` | public | no | — | — | — | `AppController.home` | `app.controller.ts` | +| POST | `/CustodyProvider` | public | ? | — | — | — | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| PUT | `/CustodyProvider/:id` | hidden | yes | 6 | — | — | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | no | — | — | — | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/mail` | public | ? | — | — | — | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/payout` | hidden | yes | 156 | — | — | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/sendLetter` | hidden | no | — | — | — | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/alchemy/addressWebhook` | public | ? | — | — | — | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/alchemy/addresses/:webhookId` | public | no | — | — | — | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/app` | public | yes | 6 | — | — | `AppController.createRefNew` | `app.controller.ts` | +| GET | `/app/:app` | hidden | yes | 6 | — | — | `AppController.redirectToStore` | `app.controller.ts` | +| GET | `/app/advertisements` | hidden | no | — | — | — | `AppController.getAds` | `app.controller.ts` | +| GET | `/app/announcements` | public | no | — | 3 | — | `AppController.getAnnouncements` | `app.controller.ts` | +| GET | `/app/settings/flags` | hidden | no | — | 7 | — | `AppController.getFlags` | `app.controller.ts` | +| GET | `/asset` | public | no | — | 3 | — | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | `/asset/:id` | public | yes | 33 | — | — | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| POST | `/auth` | public | ? | — | 1 | — | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/2fa` | hidden | no | — | — | — | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa` | public | no | — | 3 | — | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa/verify` | public | yes | 253 | — | — | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby` | hidden | ? | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby/redirect/:id` | hidden | ? | — | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/challenge` | hidden | yes | 20 | 1 | 20× | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/mail` | hidden | yes | 20 | — | — | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/mail/confirm` | public | yes | 470 | 2 | 235× | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/mail/redirect` | hidden | yes | 253 | 1 | 253× | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signIn` | hidden | yes | 23 | 1 | 23× | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/signMessage` | public | no | — | 1 | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signUp` | public | no | — | 1 | — | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/verifySignature` | public | yes | 6 | 1 | 6× | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/balance/pdf` | public | no | — | 1 | — | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | `/balance/pdf/blockchains` | public | no | — | — | — | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | `/bank` | public | yes | 13 | 4 | 3× | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| PUT | `/bank/receiveIban` | public | yes | 101 | 1 | 101× | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| POST | `/bank/yapeal/webhook` | public | no | — | — | — | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| GET | `/bankAccount` | public | yes | 261 | 14 | 19× | `BankAccountController.AuthGuard` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount` | public | yes | 253 | 14 | 18× | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | `/bankAccount/:id` | public | yes | 261 | 14 | 19× | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount/bic` | hidden | yes | 26 | — | — | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount/iban` | public | yes | 26 | — | — | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | `/bankData/:id` | public | yes | 31 | — | — | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| PUT | `/bankData/:id/nameCheck` | hidden | yes | 261 | — | — | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | `/bankTx` | public | yes | 61 | — | — | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTx/:id` | hidden | yes | 1051 | — | — | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| DELETE | `/bankTx/:id/buyCrypto` | hidden | yes | 247 | — | — | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTxRepeat/:id` | public | yes | 240 | — | — | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | `/bankTxReturn/:id` | public | yes | 438 | — | — | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/bankTxReturn/:id/refund` | hidden | yes | 727 | — | — | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/blockchain/balances` | public | yes | 33 | 4 | 8× | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | `/blockchain/broadcast` | public | no | — | 1 | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | `/blockchain/transaction` | public | yes | 33 | 4 | 8× | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| GET | `/buy` | public | yes | 56 | 30 | 2× | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | `/buy` | hidden | yes | 364 | 30 | 12× | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/:id` | hidden | yes | 134 | 30 | 4× | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/:id` | public | yes | 56 | 30 | 2× | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/:id/history` | hidden | yes | 497 | — | — | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos` | public | no | — | 69 | — | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos/:id/confirm` | public | yes | 504 | — | — | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos/:id/invoice` | public | yes | 504 | 1 | 504× | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/personalIban` | public | yes | 101 | 9 | 11× | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | `/buy/personalIban` | public | no | — | 9 | — | `BuyController.AuthGuard` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/quote` | hidden | yes | 23 | 29 | 1× | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buyCrypto/:id` | hidden | yes | 1090 | — | — | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/:id/amlCheck` | hidden | yes | 363 | — | — | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| DELETE | `/buyCrypto/:id/amlCheck` | hidden | yes | 422 | — | — | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/refund` | hidden | yes | 1051 | — | — | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/scorechain` | hidden | yes | 717 | — | — | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/webhook` | public | yes | 844 | — | — | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/refVolumes` | hidden | no | — | — | — | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/volumes` | hidden | yes | 487 | — | — | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyFiat/:id` | hidden | yes | 1033 | — | — | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/:id/amlCheck` | hidden | yes | 201 | — | — | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| DELETE | `/buyFiat/:id/amlCheck` | hidden | yes | 490 | — | — | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/refund` | hidden | yes | 803 | — | — | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/scorechain` | hidden | yes | 517 | — | — | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/webhook` | public | yes | 644 | — | — | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/refVolumes` | hidden | no | — | — | — | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/volumes` | hidden | yes | 201 | — | — | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| GET | `/country` | public | yes | 23 | 12 | 2× | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | +| GET | `/cryptoRoute` | public | no | — | — | — | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| POST | `/cryptoRoute` | hidden | no | — | — | — | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id` | hidden | no | — | — | — | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| PUT | `/cryptoRoute/:id` | hidden | no | — | — | — | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id/history` | hidden | no | — | — | — | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/custody` | public | yes | 253 | 12 | 21× | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody` | public | yes | 20 | 1 | 20× | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/account` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/account` | public | no | — | 8 | — | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | `/custody/account/:id` | public | ? | — | 8 | — | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/access` | public | yes | 238 | 4 | 60× | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/account/:id/access` | public | no | — | 4 | — | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | `/custody/account/:id/access/:accessId` | public | no | — | 4 | — | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| DELETE | `/custody/account/:id/access/:accessId` | public | no | — | — | — | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/balance` | public | yes | 253 | 12 | 21× | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/history` | public | yes | 253 | 6 | 42× | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/order` | public | ? | — | 8 | — | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/pdf` | public | yes | 253 | 1 | 253× | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/admin/order/:id/approve` | public | yes | 217 | — | — | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/admin/orders` | public | no | — | — | — | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| PUT | `/custody/admin/user/:id/balance` | public | yes | 118 | — | — | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/history` | public | yes | 253 | 6 | 42× | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/order` | public | no | — | 8 | — | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/order` | public | yes | 377 | 50 | 8× | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/order/:id/confirm` | public | yes | 525 | — | — | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/pdf` | public | yes | 253 | 1 | 253× | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/dashboard/accounting/ledger/accounts` | public | yes | 54 | 13 | 4× | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | yes | 8 | 24 | 0× | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/equity-comparison` | hidden | no | — | 10 | — | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/margin` | hidden | no | — | 11 | — | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/reconciliation` | hidden | yes | 54 | 11 | 5× | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/suspense` | hidden | no | — | 12 | — | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/financial/changes` | hidden | no | — | 5 | — | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/changes/latest` | hidden | no | — | 4 | — | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/latest` | hidden | no | — | 8 | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/log` | public | no | — | 8 | — | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/reconciliation` | public | yes | 46 | — | — | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | `/dashboard/financial/reconciliation/overview` | hidden | yes | 33 | — | — | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | `/dashboard/financial/ref-recipients` | hidden | no | — | 3 | — | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| POST | `/deposit` | public | no | — | — | — | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| PUT | `/deposit/lightningWebhook` | hidden | no | — | — | — | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| GET | `/deuro/info` | public | yes | 11 | — | — | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | +| GET | `/dex/check-liquidity` | public | ? | — | — | — | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| PUT | `/dex/complete-orders` | hidden | yes | 156 | — | — | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/liquidity-after-purchase` | hidden | yes | 156 | — | — | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/purchase-liquidity` | hidden | ? | — | — | — | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/reserve-liquidity` | hidden | ? | — | — | — | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/transfer-completion` | hidden | ? | — | — | — | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/transfer-liquidity` | hidden | ? | — | — | — | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/exchange/:exchange/balances` | public | no | — | — | — | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/price` | hidden | no | — | — | — | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | +| PUT | `/exchange/:exchange/sync` | hidden | yes | 33 | — | — | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade` | hidden | no | — | — | — | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/trade` | hidden | no | — | — | — | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade/history` | hidden | no | — | — | — | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/withdraw` | hidden | no | — | — | — | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/withdraw/:id` | public | no | — | — | — | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/trade/:id` | hidden | no | — | — | — | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/faucet` | public | yes | 33 | 23 | 1× | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | `/fee` | public | yes | 65 | — | — | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| GET | `/fiat` | public | yes | 23 | 4 | 6× | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | +| POST | `/fiatOutput` | public | yes | 377 | — | — | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| PUT | `/fiatOutput/:id` | hidden | yes | 59 | — | — | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| GET | `/frankencoin/info` | public | yes | 11 | — | — | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | +| POST | `/gs/db` | public | ? | — | — | — | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/db/custom` | hidden | ? | — | — | — | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/debug` | hidden | ? | — | — | — | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/evm/bridgeApproval` | hidden | no | — | — | — | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/coinTransaction` | hidden | no | — | — | — | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractApproval` | hidden | no | — | — | — | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractTransaction` | hidden | no | — | — | — | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/rawTransaction` | public | no | — | — | — | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/tokenTransaction` | hidden | yes | 33 | — | — | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| GET | `/gs/support` | hidden | yes | 907 | — | — | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | +| GET | `/health` | public | no | — | — | — | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/banking` | public | no | — | — | — | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/external` | public | no | — | — | — | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/liquidity` | public | no | — | — | — | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/nodes` | public | no | — | — | — | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/payment` | public | no | — | — | — | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/history` | public | no | — | 35 | — | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/history/:exportType` | hidden | yes | 331 | 1 | 331× | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/history/csv` | hidden | no | — | — | — | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | `/history/csv` | public | no | — | — | — | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/ikna/bfs/:id` | hidden | no | — | — | — | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | `/ikna/bfs/address` | public | no | — | — | — | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/ikna/tag` | hidden | no | — | — | — | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/juice/info` | public | yes | 11 | — | — | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | +| GET | `/kyc` | public | ? | — | 13 | — | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc` | public | no | — | — | — | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc` | public | no | — | — | — | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| PUT | `/kyc` | public | ? | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/2fa` | public | ? | — | — | — | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa` | public | ? | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa/verify` | public | ? | — | — | — | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/:code` | public | no | — | — | — | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc/:code` | public | no | — | — | — | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:code/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:id/documents` | public | yes | 78 | 2 | 39× | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:id/documents/:type` | public | yes | 328 | — | — | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:step` | public | ? | — | 5 | — | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/admin/blacklist/ip` | hidden | ? | — | — | — | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| DELETE | `/kyc/admin/blacklist/ip` | hidden | ? | — | — | — | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/ident/file/sync` | hidden | ? | 243 | — | — | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/log` | hidden | yes | 253 | — | — | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/log/:id` | hidden | yes | 17 | — | — | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/nameCheck/:id` | public | yes | 245 | — | — | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/step/:id` | hidden | yes | 385 | — | — | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/webhook` | hidden | yes | 243 | — | — | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| GET | `/kyc/client/payments` | public | ? | — | — | — | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users` | public | ? | — | 1 | — | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents` | public | ? | — | 2 | — | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents/:type` | public | ? | — | — | — | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/payments` | public | ? | — | — | — | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/countries` | public | ? | — | 12 | — | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| DELETE | `/kyc/data/:type/:id` | hidden | ? | — | — | — | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/additional/:id` | public | ? | — | — | — | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/address/:id` | public | ? | — | — | — | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/authority/:id` | public | ? | — | — | — | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/beneficial/:id` | public | ? | — | — | — | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/confirmation/:id` | public | ? | — | — | — | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/contact/:id` | hidden | ? | — | — | — | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/data/financial/:id` | public | ? | — | — | — | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/financial/:id` | public | ? | — | — | — | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/legal/:id` | public | ? | — | — | — | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/name/:id` | public | ? | — | — | — | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/nationality/:id` | public | ? | — | — | — | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/operational/:id` | public | ? | — | — | — | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/owner/:id` | public | ? | — | — | — | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/payment/:id` | public | ? | — | — | — | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/personal/:id` | public | ? | — | — | — | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/phone/:id` | public | ? | — | — | — | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recall/:id` | public | ? | — | — | — | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recommendation/:id` | public | ? | — | — | — | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/residence/:id` | public | ? | — | — | — | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/signatory/:id` | public | ? | — | — | — | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/statutes/:id` | public | ? | — | — | — | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/file/:id` | hidden | ? | — | 5 | — | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/ident/manual/:id` | hidden | ? | — | — | — | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/ident/sumsub` | public | ? | — | — | — | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/transfer` | hidden | ? | — | — | — | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/transfer` | public | yes | 331 | — | — | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| DELETE | `/kyc/transfer` | hidden | ? | — | — | — | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/users` | public | yes | 561 | 3 | 187× | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/language` | public | yes | 7 | 5 | 1× | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | +| PUT | `/limitRequest/:id` | public | yes | 434 | — | — | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | `/liquidityManagement/balance` | public | yes | 40 | — | — | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | yes | 139 | — | — | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/order/in-progress` | public | yes | 139 | — | — | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/pipeline/:id/status` | hidden | yes | 112 | — | — | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/buy` | public | no | — | — | — | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/in-progress` | hidden | yes | 112 | — | — | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/sell` | hidden | no | — | — | — | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/stopped` | hidden | yes | 112 | — | — | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/rule` | public | ? | — | 9 | — | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | `/liquidityManagement/rule/:id` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PUT | `/liquidityManagement/rule/:id` | hidden | yes | 83 | — | — | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/settings` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | `/lnurla` | public | ? | — | 2 | — | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| POST | `/lnurla` | public | ? | — | 2 | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurla/status` | public | ? | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurld/:id` | public | no | — | — | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | `/lnurld/cb/:id/:var` | public | no | — | — | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | `/lnurlp/:id` | public | ? | — | — | — | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| POST | `/lnurlp/:id` | public | yes | 490 | — | — | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| DELETE | `/lnurlp/cancel/:id` | public | yes | 545 | 14 | 39× | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/cb/:id` | public | no | — | — | — | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/tx/:id` | public | ? | — | — | — | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/wait/:id` | public | yes | 545 | 1 | 545× | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlw/:id` | public | no | — | — | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| GET | `/lnurlw/cb/:id` | public | no | — | — | — | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| POST | `/log` | public | ? | — | — | — | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/:id` | hidden | yes | 11 | — | — | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/financial/validity` | hidden | no | — | — | — | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | +| GET | `/monitoring/data` | public | no | — | — | — | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| POST | `/monitoring/data` | hidden | no | — | — | — | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | `/mros` | hidden | yes | 243 | — | — | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/mros` | public | yes | 253 | — | — | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| GET | `/mros/:id` | hidden | yes | 243 | — | — | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | +| PUT | `/mros/:id` | hidden | yes | 78 | — | — | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/node/:node/:mode/cmd` | hidden | ? | — | — | — | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/:mode/rpc` | hidden | no | — | — | — | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/:mode/tx/:txId` | hidden | ? | — | — | — | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/cmd` | hidden | ? | — | — | — | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/rpc` | public | no | — | — | — | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/tx/:txId` | hidden | ? | — | — | — | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/notification/send-mail` | public | ? | — | — | — | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | `/payIn` | public | ? | — | — | — | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | ? | — | — | — | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | ? | — | — | — | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/poll` | hidden | ? | — | — | — | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/retry` | hidden | yes | — | — | — | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | `/paymentLink` | public | no | 513 | 15 | 34× | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink` | public | no | — | 15 | — | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id` | hidden | yes | 513 | — | — | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | `/paymentLink/:id` | hidden | yes | 195 | — | — | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id/pos` | hidden | yes | 513 | — | — | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/assign` | public | yes | 472 | 15 | 31× | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/config` | public | yes | 253 | 1 | 253× | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/config` | public | ? | — | — | — | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/history` | public | no | — | 16 | — | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/activate/:id` | public | ? | — | — | — | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/webhook` | hidden | no | — | — | — | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/kucoin/activate/:id` | public | ? | — | — | — | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| GET | `/paymentLink/locations` | public | yes | 513 | 5 | 103× | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/merchant` | public | ? | — | — | — | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/payment` | hidden | yes | 472 | — | — | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/payment` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | `/paymentLink/payment` | public | no | — | 15 | — | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/payment/:id` | public | yes | 32 | — | — | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/payment/confirm` | public | no | — | 15 | — | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/payment/wait` | public | no | — | 15 | — | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/pos` | public | no | — | 1 | — | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/recipient` | public | no | — | 10 | — | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/standard` | public | no | — | — | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/standard/:id` | public | no | — | — | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/stickers` | hidden | no | — | — | — | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/walletApp` | public | no | — | 33 | — | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | `/paymentLink/walletApp/:id` | public | yes | 15 | 33 | 0× | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | `/paymentLink/walletApp/recommended` | public | yes | 15 | 33 | 0× | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| POST | `/payout` | public | ? | — | — | — | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/payout/completion` | hidden | no | — | — | — | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/retry` | hidden | yes | 123 | — | — | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/speedup` | hidden | yes | 123 | — | — | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/pl` | public | ? | — | — | — | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | `/plp` | public | yes | 472 | — | — | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/pricing` | hidden | no | — | — | — | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| PUT | `/pricing` | hidden | yes | 53 | — | — | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/pricing/price` | public | no | — | — | — | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/realunit/account/:address` | public | no | — | 9 | — | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/account/:address/history` | public | no | — | 25 | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/quotes` | public | no | — | 8 | — | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | yes | 61 | — | — | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/registration/:id/forward` | hidden | yes | 323 | — | — | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/transactions` | hidden | no | — | 8 | — | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/balance/pdf` | public | yes | 33 | 1 | 33× | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/buyPrice` | public | no | — | 5 | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/buyShares` | public | no | — | 5 | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/info` | public | no | — | 8 | — | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/price` | public | no | — | 3 | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellPrice` | public | no | — | 4 | — | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellShares` | public | no | — | 4 | — | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/buy` | public | yes | 364 | 37 | 10× | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/buy/:id/confirm` | public | no | — | 1 | — | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/compliance/customers` | public | yes | 253 | 7 | 36× | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id` | hidden | yes | 826 | 93 | 9× | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/dossier` | hidden | no | — | — | — | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/files` | hidden | no | — | 4 | — | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | yes | 264 | 5 | 53× | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/confirm-aktionariat` | public | no | — | 3 | — | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/holders` | public | no | — | 10 | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/legal` | public | no | — | 6 | — | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| PUT | `/realunit/legal` | public | ? | — | 6 | — | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| GET | `/realunit/pay/:id/status` | public | yes | 32 | 1 | 32× | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/submit` | public | ? | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/unsigned-transaction` | public | ? | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/price` | public | no | — | 4 | — | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/price/history` | public | no | — | 4 | — | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/buyPrice` | public | no | — | 5 | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/buyShares` | public | no | — | 5 | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/info` | public | no | — | 8 | — | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/price` | public | no | — | 3 | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellPrice` | public | no | — | 4 | — | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellShares` | public | no | — | 4 | — | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/complete` | public | yes | 23 | — | — | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/date` | public | no | — | — | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/email` | public | ? | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/status` | public | no | — | — | — | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/wallet` | public | no | — | — | — | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/registration` | public | no | — | 20 | — | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell` | public | yes | 253 | 46 | 6× | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/broadcast` | public | no | — | — | — | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/unsigned-transactions` | public | no | — | — | — | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/support/:id` | hidden | yes | 421 | — | — | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/data` | hidden | yes | 951 | 67 | 14× | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| POST | `/realunit/support/:id/message` | hidden | yes | 441 | 5 | 88× | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/message/:messageId/file` | hidden | yes | 428 | — | — | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/messages` | hidden | yes | 421 | 5 | 84× | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/activity` | hidden | no | — | — | — | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/clerks` | hidden | no | — | — | — | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/counts` | hidden | no | — | — | — | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/list` | public | no | — | — | — | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/statistics` | hidden | no | — | 13 | — | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| PUT | `/realunit/swap` | public | ? | — | 27 | — | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/swap/:id/broadcast` | public | no | — | — | — | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/swap/:id/unsigned-transaction` | public | no | — | 1 | — | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/tokenInfo` | public | no | — | 7 | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/multi` | public | yes | 33 | 1 | 33× | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/single` | public | yes | 33 | 1 | 33× | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/transfer` | public | ? | — | 19 | — | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/transfer/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/wallet/status` | public | no | — | 20 | — | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/recall` | hidden | yes | 174 | — | — | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | `/recall` | public | yes | 61 | — | — | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recall/:id` | hidden | yes | 174 | — | — | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | `/recall/:id` | hidden | yes | 10 | — | — | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recommendation` | public | no | — | 9 | — | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| POST | `/recommendation` | hidden | no | — | 9 | — | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | `/recommendation/:id/confirm` | hidden | yes | 643 | — | — | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | `/recommendation/:id/reject` | hidden | yes | 643 | — | — | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | `/ref` | public | no | — | — | — | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| POST | `/reward/ref` | hidden | yes | 156 | — | — | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/:id` | hidden | yes | 156 | — | — | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | `/reward/ref/manual` | hidden | yes | 33 | — | — | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/volumes` | public | yes | 78 | — | — | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| GET | `/route` | public | yes | 124 | 68 | 2× | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | +| PUT | `/route/:id` | hidden | yes | 174 | — | — | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | +| POST | `/scorechain/screening` | public | no | — | — | — | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| GET | `/sell` | public | yes | 124 | 24 | 5× | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| POST | `/sell` | hidden | yes | 253 | 24 | 11× | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/:id` | hidden | yes | 377 | 24 | 16× | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/:id` | public | yes | 124 | 24 | 5× | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/:id/history` | hidden | yes | 470 | — | — | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/paymentInfos` | public | no | — | 93 | — | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/quote` | hidden | yes | 23 | 29 | 1× | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/setting` | public | yes | 5 | — | — | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/:key` | hidden | no | — | — | — | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/customSignUpFees` | hidden | no | — | — | — | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/disabledProcesses` | hidden | no | — | — | — | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | +| GET | `/setting/infoBanner` | public | no | — | 5 | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | +| POST | `/specialExternalAccount` | public | yes | 7 | — | — | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| GET | `/statistic` | public | no | — | 3 | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/statistic/status` | public | no | — | — | — | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/statistic/transactions` | public | yes | 419 | 8 | 52× | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/support` | public | yes | 61 | — | — | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id` | hidden | yes | 826 | — | — | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/ip-log-pdf` | hidden | no | — | 16 | — | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/:id/onboarding-pdf` | hidden | no | — | 11 | — | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/scorechain` | hidden | ? | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/transaction-pdf` | hidden | no | — | 16 | — | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues` | hidden | ? | — | — | — | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/:queue/items` | hidden | yes | 253 | — | — | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/clerks` | hidden | no | — | — | — | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/issue` | public | yes | 450 | 18 | 25× | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue` | public | no | — | 18 | — | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id` | hidden | yes | 450 | 18 | 25× | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | `/support/issue/:id` | public | yes | 421 | — | — | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | `/support/issue/:id/close` | public | yes | 450 | 18 | 25× | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id/data` | hidden | yes | 951 | 67 | 14× | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/:id/message` | hidden | yes | 441 | 5 | 88× | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id/message/:messageId/file` | public | yes | 428 | — | — | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/activity` | hidden | no | — | — | — | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/clerk` | hidden | no | — | 18 | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/clerks` | hidden | no | — | — | — | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/counts` | hidden | no | — | — | — | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/escalation/telegram-bind` | hidden | no | — | — | — | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/escalation/telegram-chats` | hidden | no | — | — | — | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/escalation/telegram-test` | hidden | no | — | — | — | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/list` | public | no | — | — | — | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/statistics` | hidden | no | — | 13 | — | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/support` | public | yes | 20 | 18 | 1× | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/kycFileList` | hidden | yes | 253 | — | — | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/kycFileStats` | hidden | no | — | — | — | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/note` | hidden | yes | 9 | 11 | 1× | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/note` | hidden | yes | 253 | 11 | 23× | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/note/:id` | hidden | yes | 239 | 11 | 22× | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/note/:id` | hidden | yes | 9 | — | — | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/note/users` | hidden | no | — | 3 | — | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews` | hidden | ? | — | — | — | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews/items` | hidden | yes | 261 | — | — | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-transactions` | hidden | yes | 672 | — | — | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/recommendation-graph/:id/neighbors` | hidden | no | — | — | — | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/template` | hidden | yes | 8 | 8 | 1× | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/template` | hidden | yes | 253 | 8 | 32× | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/template/:id` | hidden | yes | 8 | 8 | 1× | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/template/:id` | hidden | yes | 8 | — | — | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transaction/:id/refund` | hidden | yes | 13 | 20 | 1× | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/transaction/:id/refund` | hidden | yes | 253 | — | — | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transactionList` | hidden | no | — | — | — | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | +| GET | `/swap` | public | yes | 68 | 34 | 2× | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | `/swap` | hidden | yes | 68 | 34 | 2× | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/:id` | hidden | yes | 146 | 34 | 4× | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/:id` | public | yes | 68 | 34 | 2× | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/:id/history` | hidden | yes | 509 | — | — | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/paymentInfos` | public | no | — | 82 | — | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/quote` | hidden | yes | 23 | 28 | 1× | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | `/tatum/addressWebhook` | public | no | — | — | — | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | `/trading/rule/:id` | public | yes | 87 | — | — | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| GET | `/transaction` | public | no | — | 35 | — | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/invoice` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/receipt` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/:id/refund` | public | no | — | 20 | — | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/refund` | public | no | — | — | — | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/target` | hidden | yes | 1051 | — | — | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/ChainReport` | hidden | no | — | 12 | — | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/CoinTracking` | public | no | — | 1 | — | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/admin/:id` | public | yes | 253 | — | — | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:id/stop` | hidden | ? | — | — | — | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:txId/riskAssessment` | hidden | ? | — | — | — | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | yes | 13 | — | — | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | `/transaction/csv` | public | no | — | — | — | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/csv` | public | no | — | — | — | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/detail` | hidden | no | — | 2 | — | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/detail/csv` | public | no | — | — | — | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/detail/single` | public | no | — | 35 | — | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/single` | public | no | — | 35 | — | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/target` | hidden | yes | 134 | — | — | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/unassigned` | public | yes | 261 | 23 | 11× | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/user` | public | yes | 328 | 21 | 16× | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user` | public | no | — | 56 | — | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user` | public | yes | 406 | 14 | 29× | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user` | public | yes | 253 | 56 | 5× | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | no | — | — | — | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | yes | 344 | — | — | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/:id` | hidden | yes | 308 | — | — | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/account` | public | yes | 344 | — | — | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/addresses/:address` | public | yes | 351 | 56 | 6× | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/addresses/:address` | public | no | — | — | — | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/apiFilter/CT` | public | yes | 308 | — | — | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/apiKey/CT` | public | yes | 253 | 2 | 126× | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/apiKey/CT` | public | ? | — | — | — | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/change` | public | no | — | 1 | — | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/data` | hidden | yes | 406 | 14 | 29× | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/detail` | public | yes | 328 | 14 | 23× | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/discountCodes` | public | ? | — | — | — | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/mail` | public | yes | 351 | — | — | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/mail/verify` | public | yes | 351 | 56 | 6× | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/name` | public | yes | 78 | — | — | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/profile` | public | yes | 253 | 24 | 11× | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/ref` | public | no | — | — | — | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/ref` | public | yes | 78 | 28 | 3× | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/ref` | public | yes | 273 | 28 | 10× | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/specialCodes` | public | ? | — | — | — | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/volumes` | hidden | no | — | — | — | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/userData` | public | yes | 253 | — | — | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData` | hidden | yes | 16 | — | — | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | `/userData/:id` | public | yes | 253 | — | — | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id` | hidden | yes | 384 | — | — | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/bankDatas` | hidden | yes | 284 | — | — | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/fee` | hidden | yes | 253 | — | — | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| DELETE | `/userData/:id/fee` | hidden | yes | 253 | — | — | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/:id/kycFile` | hidden | yes | 253 | — | — | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/merge` | hidden | yes | 331 | — | — | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/volumes` | hidden | no | — | — | — | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/auditPeriodNumbers` | hidden | no | — | — | — | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/download` | public | no | — | — | — | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userDataRelation` | public | yes | 253 | — | — | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| PUT | `/userDataRelation/:id` | public | yes | 7 | — | — | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | `/userDataRelation/:id` | public | ? | — | — | — | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| GET | `/version` | hidden | no | — | 3 | — | `AppController.getVersion` | `app.controller.ts` | +| POST | `/wallet` | public | ? | — | — | — | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | `/wallet/:id` | hidden | yes | 20 | — | — | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | + +⚠️ = not registered at runtime, see *Known discrepancy* above. From 4614d2b71650354f7521f1c246d57be63444bc45 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 01:55:24 +0200 Subject: [PATCH 04/19] docs: drop the table layout description from the contribution rule How the table is sorted is visible from the table itself. Describing it in the rule adds noise around the part that is not obvious - which columns to fill in by hand and how to decide the Eager value. --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aaed93a6a7..e2ebd210b5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -515,14 +515,14 @@ export class SupportIssueController { [docs/endpoints.md](docs/endpoints.md) lists every route this service exposes. **Any change to the set of routes must be reflected there in the same PR** — adding, removing, renaming or re-scoping an endpoint, and equally a change to a `@Controller` base path, which moves every route beneath it. -The file is a single table sorted by path. Add or amend the row in that order and fill every column: whether the endpoint carries `@ApiExcludeEndpoint()`, and whether its load path triggers eager relations. +Fill in the `Swagger` and `Eager` columns; `Cols`, `Fields` and `Ratio` are measured, not hand-written. The `Eager` column follows a mechanical rule — eager relations apply to the `find*` family, not to `createQueryBuilder` with an explicit field list or to raw SQL: - the handler reaches a `find` / `findOne` / `findBy` / `findOneBy` on a repository → `yes` - it loads only through `createQueryBuilder(...).select([...])` or `dataSource.query(...)`, or touches no database at all → `no` -This matters because eager relations expand recursively: a plain `findOne()` on `UserData` already selects 253 columns across 8 joins before any `relations` option is added. The `Cols`, `Fields` and `Ratio` columns are optional when adding an endpoint — they are measured, not hand-written. +This matters because eager relations expand recursively: a plain `findOne()` on `UserData` already selects 253 columns across 8 joins before any `relations` option is added. Two details are easy to get wrong when editing the list by hand: From 41159d7623959404c36af587248b1b657d591147 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:00:41 +0200 Subject: [PATCH 05/19] docs: fix two parser defects and separate n/a from unknown Two parser defects inflated the unresolved count, both fixed: - 60 class names occur in more than one file (among them two KycController classes). Storing methods by class name alone overwrote one with the other, so 39 handlers could not be found at all. Entries are now merged instead of overwritten. - A cycle in the call graph was counted as an unresolved call. A cycle contributes nothing and is not a doubtful case. Eager resolution rises from 82% to 88%. The Fields column now distinguishes 'does not apply' from 'unknown'. Of 313 endpoints without a field count, 113 return void and 172 return no DTO at all - neither has a field set to count. Only 28 are genuine recognition gaps. The first two now show n/a, the last dash, and the coverage table breaks the numbers out. Reading 41% as poor coverage was misleading. --- docs/endpoints.md | 633 +++++++++++++++++++++++----------------------- 1 file changed, 319 insertions(+), 314 deletions(-) diff --git a/docs/endpoints.md b/docs/endpoints.md index 7a01fcc492..bd87d833b1 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -12,7 +12,7 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller | **Fields** | Fields of the response DTO, nested DTOs included | | **Ratio** | Cols ÷ Fields — how much is loaded per field returned | -`—` means the value could not be determined statically, **not** that it is zero. See *Coverage* below. +`n/a` means the column does not apply — an endpoint returning `void` has no field count. `—` means the value could not be determined statically, **not** that it is zero. See *Coverage* below. ## Why this list exists @@ -23,7 +23,7 @@ The `Ratio` column quantifies it where both sides are known. It is the basis for ## How the values are produced - **Endpoints** — from the routing decorators in `src/**/*.controller.ts`, each attributed to the `@Controller` scope preceding it. Four files declare two controller classes with different base paths, one declares `@Controller()` without an argument. Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match. -- **Eager** — from the call chain between handler and repository (up to four levels). The rule is mechanical: eager relations apply to the `find*` family, not to `createQueryBuilder` or raw SQL. +- **Eager** — from the call chain between handler and repository (up to ten levels). The rule is mechanical: eager relations apply to the `find*` family, not to `createQueryBuilder` or raw SQL. - **Cols** — measured against the real entity metadata: the query is built and its SELECT list counted. Not an estimate. - **Fields** — field count of the declared response DTO, nested DTOs resolved recursively. @@ -31,15 +31,20 @@ The `Ratio` column quantifies it where both sides are known. It is the basis for | | Endpoints | Share | | --- | --- | --- | -| Eager determined (`yes`/`no`) | 437 | 82 % | -| — of those `yes` | 244 | | -| — of those `no` | 193 | | -| Eager unresolved (`?`) | 96 | 18 % | -| Column count measured | 245 | 46 % | -| Response DTO recognised | 215 | 40 % | -| Both, so `Ratio` available | 111 | 21 % | +| Eager determined (`yes`/`no`) | 468 | 88 % | +| — of those `yes` | 260 | | +| — of those `no` | 208 | | +| Eager unresolved (`?`) | 65 | 12 % | +| Column count measured | 260 | 49 % | +| Field count known | 220 | 41 % | +| — returns `void`, no fields to count | 113 | 21 % | +| — returns no DTO (entity, string, record) | 172 | 32 % | +| — genuinely unrecognised | 28 | 5 % | +| Both, so `Ratio` available | 113 | 21 % | -The gaps are honest limits of static analysis, not zeros. `Eager = ?` means a call in the chain could not be attributed — typically a service resolved through inheritance or a dynamically chosen target. A missing `Cols` means no load site was attributable to the handler; a missing `Fields` means the endpoint declares no DTO return type (`void`, a raw string, `StreamableFile`, or an entity). +Most blanks in **Fields** are not measurement gaps: an endpoint returning `void` has nothing to count, and one returning an entity or a raw type has no declared field set. Only 28 are genuinely unrecognised. Those show `—`, the others `n/a`. + +`Eager = ?` is a real limit: a call somewhere in the chain could not be attributed, typically a method reached through inheritance or a dynamically chosen target. A missing `Cols` means no load site was attributable to the handler. Where both sides are known, the median ratio is **16×** — 14 endpoints exceed 100×. @@ -51,54 +56,54 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | Method | Path | Swagger | Eager | Cols | Fields | Ratio | Handler | File | | ------ | ---- | ------- | ----- | ---: | -----: | ----: | ------- | ---- | -| GET | `/` | public | no | — | — | — | `AppController.home` | `app.controller.ts` | -| POST | `/CustodyProvider` | public | ? | — | — | — | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| PUT | `/CustodyProvider/:id` | hidden | yes | 6 | — | — | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | no | — | — | — | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/mail` | public | ? | — | — | — | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/payout` | hidden | yes | 156 | — | — | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/sendLetter` | hidden | no | — | — | — | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/alchemy/addressWebhook` | public | ? | — | — | — | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/alchemy/addresses/:webhookId` | public | no | — | — | — | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/app` | public | yes | 6 | — | — | `AppController.createRefNew` | `app.controller.ts` | -| GET | `/app/:app` | hidden | yes | 6 | — | — | `AppController.redirectToStore` | `app.controller.ts` | +| GET | `/` | public | no | — | n/a | n/a | `AppController.home` | `app.controller.ts` | +| POST | `/CustodyProvider` | public | ? | — | n/a | n/a | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| PUT | `/CustodyProvider/:id` | hidden | yes | 6 | n/a | n/a | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | no | — | n/a | n/a | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/mail` | public | ? | — | n/a | n/a | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/payout` | hidden | yes | 156 | n/a | n/a | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/sendLetter` | hidden | no | — | n/a | n/a | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/alchemy/addressWebhook` | public | ? | — | n/a | n/a | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/alchemy/addresses/:webhookId` | public | no | — | n/a | n/a | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/app` | public | yes | 6 | n/a | n/a | `AppController.createRefNew` | `app.controller.ts` | +| GET | `/app/:app` | hidden | yes | 6 | n/a | n/a | `AppController.redirectToStore` | `app.controller.ts` | | GET | `/app/advertisements` | hidden | no | — | — | — | `AppController.getAds` | `app.controller.ts` | | GET | `/app/announcements` | public | no | — | 3 | — | `AppController.getAnnouncements` | `app.controller.ts` | | GET | `/app/settings/flags` | hidden | no | — | 7 | — | `AppController.getFlags` | `app.controller.ts` | | GET | `/asset` | public | no | — | 3 | — | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | -| PUT | `/asset/:id` | public | yes | 33 | — | — | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | `/asset/:id` | public | yes | 33 | n/a | n/a | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | | POST | `/auth` | public | ? | — | 1 | — | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/2fa` | hidden | no | — | — | — | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/2fa` | hidden | no | — | n/a | n/a | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/2fa` | public | no | — | 3 | — | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa/verify` | public | yes | 253 | — | — | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa/verify` | public | yes | 253 | n/a | n/a | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/alby` | hidden | ? | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby/redirect/:id` | hidden | ? | — | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby/redirect/:id` | hidden | yes | 23 | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/challenge` | hidden | yes | 20 | 1 | 20× | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/mail` | hidden | yes | 20 | — | — | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/mail` | hidden | yes | 20 | n/a | n/a | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/mail/confirm` | public | yes | 470 | 2 | 235× | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/mail/redirect` | hidden | yes | 253 | 1 | 253× | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/signIn` | hidden | yes | 23 | 1 | 23× | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/signMessage` | public | no | — | 1 | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/signMessage` | public | no | — | 2 | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/signUp` | public | no | — | 1 | — | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/verifySignature` | public | yes | 6 | 1 | 6× | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/balance/pdf` | public | no | — | 1 | — | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | `/balance/pdf/blockchains` | public | no | — | — | — | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | `/balance/pdf/blockchains` | public | no | — | n/a | n/a | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | | GET | `/bank` | public | yes | 13 | 4 | 3× | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | | PUT | `/bank/receiveIban` | public | yes | 101 | 1 | 101× | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| POST | `/bank/yapeal/webhook` | public | no | — | — | — | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| POST | `/bank/yapeal/webhook` | public | no | — | n/a | n/a | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | | GET | `/bankAccount` | public | yes | 261 | 14 | 19× | `BankAccountController.AuthGuard` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | | POST | `/bankAccount` | public | yes | 253 | 14 | 18× | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | | PUT | `/bankAccount/:id` | public | yes | 261 | 14 | 19× | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/bic` | hidden | yes | 26 | — | — | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/iban` | public | yes | 26 | — | — | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | `/bankData/:id` | public | yes | 31 | — | — | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| PUT | `/bankData/:id/nameCheck` | hidden | yes | 261 | — | — | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| POST | `/bankTx` | public | yes | 61 | — | — | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTx/:id` | hidden | yes | 1051 | — | — | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| DELETE | `/bankTx/:id/buyCrypto` | hidden | yes | 247 | — | — | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTxRepeat/:id` | public | yes | 240 | — | — | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | -| PUT | `/bankTxReturn/:id` | public | yes | 438 | — | — | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | `/bankTxReturn/:id/refund` | hidden | yes | 727 | — | — | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/bankAccount/bic` | hidden | yes | 26 | n/a | n/a | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount/iban` | public | yes | 26 | n/a | n/a | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | `/bankData/:id` | public | yes | 31 | n/a | n/a | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| PUT | `/bankData/:id/nameCheck` | hidden | yes | 261 | n/a | n/a | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | `/bankTx` | public | yes | 61 | n/a | n/a | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTx/:id` | hidden | yes | 1051 | n/a | n/a | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| DELETE | `/bankTx/:id/buyCrypto` | hidden | yes | 247 | n/a | n/a | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTxRepeat/:id` | public | yes | 240 | n/a | n/a | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | `/bankTxReturn/:id` | public | yes | 438 | n/a | n/a | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/bankTxReturn/:id/refund` | hidden | yes | 727 | n/a | n/a | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | | POST | `/blockchain/balances` | public | yes | 33 | 4 | 8× | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | | POST | `/blockchain/broadcast` | public | no | — | 1 | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | | POST | `/blockchain/transaction` | public | yes | 33 | 4 | 8× | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | @@ -108,35 +113,35 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/buy/:id` | public | yes | 56 | 30 | 2× | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | GET | `/buy/:id/history` | hidden | yes | 497 | — | — | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | `/buy/paymentInfos` | public | no | — | 69 | — | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos/:id/confirm` | public | yes | 504 | — | — | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos/:id/confirm` | public | yes | 504 | n/a | n/a | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | `/buy/paymentInfos/:id/invoice` | public | yes | 504 | 1 | 504× | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | GET | `/buy/personalIban` | public | yes | 101 | 9 | 11× | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | POST | `/buy/personalIban` | public | no | — | 9 | — | `BuyController.AuthGuard` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | `/buy/quote` | hidden | yes | 23 | 29 | 1× | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buyCrypto/:id` | hidden | yes | 1090 | — | — | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/:id/amlCheck` | hidden | yes | 363 | — | — | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| DELETE | `/buyCrypto/:id/amlCheck` | hidden | yes | 422 | — | — | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/refund` | hidden | yes | 1051 | — | — | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/scorechain` | hidden | yes | 717 | — | — | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/webhook` | public | yes | 844 | — | — | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/refVolumes` | hidden | no | — | — | — | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/volumes` | hidden | yes | 487 | — | — | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyFiat/:id` | hidden | yes | 1033 | — | — | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/:id/amlCheck` | hidden | yes | 201 | — | — | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| DELETE | `/buyFiat/:id/amlCheck` | hidden | yes | 490 | — | — | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/refund` | hidden | yes | 803 | — | — | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/scorechain` | hidden | yes | 517 | — | — | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/webhook` | public | yes | 644 | — | — | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/refVolumes` | hidden | no | — | — | — | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/volumes` | hidden | yes | 201 | — | — | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyCrypto/:id` | hidden | yes | 1090 | n/a | n/a | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/:id/amlCheck` | hidden | yes | 363 | n/a | n/a | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| DELETE | `/buyCrypto/:id/amlCheck` | hidden | yes | 422 | n/a | n/a | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/refund` | hidden | yes | 1051 | n/a | n/a | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/scorechain` | hidden | yes | 717 | n/a | n/a | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/webhook` | public | yes | 844 | n/a | n/a | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/refVolumes` | hidden | no | — | n/a | n/a | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/volumes` | hidden | yes | 487 | n/a | n/a | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyFiat/:id` | hidden | yes | 1033 | n/a | n/a | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/:id/amlCheck` | hidden | yes | 201 | n/a | n/a | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| DELETE | `/buyFiat/:id/amlCheck` | hidden | yes | 490 | n/a | n/a | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/refund` | hidden | yes | 803 | n/a | n/a | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/scorechain` | hidden | yes | 517 | n/a | n/a | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/webhook` | public | yes | 644 | n/a | n/a | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/refVolumes` | hidden | no | — | n/a | n/a | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/volumes` | hidden | yes | 201 | n/a | n/a | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | | GET | `/country` | public | yes | 23 | 12 | 2× | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | -| GET | `/cryptoRoute` | public | no | — | — | — | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| POST | `/cryptoRoute` | hidden | no | — | — | — | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id` | hidden | no | — | — | — | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| PUT | `/cryptoRoute/:id` | hidden | no | — | — | — | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id/history` | hidden | no | — | — | — | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute` | public | no | — | n/a | n/a | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| POST | `/cryptoRoute` | hidden | no | — | n/a | n/a | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id` | hidden | no | — | n/a | n/a | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| PUT | `/cryptoRoute/:id` | hidden | no | — | n/a | n/a | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id/history` | hidden | no | — | n/a | n/a | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | | GET | `/custody` | public | yes | 253 | 12 | 21× | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody` | public | yes | 20 | 1 | 20× | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody` | public | yes | 23 | 1 | 23× | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | | GET | `/custody/account` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | POST | `/custody/account` | public | no | — | 8 | — | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | @@ -144,18 +149,18 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/custody/account/:id/access` | public | yes | 238 | 4 | 60× | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | POST | `/custody/account/:id/access` | public | no | — | 4 | — | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | PUT | `/custody/account/:id/access/:accessId` | public | no | — | 4 | — | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| DELETE | `/custody/account/:id/access/:accessId` | public | no | — | — | — | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| DELETE | `/custody/account/:id/access/:accessId` | public | no | — | n/a | n/a | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/balance` | public | yes | 253 | 12 | 21× | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/history` | public | yes | 253 | 6 | 42× | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/order` | public | ? | — | 8 | — | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/pdf` | public | yes | 253 | 1 | 253× | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/admin/order/:id/approve` | public | yes | 217 | — | — | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/admin/orders` | public | no | — | — | — | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| PUT | `/custody/admin/user/:id/balance` | public | yes | 118 | — | — | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/admin/order/:id/approve` | public | yes | 217 | n/a | n/a | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/admin/orders` | public | no | — | n/a | n/a | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| PUT | `/custody/admin/user/:id/balance` | public | yes | 118 | n/a | n/a | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | | GET | `/custody/history` | public | yes | 253 | 6 | 42× | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | | GET | `/custody/order` | public | no | — | 8 | — | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | | POST | `/custody/order` | public | yes | 377 | 50 | 8× | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody/order/:id/confirm` | public | yes | 525 | — | — | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/order/:id/confirm` | public | yes | 525 | n/a | n/a | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | | GET | `/custody/pdf` | public | yes | 253 | 1 | 253× | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | | GET | `/dashboard/accounting/ledger/accounts` | public | yes | 54 | 13 | 4× | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | | GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | yes | 8 | 24 | 0× | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | @@ -170,125 +175,125 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/dashboard/financial/reconciliation` | public | yes | 46 | — | — | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | | GET | `/dashboard/financial/reconciliation/overview` | hidden | yes | 33 | — | — | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | | GET | `/dashboard/financial/ref-recipients` | hidden | no | — | 3 | — | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| POST | `/deposit` | public | no | — | — | — | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| PUT | `/deposit/lightningWebhook` | hidden | no | — | — | — | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| POST | `/deposit` | public | no | — | n/a | n/a | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| PUT | `/deposit/lightningWebhook` | hidden | no | — | n/a | n/a | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | | GET | `/deuro/info` | public | yes | 11 | — | — | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | -| GET | `/dex/check-liquidity` | public | ? | — | — | — | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| PUT | `/dex/complete-orders` | hidden | yes | 156 | — | — | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/liquidity-after-purchase` | hidden | yes | 156 | — | — | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/purchase-liquidity` | hidden | ? | — | — | — | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/reserve-liquidity` | hidden | ? | — | — | — | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/transfer-completion` | hidden | ? | — | — | — | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/transfer-liquidity` | hidden | ? | — | — | — | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/exchange/:exchange/balances` | public | no | — | — | — | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/price` | hidden | no | — | — | — | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | -| PUT | `/exchange/:exchange/sync` | hidden | yes | 33 | — | — | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade` | hidden | no | — | — | — | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/trade` | hidden | no | — | — | — | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade/history` | hidden | no | — | — | — | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/withdraw` | hidden | no | — | — | — | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/withdraw/:id` | public | no | — | — | — | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/trade/:id` | hidden | no | — | — | — | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/dex/check-liquidity` | public | no | — | n/a | n/a | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| PUT | `/dex/complete-orders` | hidden | yes | 156 | n/a | n/a | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/liquidity-after-purchase` | hidden | yes | 156 | n/a | n/a | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/purchase-liquidity` | hidden | no | — | n/a | n/a | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/reserve-liquidity` | hidden | ? | — | n/a | n/a | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/transfer-completion` | hidden | no | — | n/a | n/a | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/transfer-liquidity` | hidden | no | — | n/a | n/a | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/exchange/:exchange/balances` | public | no | — | n/a | n/a | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/price` | hidden | no | — | n/a | n/a | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | +| PUT | `/exchange/:exchange/sync` | hidden | yes | 33 | n/a | n/a | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade` | hidden | no | — | n/a | n/a | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/trade` | hidden | no | — | n/a | n/a | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade/history` | hidden | no | — | n/a | n/a | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/withdraw` | hidden | no | — | n/a | n/a | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/withdraw/:id` | public | no | — | n/a | n/a | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/trade/:id` | hidden | no | — | n/a | n/a | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | | POST | `/faucet` | public | yes | 33 | 23 | 1× | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | -| POST | `/fee` | public | yes | 65 | — | — | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| POST | `/fee` | public | yes | 65 | n/a | n/a | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | | GET | `/fiat` | public | yes | 23 | 4 | 6× | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | -| POST | `/fiatOutput` | public | yes | 377 | — | — | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| PUT | `/fiatOutput/:id` | hidden | yes | 59 | — | — | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| POST | `/fiatOutput` | public | yes | 377 | n/a | n/a | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| PUT | `/fiatOutput/:id` | hidden | yes | 59 | n/a | n/a | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | | GET | `/frankencoin/info` | public | yes | 11 | — | — | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | `/gs/db` | public | ? | — | — | — | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/db/custom` | hidden | ? | — | — | — | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/debug` | hidden | ? | — | — | — | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/evm/bridgeApproval` | hidden | no | — | — | — | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/coinTransaction` | hidden | no | — | — | — | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractApproval` | hidden | no | — | — | — | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractTransaction` | hidden | no | — | — | — | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/rawTransaction` | public | no | — | — | — | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/tokenTransaction` | hidden | yes | 33 | — | — | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| GET | `/gs/support` | hidden | yes | 907 | — | — | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | -| GET | `/health` | public | no | — | — | — | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/banking` | public | no | — | — | — | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/external` | public | no | — | — | — | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/liquidity` | public | no | — | — | — | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/nodes` | public | no | — | — | — | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/payment` | public | no | — | — | — | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | +| POST | `/gs/db` | public | ? | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/db/custom` | hidden | ? | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/debug` | hidden | ? | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/evm/bridgeApproval` | hidden | no | — | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/coinTransaction` | hidden | no | — | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractApproval` | hidden | no | — | n/a | n/a | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractTransaction` | hidden | no | — | n/a | n/a | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/rawTransaction` | public | no | — | n/a | n/a | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/tokenTransaction` | hidden | yes | 33 | n/a | n/a | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| GET | `/gs/support` | hidden | yes | 907 | n/a | n/a | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | +| GET | `/health` | public | no | — | n/a | n/a | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/banking` | public | no | — | n/a | n/a | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/external` | public | no | — | n/a | n/a | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/liquidity` | public | no | — | n/a | n/a | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/nodes` | public | no | — | n/a | n/a | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/payment` | public | no | — | n/a | n/a | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | | GET | `/history` | public | no | — | 35 | — | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | | GET | `/history/:exportType` | hidden | yes | 331 | 1 | 331× | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/history/csv` | hidden | no | — | — | — | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| POST | `/history/csv` | public | no | — | — | — | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/ikna/bfs/:id` | hidden | no | — | — | — | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | -| POST | `/ikna/bfs/address` | public | no | — | — | — | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | `/ikna/tag` | hidden | no | — | — | — | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/history/csv` | hidden | no | — | n/a | n/a | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | `/history/csv` | public | no | — | n/a | n/a | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/ikna/bfs/:id` | hidden | no | — | n/a | n/a | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | `/ikna/bfs/address` | public | no | — | n/a | n/a | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/ikna/tag` | hidden | no | — | n/a | n/a | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | | GET | `/juice/info` | public | yes | 11 | — | — | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | -| GET | `/kyc` | public | ? | — | 13 | — | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc` | public | no | — | — | — | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc` | public | no | — | — | — | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| PUT | `/kyc` | public | ? | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/2fa` | public | ? | — | — | — | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa` | public | ? | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa/verify` | public | ? | — | — | — | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/:code` | public | no | — | — | — | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc/:code` | public | no | — | — | — | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc` | public | no | — | 13 | — | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc` | public | no | — | n/a | n/a | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc` | public | no | — | n/a | n/a | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| PUT | `/kyc` | public | no | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/2fa` | public | no | — | n/a | n/a | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa` | public | no | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa/verify` | public | ? | — | n/a | n/a | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/kyc/:code/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/kyc/:id/documents` | public | yes | 78 | 2 | 39× | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:id/documents/:type` | public | yes | 328 | — | — | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:step` | public | ? | — | 5 | — | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/admin/blacklist/ip` | hidden | ? | — | — | — | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| DELETE | `/kyc/admin/blacklist/ip` | hidden | ? | — | — | — | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/ident/file/sync` | hidden | ? | 243 | — | — | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/log` | hidden | yes | 253 | — | — | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/log/:id` | hidden | yes | 17 | — | — | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/nameCheck/:id` | public | yes | 245 | — | — | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/step/:id` | hidden | yes | 385 | — | — | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/webhook` | hidden | yes | 243 | — | — | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| GET | `/kyc/client/payments` | public | ? | — | — | — | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users` | public | ? | — | 1 | — | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents` | public | ? | — | 2 | — | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents/:type` | public | ? | — | — | — | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/payments` | public | ? | — | — | — | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/countries` | public | ? | — | 12 | — | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/:id/documents/:type` | public | yes | 328 | n/a | n/a | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:step` | public | no | — | 5 | — | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/admin/blacklist/ip` | hidden | ? | — | n/a | n/a | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| DELETE | `/kyc/admin/blacklist/ip` | hidden | ? | — | n/a | n/a | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/ident/file/sync` | hidden | yes | 243 | n/a | n/a | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/log` | hidden | yes | 253 | n/a | n/a | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/log/:id` | hidden | yes | 17 | n/a | n/a | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/nameCheck/:id` | public | yes | 245 | n/a | n/a | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/step/:id` | hidden | yes | 385 | n/a | n/a | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/webhook` | hidden | yes | 243 | n/a | n/a | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| GET | `/kyc/client/payments` | public | yes | 1092 | n/a | n/a | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users` | public | no | — | 1 | — | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents` | public | no | — | 2 | — | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents/:type` | public | no | — | n/a | n/a | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/payments` | public | yes | 1092 | n/a | n/a | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/data/:type/:id` | hidden | ? | — | — | — | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/additional/:id` | public | ? | — | — | — | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/address/:id` | public | ? | — | — | — | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/authority/:id` | public | ? | — | — | — | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/beneficial/:id` | public | ? | — | — | — | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/confirmation/:id` | public | ? | — | — | — | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/contact/:id` | hidden | ? | — | — | — | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/data/financial/:id` | public | ? | — | — | — | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/financial/:id` | public | ? | — | — | — | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/legal/:id` | public | ? | — | — | — | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/name/:id` | public | ? | — | — | — | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/nationality/:id` | public | ? | — | — | — | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/operational/:id` | public | ? | — | — | — | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/owner/:id` | public | ? | — | — | — | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/payment/:id` | public | ? | — | — | — | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/personal/:id` | public | ? | — | — | — | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/phone/:id` | public | ? | — | — | — | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recall/:id` | public | ? | — | — | — | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recommendation/:id` | public | ? | — | — | — | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/residence/:id` | public | ? | — | — | — | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/signatory/:id` | public | ? | — | — | — | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/statutes/:id` | public | ? | — | — | — | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/file/:id` | hidden | ? | — | 5 | — | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/ident/manual/:id` | hidden | ? | — | — | — | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/ident/sumsub` | public | ? | — | — | — | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/transfer` | hidden | ? | — | — | — | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/transfer` | public | yes | 331 | — | — | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/transfer` | hidden | ? | — | — | — | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | `/kyc/data/:type/:id` | hidden | ? | — | n/a | n/a | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/additional/:id` | public | ? | — | n/a | n/a | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/address/:id` | public | ? | — | n/a | n/a | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/authority/:id` | public | ? | — | n/a | n/a | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/beneficial/:id` | public | yes | 23 | n/a | n/a | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/confirmation/:id` | public | ? | — | n/a | n/a | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/contact/:id` | hidden | ? | — | n/a | n/a | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/data/financial/:id` | public | yes | 7 | n/a | n/a | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/financial/:id` | public | ? | — | n/a | n/a | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/legal/:id` | public | ? | — | n/a | n/a | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/name/:id` | public | ? | — | n/a | n/a | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/nationality/:id` | public | yes | 23 | n/a | n/a | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/operational/:id` | public | no | — | n/a | n/a | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/owner/:id` | public | ? | — | n/a | n/a | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/payment/:id` | public | yes | 23 | n/a | n/a | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/personal/:id` | public | yes | 23 | n/a | n/a | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/phone/:id` | public | yes | 13 | n/a | n/a | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recall/:id` | public | yes | 23 | n/a | n/a | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recommendation/:id` | public | yes | 308 | n/a | n/a | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/residence/:id` | public | ? | — | n/a | n/a | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/signatory/:id` | public | yes | 23 | n/a | n/a | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/statutes/:id` | public | ? | — | n/a | n/a | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/file/:id` | hidden | yes | 264 | 5 | 53× | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/ident/manual/:id` | hidden | yes | 23 | n/a | n/a | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/ident/sumsub` | public | ? | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/transfer` | hidden | ? | — | n/a | n/a | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/transfer` | public | yes | 331 | n/a | n/a | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| DELETE | `/kyc/transfer` | hidden | ? | — | n/a | n/a | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/users` | public | yes | 561 | 3 | 187× | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/language` | public | yes | 7 | 5 | 1× | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | -| PUT | `/limitRequest/:id` | public | yes | 434 | — | — | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | -| GET | `/liquidityManagement/balance` | public | yes | 40 | — | — | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | -| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | yes | 139 | — | — | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/order/in-progress` | public | yes | 139 | — | — | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/pipeline/:id/status` | hidden | yes | 112 | — | — | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/buy` | public | no | — | — | — | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/in-progress` | hidden | yes | 112 | — | — | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/sell` | hidden | no | — | — | — | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/stopped` | hidden | yes | 112 | — | — | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| PUT | `/limitRequest/:id` | public | yes | 434 | n/a | n/a | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | `/liquidityManagement/balance` | public | yes | 40 | n/a | n/a | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | yes | 139 | n/a | n/a | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/order/in-progress` | public | yes | 139 | n/a | n/a | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/pipeline/:id/status` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/buy` | public | no | — | n/a | n/a | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/in-progress` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/sell` | hidden | no | — | n/a | n/a | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/stopped` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | | POST | `/liquidityManagement/rule` | public | ? | — | 9 | — | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | GET | `/liquidityManagement/rule/:id` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PUT | `/liquidityManagement/rule/:id` | hidden | yes | 83 | — | — | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PUT | `/liquidityManagement/rule/:id` | hidden | yes | 83 | n/a | n/a | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/settings` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | @@ -297,80 +302,80 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/lnurla/status` | public | ? | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | | GET | `/lnurld/:id` | public | no | — | — | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | | GET | `/lnurld/cb/:id/:var` | public | no | — | — | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurlp/:id` | public | ? | — | — | — | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/:id` | public | ? | — | n/a | n/a | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | POST | `/lnurlp/:id` | public | yes | 490 | — | — | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | DELETE | `/lnurlp/cancel/:id` | public | yes | 545 | 14 | 39× | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/cb/:id` | public | no | — | — | — | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/tx/:id` | public | ? | — | — | — | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/cb/:id` | public | no | — | n/a | n/a | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/tx/:id` | public | ? | — | n/a | n/a | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | GET | `/lnurlp/wait/:id` | public | yes | 545 | 1 | 545× | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | GET | `/lnurlw/:id` | public | no | — | — | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| GET | `/lnurlw/cb/:id` | public | no | — | — | — | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | `/log` | public | ? | — | — | — | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/:id` | hidden | yes | 11 | — | — | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/financial/validity` | hidden | no | — | — | — | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | -| GET | `/monitoring/data` | public | no | — | — | — | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | -| POST | `/monitoring/data` | hidden | no | — | — | — | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | -| GET | `/mros` | hidden | yes | 243 | — | — | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/mros` | public | yes | 253 | — | — | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | -| GET | `/mros/:id` | hidden | yes | 243 | — | — | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | -| PUT | `/mros/:id` | hidden | yes | 78 | — | — | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/node/:node/:mode/cmd` | hidden | ? | — | — | — | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/:mode/rpc` | hidden | no | — | — | — | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/:mode/tx/:txId` | hidden | ? | — | — | — | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/cmd` | hidden | ? | — | — | — | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/rpc` | public | no | — | — | — | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/tx/:txId` | hidden | ? | — | — | — | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/notification/send-mail` | public | ? | — | — | — | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | `/payIn` | public | ? | — | — | — | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | ? | — | — | — | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | ? | — | — | — | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/poll` | hidden | ? | — | — | — | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/retry` | hidden | yes | — | — | — | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | `/lnurlw/cb/:id` | public | no | — | n/a | n/a | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| POST | `/log` | public | ? | — | n/a | n/a | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/:id` | hidden | yes | 11 | n/a | n/a | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/financial/validity` | hidden | no | — | n/a | n/a | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | +| GET | `/monitoring/data` | public | no | — | n/a | n/a | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| POST | `/monitoring/data` | hidden | no | — | n/a | n/a | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | `/mros` | hidden | yes | 243 | n/a | n/a | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/mros` | public | yes | 253 | n/a | n/a | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| GET | `/mros/:id` | hidden | yes | 243 | n/a | n/a | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | +| PUT | `/mros/:id` | hidden | yes | 78 | n/a | n/a | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/node/:node/:mode/cmd` | hidden | ? | — | n/a | n/a | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/:mode/rpc` | hidden | no | — | n/a | n/a | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/:mode/tx/:txId` | hidden | ? | — | n/a | n/a | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/cmd` | hidden | ? | — | n/a | n/a | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/rpc` | public | no | — | n/a | n/a | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/tx/:txId` | hidden | ? | — | n/a | n/a | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/notification/send-mail` | public | ? | — | n/a | n/a | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | `/payIn` | public | ? | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | ? | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | ? | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/poll` | hidden | ? | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/retry` | hidden | yes | — | n/a | n/a | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | GET | `/paymentLink` | public | no | 513 | 15 | 34× | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | POST | `/paymentLink` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | `/paymentLink` | public | no | — | 15 | — | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id` | hidden | yes | 513 | — | — | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | `/paymentLink/:id` | hidden | yes | 195 | — | — | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id/pos` | hidden | yes | 513 | — | — | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id` | hidden | yes | 513 | n/a | n/a | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | `/paymentLink/:id` | hidden | yes | 195 | n/a | n/a | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id/pos` | hidden | yes | 513 | n/a | n/a | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | `/paymentLink/assign` | public | yes | 472 | 15 | 31× | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/config` | public | yes | 253 | 1 | 253× | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/config` | public | ? | — | — | — | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/config` | public | ? | — | n/a | n/a | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/history` | public | no | — | 16 | — | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/activate/:id` | public | ? | — | — | — | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/activate/:id` | public | ? | — | n/a | n/a | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | `/paymentLink/integration/binance/webhook` | hidden | no | — | — | — | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/kucoin/activate/:id` | public | ? | — | — | — | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/kucoin/activate/:id` | public | ? | — | n/a | n/a | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | GET | `/paymentLink/locations` | public | yes | 513 | 5 | 103× | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/merchant` | public | ? | — | — | — | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/merchant` | public | ? | — | n/a | n/a | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/payment` | hidden | yes | 472 | — | — | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | POST | `/paymentLink/payment` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | DELETE | `/paymentLink/payment` | public | no | — | 15 | — | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/payment/:id` | public | yes | 32 | — | — | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/payment/:id` | public | yes | 32 | n/a | n/a | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | `/paymentLink/payment/confirm` | public | no | — | 15 | — | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/payment/wait` | public | no | — | 15 | — | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | `/paymentLink/pos` | public | no | — | 1 | — | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/recipient` | public | no | — | 10 | — | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/standard` | public | no | — | — | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/standard/:id` | public | no | — | — | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/stickers` | hidden | no | — | — | — | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/standard` | public | no | — | 5 | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/standard/:id` | public | no | — | 5 | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/stickers` | hidden | no | — | n/a | n/a | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/walletApp` | public | no | — | 33 | — | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | | GET | `/paymentLink/walletApp/:id` | public | yes | 15 | 33 | 0× | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | | GET | `/paymentLink/walletApp/recommended` | public | yes | 15 | 33 | 0× | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | `/payout` | public | ? | — | — | — | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/payout/completion` | hidden | no | — | — | — | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/retry` | hidden | yes | 123 | — | — | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/speedup` | hidden | yes | 123 | — | — | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/pl` | public | ? | — | — | — | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| POST | `/payout` | public | ? | — | n/a | n/a | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/payout/completion` | hidden | no | — | n/a | n/a | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/retry` | hidden | yes | 123 | n/a | n/a | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/speedup` | hidden | yes | 123 | n/a | n/a | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/pl` | public | ? | — | n/a | n/a | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | | GET | `/plp` | public | yes | 472 | — | — | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/pricing` | hidden | no | — | — | — | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| PUT | `/pricing` | hidden | yes | 53 | — | — | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | `/pricing/price` | public | no | — | — | — | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/pricing` | hidden | no | — | n/a | n/a | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| PUT | `/pricing` | hidden | yes | 53 | n/a | n/a | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/pricing/price` | public | no | — | n/a | n/a | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | | GET | `/realunit/account/:address` | public | no | — | 9 | — | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/account/:address/history` | public | no | — | 25 | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/admin/quotes` | public | no | — | 8 | — | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | yes | 61 | — | — | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/registration/:id/forward` | hidden | yes | 323 | — | — | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | yes | 61 | n/a | n/a | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/registration/:id/forward` | hidden | yes | 323 | n/a | n/a | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/admin/transactions` | hidden | no | — | 8 | — | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | POST | `/realunit/balance/pdf` | public | yes | 33 | 1 | 33× | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/brokerbot/buyPrice` | public | no | — | 5 | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -383,7 +388,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/realunit/buy/:id/confirm` | public | no | — | 1 | — | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/compliance/customers` | public | yes | 253 | 7 | 36× | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | `/realunit/compliance/customers/:id` | hidden | yes | 826 | 93 | 9× | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/dossier` | hidden | no | — | — | — | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/dossier` | hidden | no | — | n/a | n/a | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | `/realunit/compliance/customers/:id/files` | hidden | no | — | 4 | — | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | yes | 264 | 5 | 53× | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | `/realunit/confirm-aktionariat` | public | no | — | 3 | — | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -392,7 +397,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/realunit/legal` | public | ? | — | 6 | — | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | | GET | `/realunit/pay/:id/status` | public | yes | 32 | 1 | 32× | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/pay/submit` | public | ? | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/unsigned-transaction` | public | ? | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/unsigned-transaction` | public | no | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/price` | public | no | — | 4 | — | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/price/history` | public | no | — | 4 | — | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/quote/buyPrice` | public | no | — | 5 | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -401,24 +406,24 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/realunit/quote/price` | public | no | — | 3 | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/quote/sellPrice` | public | no | — | 4 | — | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/quote/sellShares` | public | no | — | 4 | — | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/complete` | public | yes | 23 | — | — | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/date` | public | no | — | — | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/complete` | public | yes | 23 | n/a | n/a | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/date` | public | no | — | 1 | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | POST | `/realunit/register/email` | public | ? | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/status` | public | no | — | — | — | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/wallet` | public | no | — | — | — | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/status` | public | no | — | n/a | n/a | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/wallet` | public | no | — | n/a | n/a | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/registration` | public | no | — | 20 | — | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/sell` | public | yes | 253 | 46 | 6× | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/sell/:id/broadcast` | public | no | — | — | — | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/sell/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/sell/:id/unsigned-transactions` | public | no | — | — | — | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/support/:id` | hidden | yes | 421 | — | — | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| PUT | `/realunit/support/:id` | hidden | yes | 421 | n/a | n/a | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | `/realunit/support/:id/data` | hidden | yes | 951 | 67 | 14× | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | POST | `/realunit/support/:id/message` | hidden | yes | 441 | 5 | 88× | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/message/:messageId/file` | hidden | yes | 428 | — | — | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/message/:messageId/file` | hidden | yes | 428 | n/a | n/a | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | `/realunit/support/:id/messages` | hidden | yes | 421 | 5 | 84× | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/activity` | hidden | no | — | — | — | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/clerks` | hidden | no | — | — | — | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/counts` | hidden | no | — | — | — | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/activity` | hidden | no | — | n/a | n/a | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/clerks` | hidden | no | — | n/a | n/a | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/counts` | hidden | no | — | 13 | — | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | `/realunit/support/list` | public | no | — | — | — | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | `/realunit/support/statistics` | hidden | no | — | 13 | — | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | PUT | `/realunit/swap` | public | ? | — | 27 | — | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -430,22 +435,22 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/realunit/transfer` | public | ? | — | 19 | — | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/transfer/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/wallet/status` | public | no | — | 20 | — | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/recall` | hidden | yes | 174 | — | — | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | `/recall` | public | yes | 61 | — | — | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | `/recall/:id` | hidden | yes | 174 | — | — | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | -| PUT | `/recall/:id` | hidden | yes | 10 | — | — | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recall` | hidden | yes | 174 | n/a | n/a | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | `/recall` | public | yes | 61 | n/a | n/a | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recall/:id` | hidden | yes | 174 | n/a | n/a | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | `/recall/:id` | hidden | yes | 10 | n/a | n/a | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | | GET | `/recommendation` | public | no | — | 9 | — | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | | POST | `/recommendation` | hidden | no | — | 9 | — | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/confirm` | hidden | yes | 643 | — | — | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/reject` | hidden | yes | 643 | — | — | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| GET | `/ref` | public | no | — | — | — | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | -| POST | `/reward/ref` | hidden | yes | 156 | — | — | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/:id` | hidden | yes | 156 | — | — | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| POST | `/reward/ref/manual` | hidden | yes | 33 | — | — | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/volumes` | public | yes | 78 | — | — | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/recommendation/:id/confirm` | hidden | yes | 643 | n/a | n/a | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | `/recommendation/:id/reject` | hidden | yes | 643 | n/a | n/a | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | `/ref` | public | no | — | n/a | n/a | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| POST | `/reward/ref` | hidden | yes | 156 | n/a | n/a | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/:id` | hidden | yes | 156 | n/a | n/a | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | `/reward/ref/manual` | hidden | yes | 33 | n/a | n/a | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/volumes` | public | yes | 78 | n/a | n/a | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | | GET | `/route` | public | yes | 124 | 68 | 2× | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | -| PUT | `/route/:id` | hidden | yes | 174 | — | — | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | -| POST | `/scorechain/screening` | public | no | — | — | — | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| PUT | `/route/:id` | hidden | yes | 174 | n/a | n/a | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | +| POST | `/scorechain/screening` | public | no | — | n/a | n/a | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | | GET | `/sell` | public | yes | 124 | 24 | 5× | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | POST | `/sell` | hidden | yes | 253 | 24 | 11× | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | GET | `/sell/:id` | hidden | yes | 377 | 24 | 16× | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | @@ -455,60 +460,60 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/sell/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | GET | `/sell/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | PUT | `/sell/quote` | hidden | yes | 23 | 29 | 1× | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/setting` | public | yes | 5 | — | — | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/:key` | hidden | no | — | — | — | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/customSignUpFees` | hidden | no | — | — | — | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/disabledProcesses` | hidden | no | — | — | — | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | +| GET | `/setting` | public | yes | 5 | n/a | n/a | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/:key` | hidden | no | — | n/a | n/a | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/customSignUpFees` | hidden | no | — | n/a | n/a | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/disabledProcesses` | hidden | no | — | n/a | n/a | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | | GET | `/setting/infoBanner` | public | no | — | 5 | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | -| POST | `/specialExternalAccount` | public | yes | 7 | — | — | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| POST | `/specialExternalAccount` | public | yes | 7 | n/a | n/a | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | | GET | `/statistic` | public | no | — | 3 | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/statistic/status` | public | no | — | — | — | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/statistic/status` | public | no | — | n/a | n/a | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | | GET | `/statistic/transactions` | public | yes | 419 | 8 | 52× | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/support` | public | yes | 61 | — | — | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id` | hidden | yes | 826 | — | — | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support` | public | yes | 61 | n/a | n/a | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id` | hidden | yes | 826 | n/a | n/a | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/:id/ip-log-pdf` | hidden | no | — | 16 | — | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | | POST | `/support/:id/onboarding-pdf` | hidden | no | — | 11 | — | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/:id/scorechain` | hidden | ? | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/:id/transaction-pdf` | hidden | no | — | 16 | — | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues` | hidden | ? | — | — | — | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/:queue/items` | hidden | yes | 253 | — | — | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/clerks` | hidden | no | — | — | — | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues` | hidden | ? | — | n/a | n/a | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/:queue/items` | hidden | yes | 253 | n/a | n/a | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/clerks` | hidden | no | — | n/a | n/a | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/issue` | public | yes | 450 | 18 | 25× | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | POST | `/support/issue` | public | no | — | 18 | — | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | `/support/issue/:id` | hidden | yes | 450 | 18 | 25× | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | `/support/issue/:id` | public | yes | 421 | — | — | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | `/support/issue/:id` | public | yes | 421 | n/a | n/a | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | PUT | `/support/issue/:id/close` | public | yes | 450 | 18 | 25× | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | `/support/issue/:id/data` | hidden | yes | 951 | 67 | 14× | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | POST | `/support/issue/:id/message` | hidden | yes | 441 | 5 | 88× | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id/message/:messageId/file` | public | yes | 428 | — | — | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/activity` | hidden | no | — | — | — | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id/message/:messageId/file` | public | yes | 428 | n/a | n/a | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/activity` | hidden | no | — | n/a | n/a | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | `/support/issue/clerk` | hidden | no | — | 18 | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/clerks` | hidden | no | — | — | — | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/counts` | hidden | no | — | — | — | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/clerks` | hidden | no | — | n/a | n/a | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/counts` | hidden | no | — | 13 | — | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | POST | `/support/issue/escalation/telegram-bind` | hidden | no | — | — | — | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/escalation/telegram-chats` | hidden | no | — | — | — | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/escalation/telegram-test` | hidden | no | — | — | — | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/list` | public | no | — | — | — | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/escalation/telegram-chats` | hidden | no | — | n/a | n/a | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/escalation/telegram-test` | hidden | no | — | n/a | n/a | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/list` | public | no | — | 13 | — | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | `/support/issue/statistics` | hidden | no | — | 13 | — | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | POST | `/support/issue/support` | public | yes | 20 | 18 | 1× | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/kycFileList` | hidden | yes | 253 | — | — | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/kycFileStats` | hidden | no | — | — | — | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/kycFileList` | hidden | yes | 253 | n/a | n/a | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/kycFileStats` | hidden | no | — | n/a | n/a | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/note` | hidden | yes | 9 | 11 | 1× | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | | POST | `/support/note` | hidden | yes | 253 | 11 | 23× | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | | PUT | `/support/note/:id` | hidden | yes | 239 | 11 | 22× | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/note/:id` | hidden | yes | 9 | — | — | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/note/:id` | hidden | yes | 9 | n/a | n/a | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/note/users` | hidden | no | — | 3 | — | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews` | hidden | ? | — | — | — | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews/items` | hidden | yes | 261 | — | — | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-transactions` | hidden | yes | 672 | — | — | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/recommendation-graph/:id/neighbors` | hidden | no | — | — | — | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews` | hidden | no | — | n/a | n/a | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews/items` | hidden | yes | 261 | n/a | n/a | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-transactions` | hidden | yes | 672 | n/a | n/a | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/recommendation-graph/:id/neighbors` | hidden | no | — | n/a | n/a | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/template` | hidden | yes | 8 | 8 | 1× | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | | POST | `/support/template` | hidden | yes | 253 | 8 | 32× | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | | PUT | `/support/template/:id` | hidden | yes | 8 | 8 | 1× | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/template/:id` | hidden | yes | 8 | — | — | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/template/:id` | hidden | yes | 8 | n/a | n/a | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/transaction/:id/refund` | hidden | yes | 13 | 20 | 1× | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/transaction/:id/refund` | hidden | yes | 253 | — | — | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transactionList` | hidden | no | — | — | — | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/transaction/:id/refund` | hidden | yes | 253 | n/a | n/a | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transactionList` | hidden | no | — | n/a | n/a | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | | GET | `/swap` | public | yes | 68 | 34 | 2× | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | POST | `/swap` | hidden | yes | 68 | 34 | 2× | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | `/swap/:id` | hidden | yes | 146 | 34 | 4× | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | @@ -518,71 +523,71 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/swap/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | `/swap/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | PUT | `/swap/quote` | hidden | yes | 23 | 28 | 1× | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/tatum/addressWebhook` | public | no | — | — | — | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | -| PUT | `/trading/rule/:id` | public | yes | 87 | — | — | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| POST | `/tatum/addressWebhook` | public | no | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | `/trading/rule/:id` | public | yes | 87 | n/a | n/a | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | | GET | `/transaction` | public | no | — | 35 | — | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | `/transaction/:id/invoice` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | `/transaction/:id/receipt` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/:id/refund` | public | no | — | 20 | — | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/refund` | public | no | — | — | — | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/target` | hidden | yes | 1051 | — | — | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/refund` | public | no | — | n/a | n/a | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/target` | hidden | yes | 1051 | n/a | n/a | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/ChainReport` | hidden | no | — | 12 | — | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/CoinTracking` | public | no | — | 1 | — | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/admin/:id` | public | yes | 253 | — | — | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:id/stop` | hidden | ? | — | — | — | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:txId/riskAssessment` | hidden | ? | — | — | — | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | yes | 13 | — | — | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| GET | `/transaction/csv` | public | no | — | — | — | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/csv` | public | no | — | — | — | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/admin/:id` | public | yes | 253 | n/a | n/a | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:id/stop` | hidden | ? | — | n/a | n/a | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:txId/riskAssessment` | hidden | ? | — | n/a | n/a | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | yes | 13 | n/a | n/a | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | `/transaction/csv` | public | no | — | n/a | n/a | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/csv` | public | no | — | n/a | n/a | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/detail` | hidden | no | — | 2 | — | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/detail/csv` | public | no | — | — | — | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/detail/csv` | public | no | — | n/a | n/a | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/detail/single` | public | no | — | 35 | — | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/single` | public | no | — | 35 | — | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/target` | hidden | yes | 134 | — | — | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/target` | hidden | yes | 134 | n/a | n/a | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/unassigned` | public | yes | 261 | 23 | 11× | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/user` | public | yes | 328 | 21 | 16× | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user` | public | no | — | 56 | — | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user` | public | yes | 406 | 14 | 29× | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user` | public | yes | 253 | 56 | 5× | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | no | — | — | — | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | yes | 344 | — | — | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/:id` | hidden | yes | 308 | — | — | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/account` | public | yes | 344 | — | — | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | no | — | n/a | n/a | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | yes | 344 | n/a | n/a | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/:id` | hidden | yes | 308 | n/a | n/a | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/account` | public | yes | 344 | n/a | n/a | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user/addresses/:address` | public | yes | 351 | 56 | 6× | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/addresses/:address` | public | no | — | — | — | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/apiFilter/CT` | public | yes | 308 | — | — | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/addresses/:address` | public | no | — | n/a | n/a | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/apiFilter/CT` | public | yes | 308 | n/a | n/a | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/apiKey/CT` | public | yes | 253 | 2 | 126× | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/apiKey/CT` | public | ? | — | — | — | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/apiKey/CT` | public | ? | — | n/a | n/a | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/change` | public | no | — | 1 | — | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/data` | hidden | yes | 406 | 14 | 29× | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user/detail` | public | yes | 328 | 14 | 23× | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/discountCodes` | public | ? | — | — | — | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/mail` | public | yes | 351 | — | — | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/discountCodes` | public | ? | — | n/a | n/a | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/mail` | public | yes | 351 | n/a | n/a | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/mail/verify` | public | yes | 351 | 56 | 6× | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/name` | public | yes | 78 | — | — | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/name` | public | yes | 78 | n/a | n/a | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user/profile` | public | yes | 253 | 24 | 11× | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/ref` | public | no | — | — | — | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/ref` | public | no | — | n/a | n/a | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user/ref` | public | yes | 78 | 28 | 3× | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user/ref` | public | yes | 273 | 28 | 10× | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/specialCodes` | public | ? | — | — | — | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/volumes` | hidden | no | — | — | — | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/userData` | public | yes | 253 | — | — | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData` | hidden | yes | 16 | — | — | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| GET | `/userData/:id` | public | yes | 253 | — | — | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id` | hidden | yes | 384 | — | — | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/bankDatas` | hidden | yes | 284 | — | — | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/fee` | hidden | yes | 253 | — | — | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| DELETE | `/userData/:id/fee` | hidden | yes | 253 | — | — | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/:id/kycFile` | hidden | yes | 253 | — | — | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/merge` | hidden | yes | 331 | — | — | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/volumes` | hidden | no | — | — | — | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/auditPeriodNumbers` | hidden | no | — | — | — | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/download` | public | no | — | — | — | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userDataRelation` | public | yes | 253 | — | — | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| PUT | `/userDataRelation/:id` | public | yes | 7 | — | — | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| DELETE | `/userDataRelation/:id` | public | ? | — | — | — | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| GET | `/version` | hidden | no | — | 3 | — | `AppController.getVersion` | `app.controller.ts` | -| POST | `/wallet` | public | ? | — | — | — | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | -| PUT | `/wallet/:id` | hidden | yes | 20 | — | — | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | `/user/specialCodes` | public | ? | — | n/a | n/a | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/volumes` | hidden | no | — | n/a | n/a | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/userData` | public | yes | 253 | n/a | n/a | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData` | hidden | yes | 16 | n/a | n/a | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | `/userData/:id` | public | yes | 253 | n/a | n/a | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id` | hidden | yes | 384 | n/a | n/a | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/bankDatas` | hidden | yes | 284 | n/a | n/a | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/fee` | hidden | yes | 253 | n/a | n/a | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| DELETE | `/userData/:id/fee` | hidden | yes | 253 | n/a | n/a | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/:id/kycFile` | hidden | yes | 253 | n/a | n/a | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/merge` | hidden | yes | 331 | n/a | n/a | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/volumes` | hidden | no | — | n/a | n/a | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/auditPeriodNumbers` | hidden | no | — | n/a | n/a | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/download` | public | no | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userDataRelation` | public | yes | 253 | n/a | n/a | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| PUT | `/userDataRelation/:id` | public | yes | 7 | n/a | n/a | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | `/userDataRelation/:id` | public | ? | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| GET | `/version` | hidden | no | — | — | — | `AppController.getVersion` | `app.controller.ts` | +| POST | `/wallet` | public | ? | — | n/a | n/a | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | `/wallet/:id` | hidden | yes | 20 | n/a | n/a | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. From 41c5539648112c66b5740e750486ac0654fb2b2c Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:03:53 +0200 Subject: [PATCH 06/19] docs: explain the read-path work and define how it is tested docs/read-path-projections.md explains what the Eager column is for, so the inventory is readable without prior context. Contents: where the overfetching comes from (95 eager relations expanding recursively, 368 load sites requesting object graphs against 24 using a projection); the vocabulary; the five criteria an endpoint must meet before its read path is converted; the risk being guarded against, with the concrete getter that returns false instead of true when one field is missing; and the four-level test definition. The test levels are completeness (no DTO field empty on a fully populated fixture), variants (one fixture per branch that changes the required field set), mutation (removing any field must fail level 1, which proves it looks at anything), and consistency against a second source where a value was materialised while the original is still present. Two findings are recorded because they are easy to get wrong: a select inside find options does not avoid eager relations (measured: 98 columns plain, 81 with a three-field select, 3 with a query builder), and a mocked repository cannot test any of this because it returns what the mock defines regardless of which columns were requested. A column budget was considered and rejected; the reasoning is documented so it is not proposed again. --- CONTRIBUTING.md | 2 +- docs/endpoints.md | 2 + docs/read-path-projections.md | 162 ++++++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 docs/read-path-projections.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2ebd210b5..b22bc9f326 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -522,7 +522,7 @@ The `Eager` column follows a mechanical rule — eager relations apply to the `f - the handler reaches a `find` / `findOne` / `findBy` / `findOneBy` on a repository → `yes` - it loads only through `createQueryBuilder(...).select([...])` or `dataSource.query(...)`, or touches no database at all → `no` -This matters because eager relations expand recursively: a plain `findOne()` on `UserData` already selects 253 columns across 8 joins before any `relations` option is added. +This matters because eager relations expand recursively: a plain `findOne()` on `UserData` already selects 253 columns across 8 joins before any `relations` option is added. [docs/read-path-projections.md](docs/read-path-projections.md) explains the background and how converted read paths are tested. Two details are easy to get wrong when editing the list by hand: diff --git a/docs/endpoints.md b/docs/endpoints.md index bd87d833b1..79dd8c230c 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -20,6 +20,8 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller The `Ratio` column quantifies it where both sides are known. It is the basis for deciding which read paths are worth converting to explicit projections. +[read-path-projections.md](read-path-projections.md) explains the background, the criteria for converting an endpoint, and how the result is tested. + ## How the values are produced - **Endpoints** — from the routing decorators in `src/**/*.controller.ts`, each attributed to the `@Controller` scope preceding it. Four files declare two controller classes with different base paths, one declares `@Controller()` without an argument. Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match. diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md new file mode 100644 index 0000000000..47ce90153c --- /dev/null +++ b/docs/read-path-projections.md @@ -0,0 +1,162 @@ +# Read-path projections + +Why the endpoint inventory carries an `Eager` column, what we intend to do about it, and how the +result is to be tested. + +## The problem + +This service loads far more data than it returns. Measured against the real entity metadata: + +- The whole database schema has **1,736 columns across 99 tables**. +- `PUT /v1/transaction/:id/invoice` selected **1,664 of them** — 96% of the entire schema — to + render a PDF containing a handful of values. That query sat exactly on Postgres' limit of 1,664 + columns per statement, which is why a single new column added elsewhere (`settlementEventId` on + `transaction_request`) broke every invoice and receipt in production until it was fixed. +- Across the endpoints where both sides can be measured, the median endpoint loads **16 columns + per field it returns**; fourteen exceed 100×. + +The column limit was the symptom, not the cause. Loading a thousand columns to return one is +equally wasteful under a limit of 4,096 — it simply would not have failed yet. + +### Where it comes from + +Two properties combine: + +**Eager relations.** 95 relations in this repo are declared `eager: true`. TypeORM expands them +recursively, so a plain `findOne()` on `UserData` already selects **253 columns across 8 joins**, +and one on `LimitRequest` **434 across 15** — before any `relations` option is passed. The +decision what to load therefore lives in the entity definition, not at the call site, and no call +site can see what it triggers. + +**No read model.** 368 load sites request whole object graphs; 24 use a `select` projection. The +same entities serve persistence, business logic and pure output paths such as invoices, receipts, +history and exports — which need fields, not objects. + +## Vocabulary + +| Term | Meaning here | +| ---- | ------------ | +| **Overfetching** | Loading or transferring more data than the result needs. The umbrella term for this whole topic. | +| **Eager loading** | Automatically loading related entities, recursively. The opposite is lazy loading. | +| **Projection** | Selecting only the columns the result needs. The countermeasure. | +| **Read path** | An endpoint that only reads and renders data, and writes nothing back. | +| **Write path** | An endpoint that persists a loaded entity — it needs the complete object. | +| **Read model** | A separate model optimised for reading. Introducing projections for read paths is a small step towards one. | + +Note that eager relations apply to the `find*` family, **not** to `createQueryBuilder` with an +explicit field list, and not to raw SQL. That is the entire basis of the `Eager` column in +[endpoints.md](endpoints.md): it records which mechanism an endpoint's load path uses. + +## What we intend to change + +Read paths select the fields they return, via a query builder with an explicit field list. Write +paths stay as they are — they need complete entities. + +Note that `select` inside `find` options is **not** sufficient: it narrows the root entity but +still pulls in the eager relations. Measured on `Transaction`: `find` selects 98 columns over 2 +joins, `find` with a three-field `select` still 81 over 2, a query builder with three fields +selects 3 over none. + +### When an endpoint qualifies + +All of the following must hold: + +1. **No write to the entity in question** anywhere in the call chain — no `save`, `update`, + `delete` or `remove` on its repository or on the entity manager. The endpoint may write *other* + entities; the criterion applies per load site. +2. **The entity is not handed to code whose use of it is unknown** — an event handler, a generic + service, a queue. +3. **All result-relevant fields are statically determinable.** Ruled out by dynamic field access + (`this[variable]`) unless the field list resolves to a constant. Two such getters exist, both in + `user-data.entity.ts`. +4. **The endpoint returns a DTO**, not an entity and not a binary stream. When an entity is + returned, the required field set is not defined by a contract and cannot be narrowed safely. +5. **The tests below pass.** + +The first four are pre-filters; the fifth decides. + +## The risk this must guard against + +A missing field does not crash. It is simply absent, getters compute with it anyway, and the +endpoint answers 200 with a wrong value. + +The concrete case, from the code that was already fixed once: + +```typescript +get requiredInvoiceFields(): string[] { + return ['accountType'].concat(this.isPersonalAccount ? ['firstname','surname'] : ['organizationName']); +} +get isInvoiceDataComplete(): boolean { + return this.requiredInvoiceFields.every((f) => this[f]); +} +``` + +Leave `surname` out of the projection and `isInvoiceDataComplete` returns `false` where the full +load returns `true`. The invoice is refused with "user data is not complete" although the data is +complete. No error, no log entry. + +This service carries **234 such getters across 50 of its 112 entities**. In an application moving +money, a silent wrong value is worse than a crash: a 500 is found within hours — the outage +described above proves it — a wrong value can run for weeks. + +## Test definition + +Four levels. All of them need a real Postgres instance; a mocked repository returns whatever the +mock defines and cannot see which columns were requested, so it cannot test any of this. + +The schema comes from the entity metadata (`synchronize`), not from replayed migrations — the +reference for a projection is the entity definition. + +### 1. Completeness + +**With a fully populated fixture, no field of the response DTO may be empty.** + +If every field of every participating entity carries a distinguishable value, then any `undefined` +in the result proves the query failed to load something. + +This is the central test. It needs no reference implementation, is generated per endpoint, and does +not age: when a field is added to a DTO later, it is covered from the first run — which is the more +likely failure over time, since nobody will be thinking about projections by then. + +Fixtures are **generated from the metadata**, not hand-written. Every scalar column gets a value +and required relations are created recursively. A hand-written fixture that leaves a field empty +makes the test green and the defect invisible. + +### 2. Variants + +**One fixture per branch that changes the required field set.** + +The getter above needs `firstname` and `surname` for a personal account, but `organizationName` +otherwise. A fixture covering only personal accounts would let a projection missing +`organizationName` pass — and it would then compute wrongly for every corporate customer. + +Branches to cover are found where a getter reads a field list conditionally, or where its result +depends on a status field. + +### 3. Mutation + +**Remove each field of the projection individually; level 1 must fail every time.** + +This proves the test looks at anything at all. Where removing a field changes nothing, one of two +things is true: the field is unnecessary and can be dropped permanently, or the fixture has a gap +at exactly that point — and a real defect would have slipped through there. + +Without this level you never know whether a green test verified something or is merely green. + +### 4. Consistency against a second source + +**Where the same value exists twice, the two must agree.** + +Applies wherever a value was materialised into its own column while the original source is still +present. In the financial log, `totalBalanceChf` exists both as a column and inside +`message->balancesTotal->totalBalanceChf`; every row must carry the same value in both. Where such +an invariant exists it is the strongest available test, because it needs no second implementation +that could itself be written wrong. + +### Deliberately not part of this: a column budget + +An upper bound on the number of columns per query was considered and rejected. A projection is +already the protection — with an explicit field list, a new column three subsystems away cannot +inflate the query, which was the original failure. The budget number would be arbitrary, would turn +red on every legitimate new field, and after the third increase would be a ritual rather than a +check. From 4973b204231063eb0155000b2ebf6d3438b15799 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:09:25 +0200 Subject: [PATCH 07/19] docs: fix body extraction for destructured parameters Methods whose parameters are destructured - '@Query() { a, b }: SomeDto' - had their body extracted from the first brace after the signature, which is the destructuring pattern, not the method body. AssetController.getAllAsset for instance came out as ' blockchains, includePrivate', so no database access could be found in it. The parameter list is now skipped before looking for the body brace. Effect: 35 more endpoints are correctly identified as loading object graphs (295 instead of 260), unresolved drops from 65 to 60, and the number with both a column count and a field count rises from 113 to 134. --- docs/endpoints.md | 110 +++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/docs/endpoints.md b/docs/endpoints.md index 79dd8c230c..929390a726 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -33,16 +33,16 @@ The `Ratio` column quantifies it where both sides are known. It is the basis for | | Endpoints | Share | | --- | --- | --- | -| Eager determined (`yes`/`no`) | 468 | 88 % | -| — of those `yes` | 260 | | -| — of those `no` | 208 | | -| Eager unresolved (`?`) | 65 | 12 % | -| Column count measured | 260 | 49 % | +| Eager determined (`yes`/`no`) | 473 | 89 % | +| — of those `yes` | 295 | | +| — of those `no` | 178 | | +| Eager unresolved (`?`) | 60 | 11 % | +| Column count measured | 295 | 55 % | | Field count known | 220 | 41 % | | — returns `void`, no fields to count | 113 | 21 % | | — returns no DTO (entity, string, record) | 172 | 32 % | | — genuinely unrecognised | 28 | 5 % | -| Both, so `Ratio` available | 113 | 21 % | +| Both, so `Ratio` available | 134 | 25 % | Most blanks in **Fields** are not measurement gaps: an endpoint returning `void` has nothing to count, and one returning an entity or a raw type has no declared field set. Only 28 are genuinely unrecognised. Those show `—`, the others `n/a`. @@ -74,19 +74,19 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/app/settings/flags` | hidden | no | — | 7 | — | `AppController.getFlags` | `app.controller.ts` | | GET | `/asset` | public | no | — | 3 | — | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | | PUT | `/asset/:id` | public | yes | 33 | n/a | n/a | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | -| POST | `/auth` | public | ? | — | 1 | — | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/2fa` | hidden | no | — | n/a | n/a | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa` | public | no | — | 3 | — | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth` | public | yes | 78 | 1 | 78× | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/2fa` | hidden | yes | 253 | n/a | n/a | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa` | public | yes | 253 | 3 | 84× | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/2fa/verify` | public | yes | 253 | n/a | n/a | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/alby` | hidden | ? | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby/redirect/:id` | hidden | yes | 23 | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby/redirect/:id` | hidden | yes | 78 | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/challenge` | hidden | yes | 20 | 1 | 20× | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/mail` | hidden | yes | 20 | n/a | n/a | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/mail/confirm` | public | yes | 470 | 2 | 235× | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/mail/redirect` | hidden | yes | 253 | 1 | 253× | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signIn` | hidden | yes | 23 | 1 | 23× | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signIn` | hidden | yes | 78 | 1 | 78× | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/signMessage` | public | no | — | 2 | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signUp` | public | no | — | 1 | — | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signUp` | public | yes | 78 | 1 | 78× | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/verifySignature` | public | yes | 6 | 1 | 6× | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/balance/pdf` | public | no | — | 1 | — | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | | GET | `/balance/pdf/blockchains` | public | no | — | n/a | n/a | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | @@ -114,7 +114,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/buy/:id` | hidden | yes | 134 | 30 | 4× | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | `/buy/:id` | public | yes | 56 | 30 | 2× | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | GET | `/buy/:id/history` | hidden | yes | 497 | — | — | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos` | public | no | — | 69 | — | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos` | public | yes | 78 | 69 | 1× | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | `/buy/paymentInfos/:id/confirm` | public | yes | 504 | n/a | n/a | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | `/buy/paymentInfos/:id/invoice` | public | yes | 504 | 1 | 504× | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | GET | `/buy/personalIban` | public | yes | 101 | 9 | 11× | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | @@ -196,7 +196,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/exchange/:exchange/withdraw` | hidden | no | — | n/a | n/a | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | | GET | `/exchange/:exchange/withdraw/:id` | public | no | — | n/a | n/a | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | | GET | `/exchange/trade/:id` | hidden | no | — | n/a | n/a | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/faucet` | public | yes | 33 | 23 | 1× | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | `/faucet` | public | yes | 78 | 23 | 3× | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | | POST | `/fee` | public | yes | 65 | n/a | n/a | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | | GET | `/fiat` | public | yes | 23 | 4 | 6× | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | | POST | `/fiatOutput` | public | yes | 377 | n/a | n/a | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | @@ -205,11 +205,11 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/gs/db` | public | ? | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | | POST | `/gs/db/custom` | hidden | ? | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | | POST | `/gs/debug` | hidden | ? | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/evm/bridgeApproval` | hidden | no | — | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/coinTransaction` | hidden | no | — | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractApproval` | hidden | no | — | n/a | n/a | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/bridgeApproval` | hidden | yes | 33 | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/coinTransaction` | hidden | yes | 6 | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractApproval` | hidden | yes | 33 | n/a | n/a | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | `/gs/evm/contractTransaction` | hidden | no | — | n/a | n/a | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/rawTransaction` | public | no | — | n/a | n/a | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/rawTransaction` | public | yes | 6 | n/a | n/a | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | `/gs/evm/tokenTransaction` | hidden | yes | 33 | n/a | n/a | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | | GET | `/gs/support` | hidden | yes | 907 | n/a | n/a | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | | GET | `/health` | public | no | — | n/a | n/a | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | @@ -230,8 +230,8 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/kyc` | public | no | — | n/a | n/a | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | POST | `/kyc` | public | no | — | n/a | n/a | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | PUT | `/kyc` | public | no | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/2fa` | public | no | — | n/a | n/a | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa` | public | no | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/2fa` | public | yes | 253 | n/a | n/a | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa` | public | ? | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | POST | `/kyc/2fa/verify` | public | ? | — | n/a | n/a | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | POST | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | @@ -248,9 +248,9 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/kyc/admin/step/:id` | hidden | yes | 385 | n/a | n/a | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | POST | `/kyc/admin/webhook` | hidden | yes | 243 | n/a | n/a | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | GET | `/kyc/client/payments` | public | yes | 1092 | n/a | n/a | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users` | public | no | — | 1 | — | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents` | public | no | — | 2 | — | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents/:type` | public | no | — | n/a | n/a | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users` | public | yes | 20 | 1 | 20× | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents` | public | yes | 78 | 2 | 39× | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents/:type` | public | yes | 78 | n/a | n/a | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | | GET | `/kyc/client/users/:id/payments` | public | yes | 1092 | n/a | n/a | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | | GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | @@ -279,9 +279,9 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/kyc/file/:id` | hidden | yes | 264 | 5 | 53× | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/ident/manual/:id` | hidden | yes | 23 | n/a | n/a | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | POST | `/kyc/ident/sumsub` | public | ? | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/transfer` | hidden | ? | — | n/a | n/a | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/transfer` | hidden | yes | 20 | n/a | n/a | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/transfer` | public | yes | 331 | n/a | n/a | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/transfer` | hidden | ? | — | n/a | n/a | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | `/kyc/transfer` | hidden | yes | 20 | n/a | n/a | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/users` | public | yes | 561 | 3 | 187× | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/language` | public | yes | 7 | 5 | 1× | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | | PUT | `/limitRequest/:id` | public | yes | 434 | n/a | n/a | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | @@ -375,45 +375,45 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/pricing/price` | public | no | — | n/a | n/a | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | | GET | `/realunit/account/:address` | public | no | — | 9 | — | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/account/:address/history` | public | no | — | 25 | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/quotes` | public | no | — | 8 | — | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/quotes` | public | yes | 112 | 8 | 14× | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | yes | 61 | n/a | n/a | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/admin/registration/:id/forward` | hidden | yes | 323 | n/a | n/a | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/transactions` | hidden | no | — | 8 | — | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/balance/pdf` | public | yes | 33 | 1 | 33× | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/transactions` | hidden | yes | 362 | 8 | 45× | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/balance/pdf` | public | yes | 78 | 1 | 78× | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/brokerbot/buyPrice` | public | no | — | 5 | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/brokerbot/buyShares` | public | no | — | 5 | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/brokerbot/info` | public | no | — | 8 | — | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/brokerbot/price` | public | no | — | 3 | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellPrice` | public | no | — | 4 | — | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellShares` | public | no | — | 4 | — | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellPrice` | public | yes | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellShares` | public | yes | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/buy` | public | yes | 364 | 37 | 10× | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/buy/:id/confirm` | public | no | — | 1 | — | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/compliance/customers` | public | yes | 253 | 7 | 36× | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | `/realunit/compliance/customers/:id` | hidden | yes | 826 | 93 | 9× | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/dossier` | hidden | no | — | n/a | n/a | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/files` | hidden | no | — | 4 | — | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/dossier` | hidden | yes | 264 | n/a | n/a | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/files` | hidden | yes | 264 | 4 | 66× | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | yes | 264 | 5 | 53× | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | `/realunit/confirm-aktionariat` | public | no | — | 3 | — | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/holders` | public | no | — | 10 | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/legal` | public | no | — | 6 | — | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| PUT | `/realunit/legal` | public | ? | — | 6 | — | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| GET | `/realunit/legal` | public | yes | 78 | 6 | 13× | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| PUT | `/realunit/legal` | public | yes | 78 | 6 | 13× | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | | GET | `/realunit/pay/:id/status` | public | yes | 32 | 1 | 32× | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/pay/submit` | public | ? | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/pay/unsigned-transaction` | public | no | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/price` | public | no | — | 4 | — | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/price/history` | public | no | — | 4 | — | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/price/history` | public | yes | 40 | 4 | 10× | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/quote/buyPrice` | public | no | — | 5 | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/quote/buyShares` | public | no | — | 5 | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/quote/info` | public | no | — | 8 | — | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/quote/price` | public | no | — | 3 | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellPrice` | public | no | — | 4 | — | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellShares` | public | no | — | 4 | — | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellPrice` | public | yes | 78 | 4 | 20× | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellShares` | public | yes | 78 | 4 | 20× | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | POST | `/realunit/register/complete` | public | yes | 23 | n/a | n/a | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/register/date` | public | no | — | 1 | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | POST | `/realunit/register/email` | public | ? | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/status` | public | no | — | n/a | n/a | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/status` | public | yes | 78 | n/a | n/a | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | POST | `/realunit/register/wallet` | public | no | — | n/a | n/a | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/registration` | public | no | — | 20 | — | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/registration` | public | yes | 78 | 20 | 4× | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/sell` | public | yes | 253 | 46 | 6× | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/sell/:id/broadcast` | public | no | — | — | — | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/sell/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -428,19 +428,19 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/realunit/support/counts` | hidden | no | — | 13 | — | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | `/realunit/support/list` | public | no | — | — | — | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | `/realunit/support/statistics` | hidden | no | — | 13 | — | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| PUT | `/realunit/swap` | public | ? | — | 27 | — | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/swap` | public | yes | 78 | 27 | 3× | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/swap/:id/broadcast` | public | no | — | — | — | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/swap/:id/unsigned-transaction` | public | no | — | 1 | — | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/tokenInfo` | public | no | — | 7 | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/multi` | public | yes | 33 | 1 | 33× | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/single` | public | yes | 33 | 1 | 33× | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/transfer` | public | ? | — | 19 | — | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/multi` | public | yes | 78 | 1 | 78× | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/single` | public | yes | 78 | 1 | 78× | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/transfer` | public | yes | 78 | 19 | 4× | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/transfer/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/wallet/status` | public | no | — | 20 | — | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/wallet/status` | public | yes | 78 | 20 | 4× | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/recall` | hidden | yes | 174 | n/a | n/a | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | `/recall` | public | yes | 61 | n/a | n/a | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | `/recall` | public | yes | 78 | n/a | n/a | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | | GET | `/recall/:id` | hidden | yes | 174 | n/a | n/a | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | -| PUT | `/recall/:id` | hidden | yes | 10 | n/a | n/a | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | `/recall/:id` | hidden | yes | 78 | n/a | n/a | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | | GET | `/recommendation` | public | no | — | 9 | — | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | | POST | `/recommendation` | hidden | no | — | 9 | — | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | | PUT | `/recommendation/:id/confirm` | hidden | yes | 643 | n/a | n/a | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | @@ -448,7 +448,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/ref` | public | no | — | n/a | n/a | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | | POST | `/reward/ref` | hidden | yes | 156 | n/a | n/a | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | | PUT | `/reward/ref/:id` | hidden | yes | 156 | n/a | n/a | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| POST | `/reward/ref/manual` | hidden | yes | 33 | n/a | n/a | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | `/reward/ref/manual` | hidden | yes | 98 | n/a | n/a | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | | PUT | `/reward/ref/volumes` | public | yes | 78 | n/a | n/a | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | | GET | `/route` | public | yes | 124 | 68 | 2× | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | | PUT | `/route/:id` | hidden | yes | 174 | n/a | n/a | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | @@ -463,7 +463,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/sell/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | PUT | `/sell/quote` | hidden | yes | 23 | 29 | 1× | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | GET | `/setting` | public | yes | 5 | n/a | n/a | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/:key` | hidden | no | — | n/a | n/a | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/:key` | hidden | yes | 5 | n/a | n/a | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | | PUT | `/setting/customSignUpFees` | hidden | no | — | n/a | n/a | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | | PUT | `/setting/disabledProcesses` | hidden | no | — | n/a | n/a | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | | GET | `/setting/infoBanner` | public | no | — | 5 | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | @@ -481,7 +481,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/support/call-queues/:queue/items` | hidden | yes | 253 | n/a | n/a | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/call-queues/clerks` | hidden | no | — | n/a | n/a | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/issue` | public | yes | 450 | 18 | 25× | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue` | public | no | — | 18 | — | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue` | public | yes | 34 | 18 | 2× | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | `/support/issue/:id` | hidden | yes | 450 | 18 | 25× | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | PUT | `/support/issue/:id` | public | yes | 421 | n/a | n/a | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | PUT | `/support/issue/:id/close` | public | yes | 450 | 18 | 25× | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | @@ -513,11 +513,11 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/support/template` | hidden | yes | 253 | 8 | 32× | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | | PUT | `/support/template/:id` | hidden | yes | 8 | 8 | 1× | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | | DELETE | `/support/template/:id` | hidden | yes | 8 | n/a | n/a | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transaction/:id/refund` | hidden | yes | 13 | 20 | 1× | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transaction/:id/refund` | hidden | yes | 98 | 20 | 5× | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | | PUT | `/support/transaction/:id/refund` | hidden | yes | 253 | n/a | n/a | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/transactionList` | hidden | no | — | n/a | n/a | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | | GET | `/swap` | public | yes | 68 | 34 | 2× | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/swap` | hidden | yes | 68 | 34 | 2× | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | `/swap` | hidden | yes | 78 | 34 | 2× | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | `/swap/:id` | hidden | yes | 146 | 34 | 4× | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | PUT | `/swap/:id` | public | yes | 68 | 34 | 2× | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | `/swap/:id/history` | hidden | yes | 509 | — | — | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | @@ -525,7 +525,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/swap/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | `/swap/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | PUT | `/swap/quote` | hidden | yes | 23 | 28 | 1× | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/tatum/addressWebhook` | public | no | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| POST | `/tatum/addressWebhook` | public | ? | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | | PUT | `/trading/rule/:id` | public | yes | 87 | n/a | n/a | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | | GET | `/transaction` | public | no | — | 35 | — | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | `/transaction/:id/invoice` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | @@ -563,7 +563,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/user/change` | public | no | — | 1 | — | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/data` | hidden | yes | 406 | 14 | 29× | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user/detail` | public | yes | 328 | 14 | 23× | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/discountCodes` | public | ? | — | n/a | n/a | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/discountCodes` | public | yes | 78 | n/a | n/a | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user/mail` | public | yes | 351 | n/a | n/a | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/mail/verify` | public | yes | 351 | 56 | 6× | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user/name` | public | yes | 78 | n/a | n/a | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | @@ -571,7 +571,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/user/ref` | public | no | — | n/a | n/a | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user/ref` | public | yes | 78 | 28 | 3× | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user/ref` | public | yes | 273 | 28 | 10× | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/specialCodes` | public | ? | — | n/a | n/a | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/specialCodes` | public | yes | 78 | n/a | n/a | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user/volumes` | hidden | no | — | n/a | n/a | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/userData` | public | yes | 253 | n/a | n/a | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | POST | `/userData` | hidden | yes | 16 | n/a | n/a | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | @@ -584,7 +584,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/userData/:id/merge` | hidden | yes | 331 | n/a | n/a | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | `/userData/:id/volumes` | hidden | no | — | n/a | n/a | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | `/userData/auditPeriodNumbers` | hidden | no | — | n/a | n/a | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/download` | public | no | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/download` | public | ? | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | POST | `/userDataRelation` | public | yes | 253 | n/a | n/a | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | PUT | `/userDataRelation/:id` | public | yes | 7 | n/a | n/a | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | DELETE | `/userDataRelation/:id` | public | ? | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | From ff19685108a56ab82b694ec066146a8fd671e458 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:12:17 +0200 Subject: [PATCH 08/19] docs: resolve inherited write operations instead of marking them unknown Two thirds of the unresolved entries came from one pattern: save, update, create, delete and count are inherited from the repository base class, so they were not found on the concrete repository and the chain was treated as unresolved. Those are write and count operations - they do not trigger eager loading at all, so marking them unknown was simply wrong. The same applies to calls into built-in classes such as Map and DataSource. Unresolved drops from 60 to 12, resolution reaches 98%. The eager count is unchanged at 295 - the additional entries all resolve to 'no', as expected for write operations. --- docs/endpoints.md | 102 +++++++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/docs/endpoints.md b/docs/endpoints.md index 929390a726..df4aa05ce1 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -33,10 +33,10 @@ The `Ratio` column quantifies it where both sides are known. It is the basis for | | Endpoints | Share | | --- | --- | --- | -| Eager determined (`yes`/`no`) | 473 | 89 % | +| Eager determined (`yes`/`no`) | 521 | 98 % | | — of those `yes` | 295 | | -| — of those `no` | 178 | | -| Eager unresolved (`?`) | 60 | 11 % | +| — of those `no` | 226 | | +| Eager unresolved (`?`) | 12 | 2 % | | Column count measured | 295 | 55 % | | Field count known | 220 | 41 % | | — returns `void`, no fields to count | 113 | 21 % | @@ -59,10 +59,10 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | Method | Path | Swagger | Eager | Cols | Fields | Ratio | Handler | File | | ------ | ---- | ------- | ----- | ---: | -----: | ----: | ------- | ---- | | GET | `/` | public | no | — | n/a | n/a | `AppController.home` | `app.controller.ts` | -| POST | `/CustodyProvider` | public | ? | — | n/a | n/a | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | `/CustodyProvider` | public | no | — | n/a | n/a | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | | PUT | `/CustodyProvider/:id` | hidden | yes | 6 | n/a | n/a | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | | POST | `/admin/lightning/rotate-webhook-secrets` | hidden | no | — | n/a | n/a | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/mail` | public | ? | — | n/a | n/a | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/mail` | public | no | — | n/a | n/a | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | | POST | `/admin/payout` | hidden | yes | 156 | n/a | n/a | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | | POST | `/admin/sendLetter` | hidden | no | — | n/a | n/a | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | | POST | `/alchemy/addressWebhook` | public | ? | — | n/a | n/a | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | @@ -147,14 +147,14 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/custody/account` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | POST | `/custody/account` | public | no | — | 8 | — | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | `/custody/account/:id` | public | ? | — | 8 | — | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | `/custody/account/:id` | public | no | — | 8 | — | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/access` | public | yes | 238 | 4 | 60× | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | POST | `/custody/account/:id/access` | public | no | — | 4 | — | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | PUT | `/custody/account/:id/access/:accessId` | public | no | — | 4 | — | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | DELETE | `/custody/account/:id/access/:accessId` | public | no | — | n/a | n/a | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/balance` | public | yes | 253 | 12 | 21× | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/history` | public | yes | 253 | 6 | 42× | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/order` | public | ? | — | 8 | — | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/order` | public | no | — | 8 | — | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | GET | `/custody/account/:id/pdf` | public | yes | 253 | 1 | 253× | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | | POST | `/custody/admin/order/:id/approve` | public | yes | 217 | n/a | n/a | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | | GET | `/custody/admin/orders` | public | no | — | n/a | n/a | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | @@ -184,7 +184,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/dex/complete-orders` | hidden | yes | 156 | n/a | n/a | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | | GET | `/dex/liquidity-after-purchase` | hidden | yes | 156 | n/a | n/a | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | | POST | `/dex/purchase-liquidity` | hidden | no | — | n/a | n/a | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/reserve-liquidity` | hidden | ? | — | n/a | n/a | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/reserve-liquidity` | hidden | no | — | n/a | n/a | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | | GET | `/dex/transfer-completion` | hidden | no | — | n/a | n/a | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | | POST | `/dex/transfer-liquidity` | hidden | no | — | n/a | n/a | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | | GET | `/exchange/:exchange/balances` | public | no | — | n/a | n/a | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | @@ -204,7 +204,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/frankencoin/info` | public | yes | 11 | — | — | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | | POST | `/gs/db` | public | ? | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | | POST | `/gs/db/custom` | hidden | ? | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/debug` | hidden | ? | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/debug` | hidden | no | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | | POST | `/gs/evm/bridgeApproval` | hidden | yes | 33 | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | `/gs/evm/coinTransaction` | hidden | yes | 6 | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | `/gs/evm/contractApproval` | hidden | yes | 33 | n/a | n/a | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | @@ -231,16 +231,16 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/kyc` | public | no | — | n/a | n/a | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | PUT | `/kyc` | public | no | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/2fa` | public | yes | 253 | n/a | n/a | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa` | public | ? | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa/verify` | public | ? | — | n/a | n/a | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa` | public | no | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa/verify` | public | no | — | n/a | n/a | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | POST | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/kyc/:code/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/kyc/:id/documents` | public | yes | 78 | 2 | 39× | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/kyc/:id/documents/:type` | public | yes | 328 | n/a | n/a | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | `/kyc/:step` | public | no | — | 5 | — | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/admin/blacklist/ip` | hidden | ? | — | n/a | n/a | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| DELETE | `/kyc/admin/blacklist/ip` | hidden | ? | — | n/a | n/a | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/blacklist/ip` | hidden | no | — | n/a | n/a | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| DELETE | `/kyc/admin/blacklist/ip` | hidden | no | — | n/a | n/a | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | POST | `/kyc/admin/ident/file/sync` | hidden | yes | 243 | n/a | n/a | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | POST | `/kyc/admin/log` | hidden | yes | 253 | n/a | n/a | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | PUT | `/kyc/admin/log/:id` | hidden | yes | 17 | n/a | n/a | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | @@ -254,28 +254,28 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/kyc/client/users/:id/payments` | public | yes | 1092 | n/a | n/a | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | | GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/data/:type/:id` | hidden | ? | — | n/a | n/a | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/additional/:id` | public | ? | — | n/a | n/a | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/address/:id` | public | ? | — | n/a | n/a | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/authority/:id` | public | ? | — | n/a | n/a | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | `/kyc/data/:type/:id` | hidden | no | — | n/a | n/a | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/additional/:id` | public | no | — | n/a | n/a | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/address/:id` | public | no | — | n/a | n/a | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/authority/:id` | public | no | — | n/a | n/a | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/beneficial/:id` | public | yes | 23 | n/a | n/a | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/confirmation/:id` | public | ? | — | n/a | n/a | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/contact/:id` | hidden | ? | — | n/a | n/a | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/confirmation/:id` | public | no | — | n/a | n/a | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/contact/:id` | hidden | no | — | n/a | n/a | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/data/financial/:id` | public | yes | 7 | n/a | n/a | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/financial/:id` | public | ? | — | n/a | n/a | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/legal/:id` | public | ? | — | n/a | n/a | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/name/:id` | public | ? | — | n/a | n/a | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/financial/:id` | public | no | — | n/a | n/a | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/legal/:id` | public | no | — | n/a | n/a | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/name/:id` | public | no | — | n/a | n/a | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/nationality/:id` | public | yes | 23 | n/a | n/a | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/operational/:id` | public | no | — | n/a | n/a | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/owner/:id` | public | ? | — | n/a | n/a | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/owner/:id` | public | no | — | n/a | n/a | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/payment/:id` | public | yes | 23 | n/a | n/a | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/personal/:id` | public | yes | 23 | n/a | n/a | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/phone/:id` | public | yes | 13 | n/a | n/a | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/recall/:id` | public | yes | 23 | n/a | n/a | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/recommendation/:id` | public | yes | 308 | n/a | n/a | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/residence/:id` | public | ? | — | n/a | n/a | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/residence/:id` | public | no | — | n/a | n/a | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/data/signatory/:id` | public | yes | 23 | n/a | n/a | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/statutes/:id` | public | ? | — | n/a | n/a | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/statutes/:id` | public | no | — | n/a | n/a | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/file/:id` | hidden | yes | 264 | 5 | 53× | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/ident/manual/:id` | hidden | yes | 23 | n/a | n/a | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | POST | `/kyc/ident/sumsub` | public | ? | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | @@ -293,26 +293,26 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/liquidityManagement/pipeline/in-progress` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | | POST | `/liquidityManagement/pipeline/sell` | hidden | no | — | n/a | n/a | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | | GET | `/liquidityManagement/pipeline/stopped` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/rule` | public | ? | — | 9 | — | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| POST | `/liquidityManagement/rule` | public | no | — | 9 | — | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | GET | `/liquidityManagement/rule/:id` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PUT | `/liquidityManagement/rule/:id` | hidden | yes | 83 | n/a | n/a | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/settings` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | GET | `/lnurla` | public | ? | — | 2 | — | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| POST | `/lnurla` | public | ? | — | 2 | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | `/lnurla/status` | public | ? | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| POST | `/lnurla` | public | no | — | 2 | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurla/status` | public | no | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | | GET | `/lnurld/:id` | public | no | — | — | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | | GET | `/lnurld/cb/:id/:var` | public | no | — | — | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurlp/:id` | public | ? | — | n/a | n/a | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/:id` | public | no | — | n/a | n/a | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | POST | `/lnurlp/:id` | public | yes | 490 | — | — | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | DELETE | `/lnurlp/cancel/:id` | public | yes | 545 | 14 | 39× | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | GET | `/lnurlp/cb/:id` | public | no | — | n/a | n/a | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/tx/:id` | public | ? | — | n/a | n/a | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/tx/:id` | public | no | — | n/a | n/a | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | GET | `/lnurlp/wait/:id` | public | yes | 545 | 1 | 545× | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | GET | `/lnurlw/:id` | public | no | — | — | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | | GET | `/lnurlw/cb/:id` | public | no | — | n/a | n/a | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | `/log` | public | ? | — | n/a | n/a | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| POST | `/log` | public | no | — | n/a | n/a | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | | PUT | `/log/:id` | hidden | yes | 11 | n/a | n/a | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | | PUT | `/log/financial/validity` | hidden | no | — | n/a | n/a | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | | GET | `/monitoring/data` | public | no | — | n/a | n/a | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | @@ -321,14 +321,14 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/mros` | public | yes | 253 | n/a | n/a | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | | GET | `/mros/:id` | hidden | yes | 243 | n/a | n/a | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | | PUT | `/mros/:id` | hidden | yes | 78 | n/a | n/a | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/node/:node/:mode/cmd` | hidden | ? | — | n/a | n/a | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/:mode/cmd` | hidden | no | — | n/a | n/a | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | | POST | `/node/:node/:mode/rpc` | hidden | no | — | n/a | n/a | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/:mode/tx/:txId` | hidden | ? | — | n/a | n/a | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/cmd` | hidden | ? | — | n/a | n/a | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/:mode/tx/:txId` | hidden | no | — | n/a | n/a | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/cmd` | hidden | no | — | n/a | n/a | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | | POST | `/node/:node/rpc` | public | no | — | n/a | n/a | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/tx/:txId` | hidden | ? | — | n/a | n/a | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/notification/send-mail` | public | ? | — | n/a | n/a | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | `/payIn` | public | ? | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | `/node/:node/tx/:txId` | hidden | no | — | n/a | n/a | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/notification/send-mail` | public | no | — | n/a | n/a | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | `/payIn` | public | no | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | POST | `/payIn/lnurlpDeposit/:uniqueId` | public | ? | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | | POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | ? | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | | POST | `/payIn/poll` | hidden | ? | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | @@ -341,15 +341,15 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/paymentLink/:id/pos` | hidden | yes | 513 | n/a | n/a | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | `/paymentLink/assign` | public | yes | 472 | 15 | 31× | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/config` | public | yes | 253 | 1 | 253× | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/config` | public | ? | — | n/a | n/a | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/config` | public | no | — | n/a | n/a | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/history` | public | no | — | 16 | — | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/activate/:id` | public | ? | — | n/a | n/a | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/activate/:id` | public | no | — | n/a | n/a | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | `/paymentLink/integration/binance/webhook` | hidden | no | — | — | — | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/kucoin/activate/:id` | public | ? | — | n/a | n/a | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/kucoin/activate/:id` | public | no | — | n/a | n/a | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | GET | `/paymentLink/locations` | public | yes | 513 | 5 | 103× | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/merchant` | public | ? | — | n/a | n/a | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/merchant` | public | no | — | n/a | n/a | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/paymentLink/payment` | hidden | yes | 472 | — | — | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | POST | `/paymentLink/payment` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | DELETE | `/paymentLink/payment` | public | no | — | 15 | — | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | @@ -364,11 +364,11 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/paymentLink/walletApp` | public | no | — | 33 | — | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | | GET | `/paymentLink/walletApp/:id` | public | yes | 15 | 33 | 0× | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | | GET | `/paymentLink/walletApp/recommended` | public | yes | 15 | 33 | 0× | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | `/payout` | public | ? | — | n/a | n/a | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout` | public | no | — | n/a | n/a | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | | GET | `/payout/completion` | hidden | no | — | n/a | n/a | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | | POST | `/payout/retry` | hidden | yes | 123 | n/a | n/a | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | | POST | `/payout/speedup` | hidden | yes | 123 | n/a | n/a | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/pl` | public | ? | — | n/a | n/a | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | `/pl` | public | no | — | n/a | n/a | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | | GET | `/plp` | public | yes | 472 | — | — | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | `/pricing` | hidden | no | — | n/a | n/a | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | | PUT | `/pricing` | hidden | yes | 53 | n/a | n/a | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | @@ -398,7 +398,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/realunit/legal` | public | yes | 78 | 6 | 13× | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | | PUT | `/realunit/legal` | public | yes | 78 | 6 | 13× | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | | GET | `/realunit/pay/:id/status` | public | yes | 32 | 1 | 32× | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/submit` | public | ? | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/submit` | public | no | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | `/realunit/pay/unsigned-transaction` | public | no | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/price` | public | no | — | 4 | — | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/price/history` | public | yes | 40 | 4 | 10× | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -410,7 +410,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/realunit/quote/sellShares` | public | yes | 78 | 4 | 20× | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | POST | `/realunit/register/complete` | public | yes | 23 | n/a | n/a | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/register/date` | public | no | — | 1 | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/email` | public | ? | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/email` | public | no | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/register/status` | public | yes | 78 | n/a | n/a | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | POST | `/realunit/register/wallet` | public | no | — | n/a | n/a | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | `/realunit/registration` | public | yes | 78 | 20 | 4× | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -477,7 +477,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/support/:id/onboarding-pdf` | hidden | no | — | 11 | — | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/:id/scorechain` | hidden | ? | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/:id/transaction-pdf` | hidden | no | — | 16 | — | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues` | hidden | ? | — | n/a | n/a | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues` | hidden | no | — | n/a | n/a | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/call-queues/:queue/items` | hidden | yes | 253 | n/a | n/a | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/call-queues/clerks` | hidden | no | — | n/a | n/a | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/issue` | public | yes | 450 | 18 | 25× | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | @@ -536,8 +536,8 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/transaction/ChainReport` | hidden | no | — | 12 | — | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | `/transaction/CoinTracking` | public | no | — | 1 | — | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | `/transaction/admin/:id` | public | yes | 253 | n/a | n/a | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:id/stop` | hidden | ? | — | n/a | n/a | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:txId/riskAssessment` | hidden | ? | — | n/a | n/a | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:id/stop` | hidden | no | — | n/a | n/a | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:txId/riskAssessment` | hidden | no | — | n/a | n/a | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | | PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | yes | 13 | n/a | n/a | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | | GET | `/transaction/csv` | public | no | — | n/a | n/a | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | `/transaction/csv` | public | no | — | n/a | n/a | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | @@ -559,7 +559,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | DELETE | `/user/addresses/:address` | public | no | — | n/a | n/a | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | `/user/apiFilter/CT` | public | yes | 308 | n/a | n/a | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/apiKey/CT` | public | yes | 253 | 2 | 126× | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/apiKey/CT` | public | ? | — | n/a | n/a | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/apiKey/CT` | public | no | — | n/a | n/a | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/change` | public | no | — | 1 | — | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | `/user/data` | hidden | yes | 406 | 14 | 29× | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | `/user/detail` | public | yes | 328 | 14 | 23× | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | @@ -587,9 +587,9 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/userData/download` | public | ? | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | POST | `/userDataRelation` | public | yes | 253 | n/a | n/a | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | PUT | `/userDataRelation/:id` | public | yes | 7 | n/a | n/a | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| DELETE | `/userDataRelation/:id` | public | ? | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | `/userDataRelation/:id` | public | no | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | GET | `/version` | hidden | no | — | — | — | `AppController.getVersion` | `app.controller.ts` | -| POST | `/wallet` | public | ? | — | n/a | n/a | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| POST | `/wallet` | public | no | — | n/a | n/a | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | | PUT | `/wallet/:id` | hidden | yes | 20 | n/a | n/a | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. From 7616dc955c9506e2c17f2c6170e0ba2d95a819da Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:18:47 +0200 Subject: [PATCH 09/19] docs: resolve all but two endpoints Three parser defects, each found by an entry that looked implausible: - Line comments were parsed as code. A comment reading 'falls back to this.user.address (= transaction.user)' was read as a method call on an untyped field. - Class bodies were located by brace matching. In a 3292-line service a brace inside a string shifted the count and two thirds of the class was lost, so 7 endpoints had no reachable handler. Methods are now located file-wide and attributed to the preceding class. - Block comment removal was tried and reverted: a regex literal in the source can contain the opening sequence, after which the expression eats hundreds of lines. Unresolved drops from 12 to 2 (99.6% resolved). The two that remain are genuine: a dynamically selected strategy and a storage call. --- docs/endpoints.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/endpoints.md b/docs/endpoints.md index df4aa05ce1..eab35994eb 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -33,10 +33,10 @@ The `Ratio` column quantifies it where both sides are known. It is the basis for | | Endpoints | Share | | --- | --- | --- | -| Eager determined (`yes`/`no`) | 521 | 98 % | +| Eager determined (`yes`/`no`) | 531 | 100 % | | — of those `yes` | 295 | | -| — of those `no` | 226 | | -| Eager unresolved (`?`) | 12 | 2 % | +| — of those `no` | 236 | | +| Eager unresolved (`?`) | 2 | 0 % | | Column count measured | 295 | 55 % | | Field count known | 220 | 41 % | | — returns `void`, no fields to count | 113 | 21 % | @@ -65,7 +65,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/admin/mail` | public | no | — | n/a | n/a | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | | POST | `/admin/payout` | hidden | yes | 156 | n/a | n/a | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | | POST | `/admin/sendLetter` | hidden | no | — | n/a | n/a | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/alchemy/addressWebhook` | public | ? | — | n/a | n/a | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| POST | `/alchemy/addressWebhook` | public | no | — | n/a | n/a | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | | GET | `/alchemy/addresses/:webhookId` | public | no | — | n/a | n/a | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | | GET | `/app` | public | yes | 6 | n/a | n/a | `AppController.createRefNew` | `app.controller.ts` | | GET | `/app/:app` | hidden | yes | 6 | n/a | n/a | `AppController.redirectToStore` | `app.controller.ts` | @@ -78,7 +78,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/auth/2fa` | hidden | yes | 253 | n/a | n/a | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/2fa` | public | yes | 253 | 3 | 84× | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/2fa/verify` | public | yes | 253 | n/a | n/a | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby` | hidden | ? | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby` | hidden | no | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/alby/redirect/:id` | hidden | yes | 78 | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | `/auth/challenge` | hidden | yes | 20 | 1 | 20× | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | `/auth/mail` | hidden | yes | 20 | n/a | n/a | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | @@ -202,8 +202,8 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/fiatOutput` | public | yes | 377 | n/a | n/a | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | | PUT | `/fiatOutput/:id` | hidden | yes | 59 | n/a | n/a | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | | GET | `/frankencoin/info` | public | yes | 11 | — | — | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | `/gs/db` | public | ? | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/db/custom` | hidden | ? | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/db` | public | no | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/db/custom` | hidden | no | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | | POST | `/gs/debug` | hidden | no | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | | POST | `/gs/evm/bridgeApproval` | hidden | yes | 33 | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | `/gs/evm/coinTransaction` | hidden | yes | 6 | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | @@ -278,7 +278,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/kyc/data/statutes/:id` | public | no | — | n/a | n/a | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | `/kyc/file/:id` | hidden | yes | 264 | 5 | 53× | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/ident/manual/:id` | hidden | yes | 23 | n/a | n/a | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/ident/sumsub` | public | ? | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/ident/sumsub` | public | no | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | POST | `/kyc/transfer` | hidden | yes | 20 | n/a | n/a | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | `/kyc/transfer` | public | yes | 331 | n/a | n/a | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | DELETE | `/kyc/transfer` | hidden | yes | 20 | n/a | n/a | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | @@ -299,7 +299,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | `/liquidityManagement/rule/:id/settings` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | `/lnurla` | public | ? | — | 2 | — | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurla` | public | no | — | 2 | — | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | | POST | `/lnurla` | public | no | — | 2 | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | | GET | `/lnurla/status` | public | no | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | | GET | `/lnurld/:id` | public | no | — | — | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | @@ -329,8 +329,8 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/node/:node/tx/:txId` | hidden | no | — | n/a | n/a | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | | POST | `/notification/send-mail` | public | no | — | n/a | n/a | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | | POST | `/payIn` | public | no | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | ? | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | ? | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | no | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | no | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | | POST | `/payIn/poll` | hidden | ? | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | POST | `/payIn/retry` | hidden | yes | — | n/a | n/a | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | GET | `/paymentLink` | public | no | 513 | 15 | 34× | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | @@ -475,7 +475,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | GET | `/support/:id` | hidden | yes | 826 | n/a | n/a | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/:id/ip-log-pdf` | hidden | no | — | 16 | — | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | | POST | `/support/:id/onboarding-pdf` | hidden | no | — | 11 | — | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/scorechain` | hidden | ? | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/scorechain` | hidden | no | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/:id/transaction-pdf` | hidden | no | — | 16 | — | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/call-queues` | hidden | no | — | n/a | n/a | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | | GET | `/support/call-queues/:queue/items` | hidden | yes | 253 | n/a | n/a | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | @@ -525,7 +525,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/swap/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | `/swap/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | PUT | `/swap/quote` | hidden | yes | 23 | 28 | 1× | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/tatum/addressWebhook` | public | ? | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| POST | `/tatum/addressWebhook` | public | no | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | | PUT | `/trading/rule/:id` | public | yes | 87 | n/a | n/a | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | | GET | `/transaction` | public | no | — | 35 | — | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | `/transaction/:id/invoice` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | From 55b70f0dcd1e6998939a45cb99260db24feac122 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:21:29 +0200 Subject: [PATCH 10/19] docs: classify every endpoint, no unknowns left The last two came from branch ordering in the resolver: the check for known non-database types sat after 'is the class parsed at all', so the exception stopped applying as soon as the class itself had been parsed - StorageService and the strategy registry are parsed, so calls into them counted as unresolved. Every one of the 533 endpoints now resolves to yes or no. 295 load object graphs, 238 do not. --- docs/endpoints.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/endpoints.md b/docs/endpoints.md index eab35994eb..b2d32bcb4b 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -7,7 +7,7 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller | Column | Meaning | | ------ | ------- | | **Swagger** | `public` — in the Swagger schema; `hidden` — carries `@ApiExcludeEndpoint` | -| **Eager** | Whether the load path triggers TypeORM's automatic eager relations. `yes` — reached through `find`/`findOne` on a repository; `no` — reached only through `createQueryBuilder` with an explicit field list or raw SQL, or no database access at all; `?` — the call chain could not be resolved statically | +| **Eager** | Whether the load path triggers TypeORM's automatic eager relations. `yes` — reached through `find`/`findOne` on a repository; `no` — reached only through `createQueryBuilder` with an explicit field list or raw SQL, or no database access at all. Every endpoint resolves; there are no unknowns. | | **Cols** | Columns the query actually selects, measured from the TypeORM metadata (largest load site reachable from the handler) | | **Fields** | Fields of the response DTO, nested DTOs included | | **Ratio** | Cols ÷ Fields — how much is loaded per field returned | @@ -33,10 +33,10 @@ The `Ratio` column quantifies it where both sides are known. It is the basis for | | Endpoints | Share | | --- | --- | --- | -| Eager determined (`yes`/`no`) | 531 | 100 % | +| Eager determined (`yes`/`no`) | 533 | 100 % | | — of those `yes` | 295 | | -| — of those `no` | 236 | | -| Eager unresolved (`?`) | 2 | 0 % | +| — of those `no` | 238 | | +| Eager unresolved (`?`) | 0 | 0 % | | Column count measured | 295 | 55 % | | Field count known | 220 | 41 % | | — returns `void`, no fields to count | 113 | 21 % | @@ -331,7 +331,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | POST | `/payIn` | public | no | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | POST | `/payIn/lnurlpDeposit/:uniqueId` | public | no | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | | POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | no | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/poll` | hidden | ? | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/poll` | hidden | no | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | POST | `/payIn/retry` | hidden | yes | — | n/a | n/a | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | GET | `/paymentLink` | public | no | 513 | 15 | 34× | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | POST | `/paymentLink` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | @@ -584,7 +584,7 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed | PUT | `/userData/:id/merge` | hidden | yes | 331 | n/a | n/a | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | `/userData/:id/volumes` | hidden | no | — | n/a | n/a | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | `/userData/auditPeriodNumbers` | hidden | no | — | n/a | n/a | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/download` | public | ? | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/download` | public | no | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | POST | `/userDataRelation` | public | yes | 253 | n/a | n/a | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | PUT | `/userDataRelation/:id` | public | yes | 7 | n/a | n/a | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | DELETE | `/userDataRelation/:id` | public | no | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | From 8ce3b7b0a722b989785d49e3c18cc81c9f57b98d Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:28:41 +0200 Subject: [PATCH 11/19] docs: separate projected from no-database access The Eager column conflated two very different things under 'no': endpoints that select an explicit field list, and endpoints that touch no database at all. Only the former can have an incomplete field list, and only they are subject to the projection tests. The column is now called Load and carries three values: eager (295), projected (27), none (211). A new section states which group the test definition applies to, and why it does not apply to the other two - none has no field list to get wrong, eager loads everything anyway and becomes subject to the tests at the moment it is converted. Also recorded in read-path-projections.md: the repository already has the mechanism for database-backed tests. Fourteen migration specs gate on MIGRATION_TEST_PG, and the pull-request workflow already runs a Postgres service. The projection tests should use that rather than introduce a second mechanism - only the schema (from entity metadata) and the generated fixtures are missing. --- CONTRIBUTING.md | 11 +- docs/endpoints.md | 1088 +++++++++++++++++---------------- docs/read-path-projections.md | 35 +- 3 files changed, 584 insertions(+), 550 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b22bc9f326..2390917e28 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -515,12 +515,15 @@ export class SupportIssueController { [docs/endpoints.md](docs/endpoints.md) lists every route this service exposes. **Any change to the set of routes must be reflected there in the same PR** — adding, removing, renaming or re-scoping an endpoint, and equally a change to a `@Controller` base path, which moves every route beneath it. -Fill in the `Swagger` and `Eager` columns; `Cols`, `Fields` and `Ratio` are measured, not hand-written. +Fill in the `Swagger` and `Load` columns; `Cols`, `Fields` and `Ratio` are measured, not hand-written. -The `Eager` column follows a mechanical rule — eager relations apply to the `find*` family, not to `createQueryBuilder` with an explicit field list or to raw SQL: +The `Load` column follows a mechanical rule — eager relations apply to the `find*` family, not to `createQueryBuilder` with an explicit field list or to raw SQL: -- the handler reaches a `find` / `findOne` / `findBy` / `findOneBy` on a repository → `yes` -- it loads only through `createQueryBuilder(...).select([...])` or `dataSource.query(...)`, or touches no database at all → `no` +- the handler reaches a `find` / `findOne` / `findBy` / `findOneBy` on a repository → `eager` +- it loads only through `createQueryBuilder(...).select([...])` or `dataSource.query(...)` → `projected` +- it touches no database at all → `none` + +The distinction between `projected` and `none` matters: a `projected` endpoint carries an explicit field list that can be incomplete, and is therefore subject to the tests in [docs/read-path-projections.md](docs/read-path-projections.md). A `none` endpoint has no field list to get wrong. This matters because eager relations expand recursively: a plain `findOne()` on `UserData` already selects 253 columns across 8 joins before any `relations` option is added. [docs/read-path-projections.md](docs/read-path-projections.md) explains the background and how converted read paths are tested. diff --git a/docs/endpoints.md b/docs/endpoints.md index b2d32bcb4b..f97cc6e32c 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -7,7 +7,7 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller | Column | Meaning | | ------ | ------- | | **Swagger** | `public` — in the Swagger schema; `hidden` — carries `@ApiExcludeEndpoint` | -| **Eager** | Whether the load path triggers TypeORM's automatic eager relations. `yes` — reached through `find`/`findOne` on a repository; `no` — reached only through `createQueryBuilder` with an explicit field list or raw SQL, or no database access at all. Every endpoint resolves; there are no unknowns. | +| **Load** | How the endpoint reaches its data. `eager` — through `find`/`findOne` on a repository, which pulls in TypeORM's automatic eager relations; `projected` — through `createQueryBuilder` with an explicit field list or raw SQL, which does not; `none` — no database access at all. Every endpoint is classified; there are no unknowns. | | **Cols** | Columns the query actually selects, measured from the TypeORM metadata (largest load site reachable from the handler) | | **Fields** | Fields of the response DTO, nested DTOs included | | **Ratio** | Cols ÷ Fields — how much is loaded per field returned | @@ -16,16 +16,22 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller ## Why this list exists -`Eager = yes` marks the endpoints that load whole object graphs instead of the fields they return. TypeORM expands eager relations recursively, so a plain `findOne()` on `UserData` already selects 253 columns across 8 joins, and one on `LimitRequest` selects 434 across 15 — before any `relations` option is added. Endpoints reached only through a query builder with an explicit field list do not have that property. +`Load = eager` marks the endpoints that load whole object graphs instead of the fields they return. TypeORM expands eager relations recursively, so a plain `findOne()` on `UserData` already selects 253 columns across 8 joins, and one on `LimitRequest` selects 434 across 15 — before any `relations` option is added. Endpoints reached only through a query builder with an explicit field list do not have that property. The `Ratio` column quantifies it where both sides are known. It is the basis for deciding which read paths are worth converting to explicit projections. [read-path-projections.md](read-path-projections.md) explains the background, the criteria for converting an endpoint, and how the result is tested. +## Which endpoints the test definition applies to + +The four test levels in [read-path-projections.md](read-path-projections.md) exist to prove that a projection loads every field the response needs. They therefore apply to exactly one group: the **27 endpoints marked `projected`** — those already select an explicit field list, so a forgotten field would silently yield an empty value. + +They do **not** apply to the 211 endpoints marked `none`: without a database access there is no field list that could be incomplete. And they do not yet apply to the 295 marked `eager` — those load everything anyway, so nothing can be missing. They become subject to the tests at the moment they are converted. + ## How the values are produced - **Endpoints** — from the routing decorators in `src/**/*.controller.ts`, each attributed to the `@Controller` scope preceding it. Four files declare two controller classes with different base paths, one declares `@Controller()` without an argument. Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match. -- **Eager** — from the call chain between handler and repository (up to ten levels). The rule is mechanical: eager relations apply to the `find*` family, not to `createQueryBuilder` or raw SQL. +- **Load** — from the call chain between handler and repository (up to ten levels). The rule is mechanical: eager relations apply to the `find*` family, not to `createQueryBuilder` or raw SQL. - **Cols** — measured against the real entity metadata: the query is built and its SELECT list counted. Not an estimate. - **Fields** — field count of the declared response DTO, nested DTOs resolved recursively. @@ -33,10 +39,10 @@ The `Ratio` column quantifies it where both sides are known. It is the basis for | | Endpoints | Share | | --- | --- | --- | -| Eager determined (`yes`/`no`) | 533 | 100 % | -| — of those `yes` | 295 | | -| — of those `no` | 238 | | -| Eager unresolved (`?`) | 0 | 0 % | +| `eager` — loads object graphs | 295 | 55 % | +| `projected` — explicit field list or raw SQL | 27 | 5 % | +| `none` — no database access | 211 | 40 % | +| unclassified | 0 | 0 % | | Column count measured | 295 | 55 % | | Field count known | 220 | 41 % | | — returns `void`, no fields to count | 113 | 21 % | @@ -56,540 +62,540 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed ## Endpoints -| Method | Path | Swagger | Eager | Cols | Fields | Ratio | Handler | File | +| Method | Path | Swagger | Load | Cols | Fields | Ratio | Handler | File | | ------ | ---- | ------- | ----- | ---: | -----: | ----: | ------- | ---- | -| GET | `/` | public | no | — | n/a | n/a | `AppController.home` | `app.controller.ts` | -| POST | `/CustodyProvider` | public | no | — | n/a | n/a | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| PUT | `/CustodyProvider/:id` | hidden | yes | 6 | n/a | n/a | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | no | — | n/a | n/a | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/mail` | public | no | — | n/a | n/a | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/payout` | hidden | yes | 156 | n/a | n/a | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/sendLetter` | hidden | no | — | n/a | n/a | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/alchemy/addressWebhook` | public | no | — | n/a | n/a | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/alchemy/addresses/:webhookId` | public | no | — | n/a | n/a | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/app` | public | yes | 6 | n/a | n/a | `AppController.createRefNew` | `app.controller.ts` | -| GET | `/app/:app` | hidden | yes | 6 | n/a | n/a | `AppController.redirectToStore` | `app.controller.ts` | -| GET | `/app/advertisements` | hidden | no | — | — | — | `AppController.getAds` | `app.controller.ts` | -| GET | `/app/announcements` | public | no | — | 3 | — | `AppController.getAnnouncements` | `app.controller.ts` | -| GET | `/app/settings/flags` | hidden | no | — | 7 | — | `AppController.getFlags` | `app.controller.ts` | -| GET | `/asset` | public | no | — | 3 | — | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | -| PUT | `/asset/:id` | public | yes | 33 | n/a | n/a | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | -| POST | `/auth` | public | yes | 78 | 1 | 78× | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/2fa` | hidden | yes | 253 | n/a | n/a | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa` | public | yes | 253 | 3 | 84× | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa/verify` | public | yes | 253 | n/a | n/a | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby` | hidden | no | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby/redirect/:id` | hidden | yes | 78 | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/challenge` | hidden | yes | 20 | 1 | 20× | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/mail` | hidden | yes | 20 | n/a | n/a | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/mail/confirm` | public | yes | 470 | 2 | 235× | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/mail/redirect` | hidden | yes | 253 | 1 | 253× | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signIn` | hidden | yes | 78 | 1 | 78× | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/signMessage` | public | no | — | 2 | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signUp` | public | yes | 78 | 1 | 78× | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/verifySignature` | public | yes | 6 | 1 | 6× | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/balance/pdf` | public | no | — | 1 | — | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | `/balance/pdf/blockchains` | public | no | — | n/a | n/a | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | `/bank` | public | yes | 13 | 4 | 3× | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| PUT | `/bank/receiveIban` | public | yes | 101 | 1 | 101× | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| POST | `/bank/yapeal/webhook` | public | no | — | n/a | n/a | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | -| GET | `/bankAccount` | public | yes | 261 | 14 | 19× | `BankAccountController.AuthGuard` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount` | public | yes | 253 | 14 | 18× | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | `/bankAccount/:id` | public | yes | 261 | 14 | 19× | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/bic` | hidden | yes | 26 | n/a | n/a | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/iban` | public | yes | 26 | n/a | n/a | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | `/bankData/:id` | public | yes | 31 | n/a | n/a | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| PUT | `/bankData/:id/nameCheck` | hidden | yes | 261 | n/a | n/a | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| POST | `/bankTx` | public | yes | 61 | n/a | n/a | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTx/:id` | hidden | yes | 1051 | n/a | n/a | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| DELETE | `/bankTx/:id/buyCrypto` | hidden | yes | 247 | n/a | n/a | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTxRepeat/:id` | public | yes | 240 | n/a | n/a | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | -| PUT | `/bankTxReturn/:id` | public | yes | 438 | n/a | n/a | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | `/bankTxReturn/:id/refund` | hidden | yes | 727 | n/a | n/a | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | `/blockchain/balances` | public | yes | 33 | 4 | 8× | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | `/blockchain/broadcast` | public | no | — | 1 | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | `/blockchain/transaction` | public | yes | 33 | 4 | 8× | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| GET | `/buy` | public | yes | 56 | 30 | 2× | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | `/buy` | hidden | yes | 364 | 30 | 12× | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/:id` | hidden | yes | 134 | 30 | 4× | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/:id` | public | yes | 56 | 30 | 2× | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/:id/history` | hidden | yes | 497 | — | — | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos` | public | yes | 78 | 69 | 1× | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos/:id/confirm` | public | yes | 504 | n/a | n/a | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos/:id/invoice` | public | yes | 504 | 1 | 504× | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/personalIban` | public | yes | 101 | 9 | 11× | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | `/buy/personalIban` | public | no | — | 9 | — | `BuyController.AuthGuard` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/quote` | hidden | yes | 23 | 29 | 1× | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buyCrypto/:id` | hidden | yes | 1090 | n/a | n/a | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/:id/amlCheck` | hidden | yes | 363 | n/a | n/a | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| DELETE | `/buyCrypto/:id/amlCheck` | hidden | yes | 422 | n/a | n/a | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/refund` | hidden | yes | 1051 | n/a | n/a | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/scorechain` | hidden | yes | 717 | n/a | n/a | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/webhook` | public | yes | 844 | n/a | n/a | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/refVolumes` | hidden | no | — | n/a | n/a | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/volumes` | hidden | yes | 487 | n/a | n/a | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyFiat/:id` | hidden | yes | 1033 | n/a | n/a | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/:id/amlCheck` | hidden | yes | 201 | n/a | n/a | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| DELETE | `/buyFiat/:id/amlCheck` | hidden | yes | 490 | n/a | n/a | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/refund` | hidden | yes | 803 | n/a | n/a | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/scorechain` | hidden | yes | 517 | n/a | n/a | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/webhook` | public | yes | 644 | n/a | n/a | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/refVolumes` | hidden | no | — | n/a | n/a | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/volumes` | hidden | yes | 201 | n/a | n/a | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| GET | `/country` | public | yes | 23 | 12 | 2× | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | -| GET | `/cryptoRoute` | public | no | — | n/a | n/a | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| POST | `/cryptoRoute` | hidden | no | — | n/a | n/a | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id` | hidden | no | — | n/a | n/a | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| PUT | `/cryptoRoute/:id` | hidden | no | — | n/a | n/a | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id/history` | hidden | no | — | n/a | n/a | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/custody` | public | yes | 253 | 12 | 21× | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody` | public | yes | 23 | 1 | 23× | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/account` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/account` | public | no | — | 8 | — | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id` | public | yes | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | `/custody/account/:id` | public | no | — | 8 | — | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/access` | public | yes | 238 | 4 | 60× | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/account/:id/access` | public | no | — | 4 | — | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | `/custody/account/:id/access/:accessId` | public | no | — | 4 | — | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| DELETE | `/custody/account/:id/access/:accessId` | public | no | — | n/a | n/a | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/balance` | public | yes | 253 | 12 | 21× | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/history` | public | yes | 253 | 6 | 42× | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/order` | public | no | — | 8 | — | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/pdf` | public | yes | 253 | 1 | 253× | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/admin/order/:id/approve` | public | yes | 217 | n/a | n/a | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/admin/orders` | public | no | — | n/a | n/a | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| PUT | `/custody/admin/user/:id/balance` | public | yes | 118 | n/a | n/a | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/history` | public | yes | 253 | 6 | 42× | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/order` | public | no | — | 8 | — | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody/order` | public | yes | 377 | 50 | 8× | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody/order/:id/confirm` | public | yes | 525 | n/a | n/a | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/pdf` | public | yes | 253 | 1 | 253× | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/dashboard/accounting/ledger/accounts` | public | yes | 54 | 13 | 4× | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | yes | 8 | 24 | 0× | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/equity-comparison` | hidden | no | — | 10 | — | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/margin` | hidden | no | — | 11 | — | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/reconciliation` | hidden | yes | 54 | 11 | 5× | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/suspense` | hidden | no | — | 12 | — | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/financial/changes` | hidden | no | — | 5 | — | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/changes/latest` | hidden | no | — | 4 | — | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/latest` | hidden | no | — | 8 | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/log` | public | no | — | 8 | — | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/reconciliation` | public | yes | 46 | — | — | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | `/dashboard/financial/reconciliation/overview` | hidden | yes | 33 | — | — | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | `/dashboard/financial/ref-recipients` | hidden | no | — | 3 | — | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| POST | `/deposit` | public | no | — | n/a | n/a | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| PUT | `/deposit/lightningWebhook` | hidden | no | — | n/a | n/a | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| GET | `/deuro/info` | public | yes | 11 | — | — | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | -| GET | `/dex/check-liquidity` | public | no | — | n/a | n/a | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| PUT | `/dex/complete-orders` | hidden | yes | 156 | n/a | n/a | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/liquidity-after-purchase` | hidden | yes | 156 | n/a | n/a | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/purchase-liquidity` | hidden | no | — | n/a | n/a | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/reserve-liquidity` | hidden | no | — | n/a | n/a | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/transfer-completion` | hidden | no | — | n/a | n/a | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/transfer-liquidity` | hidden | no | — | n/a | n/a | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/exchange/:exchange/balances` | public | no | — | n/a | n/a | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/price` | hidden | no | — | n/a | n/a | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | -| PUT | `/exchange/:exchange/sync` | hidden | yes | 33 | n/a | n/a | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade` | hidden | no | — | n/a | n/a | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/trade` | hidden | no | — | n/a | n/a | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade/history` | hidden | no | — | n/a | n/a | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/withdraw` | hidden | no | — | n/a | n/a | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/withdraw/:id` | public | no | — | n/a | n/a | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/trade/:id` | hidden | no | — | n/a | n/a | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/faucet` | public | yes | 78 | 23 | 3× | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | -| POST | `/fee` | public | yes | 65 | n/a | n/a | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | -| GET | `/fiat` | public | yes | 23 | 4 | 6× | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | -| POST | `/fiatOutput` | public | yes | 377 | n/a | n/a | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| PUT | `/fiatOutput/:id` | hidden | yes | 59 | n/a | n/a | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| GET | `/frankencoin/info` | public | yes | 11 | — | — | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | `/gs/db` | public | no | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/db/custom` | hidden | no | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/debug` | hidden | no | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/evm/bridgeApproval` | hidden | yes | 33 | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/coinTransaction` | hidden | yes | 6 | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractApproval` | hidden | yes | 33 | n/a | n/a | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractTransaction` | hidden | no | — | n/a | n/a | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/rawTransaction` | public | yes | 6 | n/a | n/a | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/tokenTransaction` | hidden | yes | 33 | n/a | n/a | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| GET | `/gs/support` | hidden | yes | 907 | n/a | n/a | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | -| GET | `/health` | public | no | — | n/a | n/a | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/banking` | public | no | — | n/a | n/a | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/external` | public | no | — | n/a | n/a | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/liquidity` | public | no | — | n/a | n/a | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/nodes` | public | no | — | n/a | n/a | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/payment` | public | no | — | n/a | n/a | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/history` | public | no | — | 35 | — | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/history/:exportType` | hidden | yes | 331 | 1 | 331× | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/history/csv` | hidden | no | — | n/a | n/a | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| POST | `/history/csv` | public | no | — | n/a | n/a | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/ikna/bfs/:id` | hidden | no | — | n/a | n/a | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | -| POST | `/ikna/bfs/address` | public | no | — | n/a | n/a | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | `/ikna/tag` | hidden | no | — | n/a | n/a | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | `/juice/info` | public | yes | 11 | — | — | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | -| GET | `/kyc` | public | no | — | 13 | — | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc` | public | no | — | n/a | n/a | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc` | public | no | — | n/a | n/a | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| PUT | `/kyc` | public | no | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/2fa` | public | yes | 253 | n/a | n/a | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa` | public | no | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa/verify` | public | no | — | n/a | n/a | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc/:code` | public | no | — | n/a | n/a | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:code/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:id/documents` | public | yes | 78 | 2 | 39× | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:id/documents/:type` | public | yes | 328 | n/a | n/a | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:step` | public | no | — | 5 | — | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/admin/blacklist/ip` | hidden | no | — | n/a | n/a | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| DELETE | `/kyc/admin/blacklist/ip` | hidden | no | — | n/a | n/a | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/ident/file/sync` | hidden | yes | 243 | n/a | n/a | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/log` | hidden | yes | 253 | n/a | n/a | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/log/:id` | hidden | yes | 17 | n/a | n/a | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/nameCheck/:id` | public | yes | 245 | n/a | n/a | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/step/:id` | hidden | yes | 385 | n/a | n/a | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/webhook` | hidden | yes | 243 | n/a | n/a | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| GET | `/kyc/client/payments` | public | yes | 1092 | n/a | n/a | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users` | public | yes | 20 | 1 | 20× | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents` | public | yes | 78 | 2 | 39× | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents/:type` | public | yes | 78 | n/a | n/a | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/payments` | public | yes | 1092 | n/a | n/a | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/countries` | public | yes | 23 | 12 | 2× | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/data/:type/:id` | hidden | no | — | n/a | n/a | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/additional/:id` | public | no | — | n/a | n/a | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/address/:id` | public | no | — | n/a | n/a | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/authority/:id` | public | no | — | n/a | n/a | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/beneficial/:id` | public | yes | 23 | n/a | n/a | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/confirmation/:id` | public | no | — | n/a | n/a | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/contact/:id` | hidden | no | — | n/a | n/a | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/data/financial/:id` | public | yes | 7 | n/a | n/a | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/financial/:id` | public | no | — | n/a | n/a | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/legal/:id` | public | no | — | n/a | n/a | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/name/:id` | public | no | — | n/a | n/a | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/nationality/:id` | public | yes | 23 | n/a | n/a | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/operational/:id` | public | no | — | n/a | n/a | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/owner/:id` | public | no | — | n/a | n/a | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/payment/:id` | public | yes | 23 | n/a | n/a | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/personal/:id` | public | yes | 23 | n/a | n/a | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/phone/:id` | public | yes | 13 | n/a | n/a | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recall/:id` | public | yes | 23 | n/a | n/a | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recommendation/:id` | public | yes | 308 | n/a | n/a | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/residence/:id` | public | no | — | n/a | n/a | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/signatory/:id` | public | yes | 23 | n/a | n/a | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/statutes/:id` | public | no | — | n/a | n/a | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/file/:id` | hidden | yes | 264 | 5 | 53× | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/ident/manual/:id` | hidden | yes | 23 | n/a | n/a | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/ident/sumsub` | public | no | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/transfer` | hidden | yes | 20 | n/a | n/a | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/transfer` | public | yes | 331 | n/a | n/a | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/transfer` | hidden | yes | 20 | n/a | n/a | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/users` | public | yes | 561 | 3 | 187× | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/language` | public | yes | 7 | 5 | 1× | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | -| PUT | `/limitRequest/:id` | public | yes | 434 | n/a | n/a | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | -| GET | `/liquidityManagement/balance` | public | yes | 40 | n/a | n/a | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | -| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | yes | 139 | n/a | n/a | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/order/in-progress` | public | yes | 139 | n/a | n/a | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/pipeline/:id/status` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/buy` | public | no | — | n/a | n/a | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/in-progress` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/sell` | hidden | no | — | n/a | n/a | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/stopped` | hidden | yes | 112 | n/a | n/a | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/rule` | public | no | — | 9 | — | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | `/liquidityManagement/rule/:id` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PUT | `/liquidityManagement/rule/:id` | hidden | yes | 83 | n/a | n/a | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/settings` | hidden | yes | 83 | 9 | 9× | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | `/lnurla` | public | no | — | 2 | — | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| POST | `/lnurla` | public | no | — | 2 | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | `/lnurla/status` | public | no | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | `/lnurld/:id` | public | no | — | — | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurld/cb/:id/:var` | public | no | — | — | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurlp/:id` | public | no | — | n/a | n/a | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| POST | `/lnurlp/:id` | public | yes | 490 | — | — | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| DELETE | `/lnurlp/cancel/:id` | public | yes | 545 | 14 | 39× | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/cb/:id` | public | no | — | n/a | n/a | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/tx/:id` | public | no | — | n/a | n/a | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/wait/:id` | public | yes | 545 | 1 | 545× | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlw/:id` | public | no | — | — | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| GET | `/lnurlw/cb/:id` | public | no | — | n/a | n/a | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | `/log` | public | no | — | n/a | n/a | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/:id` | hidden | yes | 11 | n/a | n/a | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/financial/validity` | hidden | no | — | n/a | n/a | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | -| GET | `/monitoring/data` | public | no | — | n/a | n/a | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | -| POST | `/monitoring/data` | hidden | no | — | n/a | n/a | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | -| GET | `/mros` | hidden | yes | 243 | n/a | n/a | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/mros` | public | yes | 253 | n/a | n/a | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | -| GET | `/mros/:id` | hidden | yes | 243 | n/a | n/a | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | -| PUT | `/mros/:id` | hidden | yes | 78 | n/a | n/a | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/node/:node/:mode/cmd` | hidden | no | — | n/a | n/a | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/:mode/rpc` | hidden | no | — | n/a | n/a | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/:mode/tx/:txId` | hidden | no | — | n/a | n/a | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/cmd` | hidden | no | — | n/a | n/a | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/rpc` | public | no | — | n/a | n/a | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/tx/:txId` | hidden | no | — | n/a | n/a | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/notification/send-mail` | public | no | — | n/a | n/a | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | `/payIn` | public | no | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | no | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | no | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/poll` | hidden | no | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/retry` | hidden | yes | — | n/a | n/a | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| GET | `/paymentLink` | public | no | 513 | 15 | 34× | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink` | public | no | — | 15 | — | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id` | hidden | yes | 513 | n/a | n/a | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | `/paymentLink/:id` | hidden | yes | 195 | n/a | n/a | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id/pos` | hidden | yes | 513 | n/a | n/a | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/assign` | public | yes | 472 | 15 | 31× | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/config` | public | yes | 253 | 1 | 253× | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/config` | public | no | — | n/a | n/a | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/history` | public | no | — | 16 | — | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/activate/:id` | public | no | — | n/a | n/a | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/webhook` | hidden | no | — | — | — | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/kucoin/activate/:id` | public | no | — | n/a | n/a | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | no | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| GET | `/paymentLink/locations` | public | yes | 513 | 5 | 103× | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/merchant` | public | no | — | n/a | n/a | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/payment` | hidden | yes | 472 | — | — | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/payment` | public | yes | 472 | 15 | 31× | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | `/paymentLink/payment` | public | no | — | 15 | — | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/payment/:id` | public | yes | 32 | n/a | n/a | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/payment/confirm` | public | no | — | 15 | — | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/payment/wait` | public | no | — | 15 | — | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/pos` | public | no | — | 1 | — | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/recipient` | public | no | — | 10 | — | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/standard` | public | no | — | 5 | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/standard/:id` | public | no | — | 5 | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/stickers` | hidden | no | — | n/a | n/a | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/walletApp` | public | no | — | 33 | — | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | `/paymentLink/walletApp/:id` | public | yes | 15 | 33 | 0× | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | `/paymentLink/walletApp/recommended` | public | yes | 15 | 33 | 0× | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | `/payout` | public | no | — | n/a | n/a | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/payout/completion` | hidden | no | — | n/a | n/a | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/retry` | hidden | yes | 123 | n/a | n/a | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/speedup` | hidden | yes | 123 | n/a | n/a | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/pl` | public | no | — | n/a | n/a | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | -| GET | `/plp` | public | yes | 472 | — | — | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/pricing` | hidden | no | — | n/a | n/a | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| PUT | `/pricing` | hidden | yes | 53 | n/a | n/a | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | `/pricing/price` | public | no | — | n/a | n/a | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | `/realunit/account/:address` | public | no | — | 9 | — | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/account/:address/history` | public | no | — | 25 | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/quotes` | public | yes | 112 | 8 | 14× | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | yes | 61 | n/a | n/a | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/registration/:id/forward` | hidden | yes | 323 | n/a | n/a | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/transactions` | hidden | yes | 362 | 8 | 45× | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/balance/pdf` | public | yes | 78 | 1 | 78× | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/buyPrice` | public | no | — | 5 | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/buyShares` | public | no | — | 5 | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/info` | public | no | — | 8 | — | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/price` | public | no | — | 3 | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellPrice` | public | yes | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellShares` | public | yes | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/buy` | public | yes | 364 | 37 | 10× | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/buy/:id/confirm` | public | no | — | 1 | — | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/compliance/customers` | public | yes | 253 | 7 | 36× | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id` | hidden | yes | 826 | 93 | 9× | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/dossier` | hidden | yes | 264 | n/a | n/a | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/files` | hidden | yes | 264 | 4 | 66× | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | yes | 264 | 5 | 53× | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/confirm-aktionariat` | public | no | — | 3 | — | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/holders` | public | no | — | 10 | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/legal` | public | yes | 78 | 6 | 13× | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| PUT | `/realunit/legal` | public | yes | 78 | 6 | 13× | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| GET | `/realunit/pay/:id/status` | public | yes | 32 | 1 | 32× | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/submit` | public | no | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/unsigned-transaction` | public | no | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/price` | public | no | — | 4 | — | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/price/history` | public | yes | 40 | 4 | 10× | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/buyPrice` | public | no | — | 5 | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/buyShares` | public | no | — | 5 | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/info` | public | no | — | 8 | — | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/price` | public | no | — | 3 | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellPrice` | public | yes | 78 | 4 | 20× | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellShares` | public | yes | 78 | 4 | 20× | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/complete` | public | yes | 23 | n/a | n/a | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/date` | public | no | — | 1 | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/email` | public | no | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/status` | public | yes | 78 | n/a | n/a | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/wallet` | public | no | — | n/a | n/a | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/registration` | public | yes | 78 | 20 | 4× | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell` | public | yes | 253 | 46 | 6× | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/broadcast` | public | no | — | — | — | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/unsigned-transactions` | public | no | — | — | — | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/support/:id` | hidden | yes | 421 | n/a | n/a | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/data` | hidden | yes | 951 | 67 | 14× | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| POST | `/realunit/support/:id/message` | hidden | yes | 441 | 5 | 88× | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/message/:messageId/file` | hidden | yes | 428 | n/a | n/a | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/messages` | hidden | yes | 421 | 5 | 84× | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/activity` | hidden | no | — | n/a | n/a | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/clerks` | hidden | no | — | n/a | n/a | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/counts` | hidden | no | — | 13 | — | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/list` | public | no | — | — | — | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/statistics` | hidden | no | — | 13 | — | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| PUT | `/realunit/swap` | public | yes | 78 | 27 | 3× | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/swap/:id/broadcast` | public | no | — | — | — | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/swap/:id/unsigned-transaction` | public | no | — | 1 | — | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/tokenInfo` | public | no | — | 7 | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/multi` | public | yes | 78 | 1 | 78× | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/single` | public | yes | 78 | 1 | 78× | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/transfer` | public | yes | 78 | 19 | 4× | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/transfer/:id/confirm` | public | no | — | — | — | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/wallet/status` | public | yes | 78 | 20 | 4× | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/recall` | hidden | yes | 174 | n/a | n/a | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | `/recall` | public | yes | 78 | n/a | n/a | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | `/recall/:id` | hidden | yes | 174 | n/a | n/a | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | -| PUT | `/recall/:id` | hidden | yes | 78 | n/a | n/a | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | `/recommendation` | public | no | — | 9 | — | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| POST | `/recommendation` | hidden | no | — | 9 | — | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/confirm` | hidden | yes | 643 | n/a | n/a | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/reject` | hidden | yes | 643 | n/a | n/a | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| GET | `/ref` | public | no | — | n/a | n/a | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | -| POST | `/reward/ref` | hidden | yes | 156 | n/a | n/a | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/:id` | hidden | yes | 156 | n/a | n/a | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| POST | `/reward/ref/manual` | hidden | yes | 98 | n/a | n/a | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/volumes` | public | yes | 78 | n/a | n/a | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| GET | `/route` | public | yes | 124 | 68 | 2× | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | -| PUT | `/route/:id` | hidden | yes | 174 | n/a | n/a | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | -| POST | `/scorechain/screening` | public | no | — | n/a | n/a | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | -| GET | `/sell` | public | yes | 124 | 24 | 5× | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| POST | `/sell` | hidden | yes | 253 | 24 | 11× | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/:id` | hidden | yes | 377 | 24 | 16× | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/:id` | public | yes | 124 | 24 | 5× | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/:id/history` | hidden | yes | 470 | — | — | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/paymentInfos` | public | no | — | 93 | — | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/quote` | hidden | yes | 23 | 29 | 1× | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/setting` | public | yes | 5 | n/a | n/a | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/:key` | hidden | yes | 5 | n/a | n/a | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/customSignUpFees` | hidden | no | — | n/a | n/a | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/disabledProcesses` | hidden | no | — | n/a | n/a | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | -| GET | `/setting/infoBanner` | public | no | — | 5 | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | -| POST | `/specialExternalAccount` | public | yes | 7 | n/a | n/a | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | -| GET | `/statistic` | public | no | — | 3 | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/statistic/status` | public | no | — | n/a | n/a | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/statistic/transactions` | public | yes | 419 | 8 | 52× | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/support` | public | yes | 61 | n/a | n/a | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id` | hidden | yes | 826 | n/a | n/a | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/ip-log-pdf` | hidden | no | — | 16 | — | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/:id/onboarding-pdf` | hidden | no | — | 11 | — | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/scorechain` | hidden | no | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/transaction-pdf` | hidden | no | — | 16 | — | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues` | hidden | no | — | n/a | n/a | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/:queue/items` | hidden | yes | 253 | n/a | n/a | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/clerks` | hidden | no | — | n/a | n/a | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/issue` | public | yes | 450 | 18 | 25× | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue` | public | yes | 34 | 18 | 2× | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id` | hidden | yes | 450 | 18 | 25× | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | `/support/issue/:id` | public | yes | 421 | n/a | n/a | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | `/support/issue/:id/close` | public | yes | 450 | 18 | 25× | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id/data` | hidden | yes | 951 | 67 | 14× | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/:id/message` | hidden | yes | 441 | 5 | 88× | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id/message/:messageId/file` | public | yes | 428 | n/a | n/a | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/activity` | hidden | no | — | n/a | n/a | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/clerk` | hidden | no | — | 18 | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/clerks` | hidden | no | — | n/a | n/a | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/counts` | hidden | no | — | 13 | — | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/escalation/telegram-bind` | hidden | no | — | — | — | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/escalation/telegram-chats` | hidden | no | — | n/a | n/a | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/escalation/telegram-test` | hidden | no | — | n/a | n/a | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/list` | public | no | — | 13 | — | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/statistics` | hidden | no | — | 13 | — | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/support` | public | yes | 20 | 18 | 1× | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/kycFileList` | hidden | yes | 253 | n/a | n/a | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/kycFileStats` | hidden | no | — | n/a | n/a | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/note` | hidden | yes | 9 | 11 | 1× | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/note` | hidden | yes | 253 | 11 | 23× | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/note/:id` | hidden | yes | 239 | 11 | 22× | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/note/:id` | hidden | yes | 9 | n/a | n/a | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/note/users` | hidden | no | — | 3 | — | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews` | hidden | no | — | n/a | n/a | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews/items` | hidden | yes | 261 | n/a | n/a | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-transactions` | hidden | yes | 672 | n/a | n/a | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/recommendation-graph/:id/neighbors` | hidden | no | — | n/a | n/a | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/template` | hidden | yes | 8 | 8 | 1× | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/template` | hidden | yes | 253 | 8 | 32× | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/template/:id` | hidden | yes | 8 | 8 | 1× | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/template/:id` | hidden | yes | 8 | n/a | n/a | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transaction/:id/refund` | hidden | yes | 98 | 20 | 5× | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/transaction/:id/refund` | hidden | yes | 253 | n/a | n/a | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transactionList` | hidden | no | — | n/a | n/a | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | -| GET | `/swap` | public | yes | 68 | 34 | 2× | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/swap` | hidden | yes | 78 | 34 | 2× | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/:id` | hidden | yes | 146 | 34 | 4× | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/:id` | public | yes | 68 | 34 | 2× | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/:id/history` | hidden | yes | 509 | — | — | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/paymentInfos` | public | no | — | 82 | — | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/paymentInfos/:id/confirm` | public | yes | 504 | 35 | 14× | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/paymentInfos/:id/tx` | public | yes | 504 | 15 | 34× | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/quote` | hidden | yes | 23 | 28 | 1× | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/tatum/addressWebhook` | public | no | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | -| PUT | `/trading/rule/:id` | public | yes | 87 | n/a | n/a | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | -| GET | `/transaction` | public | no | — | 35 | — | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/invoice` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/receipt` | public | yes | 1220 | 1 | 1220× | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/:id/refund` | public | no | — | 20 | — | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/refund` | public | no | — | n/a | n/a | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/target` | hidden | yes | 1051 | n/a | n/a | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/ChainReport` | hidden | no | — | 12 | — | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/CoinTracking` | public | no | — | 1 | — | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/admin/:id` | public | yes | 253 | n/a | n/a | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:id/stop` | hidden | no | — | n/a | n/a | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:txId/riskAssessment` | hidden | no | — | n/a | n/a | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | yes | 13 | n/a | n/a | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| GET | `/transaction/csv` | public | no | — | n/a | n/a | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/csv` | public | no | — | n/a | n/a | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/detail` | hidden | no | — | 2 | — | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/detail/csv` | public | no | — | n/a | n/a | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/detail/single` | public | no | — | 35 | — | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/single` | public | no | — | 35 | — | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/target` | hidden | yes | 134 | n/a | n/a | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/unassigned` | public | yes | 261 | 23 | 11× | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/user` | public | yes | 328 | 21 | 16× | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user` | public | no | — | 56 | — | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user` | public | yes | 406 | 14 | 29× | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user` | public | yes | 253 | 56 | 5× | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | no | — | n/a | n/a | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | yes | 344 | n/a | n/a | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/:id` | hidden | yes | 308 | n/a | n/a | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/account` | public | yes | 344 | n/a | n/a | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/addresses/:address` | public | yes | 351 | 56 | 6× | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/addresses/:address` | public | no | — | n/a | n/a | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/apiFilter/CT` | public | yes | 308 | n/a | n/a | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/apiKey/CT` | public | yes | 253 | 2 | 126× | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/apiKey/CT` | public | no | — | n/a | n/a | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/change` | public | no | — | 1 | — | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/data` | hidden | yes | 406 | 14 | 29× | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/detail` | public | yes | 328 | 14 | 23× | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/discountCodes` | public | yes | 78 | n/a | n/a | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/mail` | public | yes | 351 | n/a | n/a | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/mail/verify` | public | yes | 351 | 56 | 6× | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/name` | public | yes | 78 | n/a | n/a | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/profile` | public | yes | 253 | 24 | 11× | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/ref` | public | no | — | n/a | n/a | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/ref` | public | yes | 78 | 28 | 3× | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/ref` | public | yes | 273 | 28 | 10× | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/specialCodes` | public | yes | 78 | n/a | n/a | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/volumes` | hidden | no | — | n/a | n/a | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/userData` | public | yes | 253 | n/a | n/a | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData` | hidden | yes | 16 | n/a | n/a | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| GET | `/userData/:id` | public | yes | 253 | n/a | n/a | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id` | hidden | yes | 384 | n/a | n/a | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/bankDatas` | hidden | yes | 284 | n/a | n/a | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/fee` | hidden | yes | 253 | n/a | n/a | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| DELETE | `/userData/:id/fee` | hidden | yes | 253 | n/a | n/a | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/:id/kycFile` | hidden | yes | 253 | n/a | n/a | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/merge` | hidden | yes | 331 | n/a | n/a | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/volumes` | hidden | no | — | n/a | n/a | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/auditPeriodNumbers` | hidden | no | — | n/a | n/a | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/download` | public | no | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userDataRelation` | public | yes | 253 | n/a | n/a | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| PUT | `/userDataRelation/:id` | public | yes | 7 | n/a | n/a | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| DELETE | `/userDataRelation/:id` | public | no | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| GET | `/version` | hidden | no | — | — | — | `AppController.getVersion` | `app.controller.ts` | -| POST | `/wallet` | public | no | — | n/a | n/a | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | -| PUT | `/wallet/:id` | hidden | yes | 20 | n/a | n/a | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| GET | `/` | public | none | — | n/a | n/a | `AppController.home` | `app.controller.ts` | +| POST | `/CustodyProvider` | public | none | — | n/a | n/a | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| PUT | `/CustodyProvider/:id` | hidden | eager | 6 | n/a | n/a | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | n/a | n/a | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/mail` | public | none | — | n/a | n/a | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/payout` | hidden | eager | 156 | n/a | n/a | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/sendLetter` | hidden | none | — | n/a | n/a | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/alchemy/addressWebhook` | public | none | — | n/a | n/a | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/alchemy/addresses/:webhookId` | public | none | — | n/a | n/a | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/app` | public | eager | 6 | n/a | n/a | `AppController.createRefNew` | `app.controller.ts` | +| GET | `/app/:app` | hidden | eager | 6 | n/a | n/a | `AppController.redirectToStore` | `app.controller.ts` | +| GET | `/app/advertisements` | hidden | none | — | — | — | `AppController.getAds` | `app.controller.ts` | +| GET | `/app/announcements` | public | none | — | 3 | — | `AppController.getAnnouncements` | `app.controller.ts` | +| GET | `/app/settings/flags` | hidden | none | — | 7 | — | `AppController.getFlags` | `app.controller.ts` | +| GET | `/asset` | public | projected | — | 3 | — | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | `/asset/:id` | public | eager | 33 | n/a | n/a | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| POST | `/auth` | public | eager | 78 | 1 | 78× | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/2fa` | hidden | eager | 253 | n/a | n/a | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa` | public | eager | 253 | 3 | 84× | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa/verify` | public | eager | 253 | n/a | n/a | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby` | hidden | none | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby/redirect/:id` | hidden | eager | 78 | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/challenge` | hidden | eager | 20 | 1 | 20× | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/mail` | hidden | eager | 20 | n/a | n/a | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/mail/confirm` | public | eager | 470 | 2 | 235× | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/mail/redirect` | hidden | eager | 253 | 1 | 253× | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signIn` | hidden | eager | 78 | 1 | 78× | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/signMessage` | public | none | — | 2 | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signUp` | public | eager | 78 | 1 | 78× | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/verifySignature` | public | eager | 6 | 1 | 6× | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/balance/pdf` | public | none | — | 1 | — | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | `/balance/pdf/blockchains` | public | none | — | n/a | n/a | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | `/bank` | public | eager | 13 | 4 | 3× | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| PUT | `/bank/receiveIban` | public | eager | 101 | 1 | 101× | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| POST | `/bank/yapeal/webhook` | public | none | — | n/a | n/a | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| GET | `/bankAccount` | public | eager | 261 | 14 | 19× | `BankAccountController.AuthGuard` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount` | public | eager | 253 | 14 | 18× | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | `/bankAccount/:id` | public | eager | 261 | 14 | 19× | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount/bic` | hidden | eager | 26 | n/a | n/a | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount/iban` | public | eager | 26 | n/a | n/a | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | `/bankData/:id` | public | eager | 31 | n/a | n/a | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| PUT | `/bankData/:id/nameCheck` | hidden | eager | 261 | n/a | n/a | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | `/bankTx` | public | eager | 61 | n/a | n/a | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTx/:id` | hidden | eager | 1051 | n/a | n/a | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| DELETE | `/bankTx/:id/buyCrypto` | hidden | eager | 247 | n/a | n/a | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTxRepeat/:id` | public | eager | 240 | n/a | n/a | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | `/bankTxReturn/:id` | public | eager | 438 | n/a | n/a | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/bankTxReturn/:id/refund` | hidden | eager | 727 | n/a | n/a | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/blockchain/balances` | public | eager | 33 | 4 | 8× | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | `/blockchain/broadcast` | public | none | — | 1 | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | `/blockchain/transaction` | public | eager | 33 | 4 | 8× | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| GET | `/buy` | public | eager | 56 | 30 | 2× | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | `/buy` | hidden | eager | 364 | 30 | 12× | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/:id` | hidden | eager | 134 | 30 | 4× | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/:id` | public | eager | 56 | 30 | 2× | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/:id/history` | hidden | eager | 497 | — | — | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos` | public | eager | 78 | 69 | 1× | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos/:id/confirm` | public | eager | 504 | n/a | n/a | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos/:id/invoice` | public | eager | 504 | 1 | 504× | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/personalIban` | public | eager | 101 | 9 | 11× | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | `/buy/personalIban` | public | none | — | 9 | — | `BuyController.AuthGuard` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/quote` | hidden | eager | 23 | 29 | 1× | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buyCrypto/:id` | hidden | eager | 1090 | n/a | n/a | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/:id/amlCheck` | hidden | eager | 363 | n/a | n/a | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| DELETE | `/buyCrypto/:id/amlCheck` | hidden | eager | 422 | n/a | n/a | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/refund` | hidden | eager | 1051 | n/a | n/a | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/scorechain` | hidden | eager | 717 | n/a | n/a | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/webhook` | public | eager | 844 | n/a | n/a | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/refVolumes` | hidden | projected | — | n/a | n/a | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/volumes` | hidden | eager | 487 | n/a | n/a | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyFiat/:id` | hidden | eager | 1033 | n/a | n/a | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/:id/amlCheck` | hidden | eager | 201 | n/a | n/a | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| DELETE | `/buyFiat/:id/amlCheck` | hidden | eager | 490 | n/a | n/a | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/refund` | hidden | eager | 803 | n/a | n/a | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/scorechain` | hidden | eager | 517 | n/a | n/a | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/webhook` | public | eager | 644 | n/a | n/a | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/refVolumes` | hidden | projected | — | n/a | n/a | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/volumes` | hidden | eager | 201 | n/a | n/a | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| GET | `/country` | public | eager | 23 | 12 | 2× | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | +| GET | `/cryptoRoute` | public | none | — | n/a | n/a | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| POST | `/cryptoRoute` | hidden | none | — | n/a | n/a | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id` | hidden | none | — | n/a | n/a | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| PUT | `/cryptoRoute/:id` | hidden | none | — | n/a | n/a | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id/history` | hidden | none | — | n/a | n/a | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/custody` | public | eager | 253 | 12 | 21× | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody` | public | eager | 23 | 1 | 23× | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/account` | public | eager | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/account` | public | none | — | 8 | — | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id` | public | eager | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | `/custody/account/:id` | public | none | — | 8 | — | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/access` | public | eager | 238 | 4 | 60× | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/account/:id/access` | public | none | — | 4 | — | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | `/custody/account/:id/access/:accessId` | public | none | — | 4 | — | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| DELETE | `/custody/account/:id/access/:accessId` | public | none | — | n/a | n/a | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/balance` | public | eager | 253 | 12 | 21× | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/history` | public | eager | 253 | 6 | 42× | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/order` | public | projected | — | 8 | — | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/pdf` | public | eager | 253 | 1 | 253× | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/admin/order/:id/approve` | public | eager | 217 | n/a | n/a | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/admin/orders` | public | none | — | n/a | n/a | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| PUT | `/custody/admin/user/:id/balance` | public | eager | 118 | n/a | n/a | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/history` | public | eager | 253 | 6 | 42× | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/order` | public | projected | — | 8 | — | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/order` | public | eager | 377 | 50 | 8× | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/order/:id/confirm` | public | eager | 525 | n/a | n/a | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/pdf` | public | eager | 253 | 1 | 253× | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/dashboard/accounting/ledger/accounts` | public | eager | 54 | 13 | 4× | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | eager | 8 | 24 | 0× | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/equity-comparison` | hidden | projected | — | 10 | — | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/margin` | hidden | none | — | 11 | — | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/reconciliation` | hidden | eager | 54 | 11 | 5× | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/suspense` | hidden | projected | — | 12 | — | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/financial/changes` | hidden | projected | — | 5 | — | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/changes/latest` | hidden | projected | — | 4 | — | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/latest` | hidden | none | — | 8 | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/log` | public | none | — | 8 | — | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/reconciliation` | public | eager | 46 | — | — | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | `/dashboard/financial/reconciliation/overview` | hidden | eager | 33 | — | — | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | `/dashboard/financial/ref-recipients` | hidden | none | — | 3 | — | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| POST | `/deposit` | public | none | — | n/a | n/a | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| PUT | `/deposit/lightningWebhook` | hidden | none | — | n/a | n/a | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| GET | `/deuro/info` | public | eager | 11 | — | — | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | +| GET | `/dex/check-liquidity` | public | none | — | n/a | n/a | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| PUT | `/dex/complete-orders` | hidden | eager | 156 | n/a | n/a | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/liquidity-after-purchase` | hidden | eager | 156 | n/a | n/a | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/purchase-liquidity` | hidden | none | — | n/a | n/a | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/reserve-liquidity` | hidden | none | — | n/a | n/a | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/transfer-completion` | hidden | none | — | n/a | n/a | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/transfer-liquidity` | hidden | none | — | n/a | n/a | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/exchange/:exchange/balances` | public | none | — | n/a | n/a | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/price` | hidden | none | — | n/a | n/a | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | +| PUT | `/exchange/:exchange/sync` | hidden | eager | 33 | n/a | n/a | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade` | hidden | none | — | n/a | n/a | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/trade` | hidden | none | — | n/a | n/a | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade/history` | hidden | none | — | n/a | n/a | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/withdraw` | hidden | none | — | n/a | n/a | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/withdraw/:id` | public | none | — | n/a | n/a | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/trade/:id` | hidden | none | — | n/a | n/a | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/faucet` | public | eager | 78 | 23 | 3× | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | `/fee` | public | eager | 65 | n/a | n/a | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| GET | `/fiat` | public | eager | 23 | 4 | 6× | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | +| POST | `/fiatOutput` | public | eager | 377 | n/a | n/a | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| PUT | `/fiatOutput/:id` | hidden | eager | 59 | n/a | n/a | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| GET | `/frankencoin/info` | public | eager | 11 | — | — | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | +| POST | `/gs/db` | public | none | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/db/custom` | hidden | none | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/debug` | hidden | projected | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/evm/bridgeApproval` | hidden | eager | 33 | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/coinTransaction` | hidden | eager | 6 | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractApproval` | hidden | eager | 33 | n/a | n/a | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractTransaction` | hidden | none | — | n/a | n/a | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/rawTransaction` | public | eager | 6 | n/a | n/a | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/tokenTransaction` | hidden | eager | 33 | n/a | n/a | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| GET | `/gs/support` | hidden | eager | 907 | n/a | n/a | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | +| GET | `/health` | public | none | — | n/a | n/a | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/banking` | public | none | — | n/a | n/a | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/external` | public | none | — | n/a | n/a | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/liquidity` | public | none | — | n/a | n/a | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/nodes` | public | none | — | n/a | n/a | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/payment` | public | none | — | n/a | n/a | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/history` | public | none | — | 35 | — | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/history/:exportType` | hidden | eager | 331 | 1 | 331× | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/history/csv` | hidden | none | — | n/a | n/a | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | `/history/csv` | public | none | — | n/a | n/a | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/ikna/bfs/:id` | hidden | none | — | n/a | n/a | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | `/ikna/bfs/address` | public | none | — | n/a | n/a | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/ikna/tag` | hidden | none | — | n/a | n/a | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/juice/info` | public | eager | 11 | — | — | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | +| GET | `/kyc` | public | none | — | 13 | — | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc` | public | none | — | n/a | n/a | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc` | public | none | — | n/a | n/a | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| PUT | `/kyc` | public | none | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/2fa` | public | eager | 253 | n/a | n/a | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa` | public | none | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa/verify` | public | none | — | n/a | n/a | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/:code` | public | none | — | n/a | n/a | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc/:code` | public | none | — | n/a | n/a | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:code/countries` | public | eager | 23 | 12 | 2× | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:id/documents` | public | eager | 78 | 2 | 39× | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:id/documents/:type` | public | eager | 328 | n/a | n/a | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:step` | public | projected | — | 5 | — | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/admin/blacklist/ip` | hidden | projected | — | n/a | n/a | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| DELETE | `/kyc/admin/blacklist/ip` | hidden | none | — | n/a | n/a | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/ident/file/sync` | hidden | eager | 243 | n/a | n/a | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/log` | hidden | eager | 253 | n/a | n/a | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/log/:id` | hidden | eager | 17 | n/a | n/a | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/nameCheck/:id` | public | eager | 245 | n/a | n/a | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/step/:id` | hidden | eager | 385 | n/a | n/a | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/webhook` | hidden | eager | 243 | n/a | n/a | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| GET | `/kyc/client/payments` | public | eager | 1092 | n/a | n/a | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users` | public | eager | 20 | 1 | 20× | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents` | public | eager | 78 | 2 | 39× | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents/:type` | public | eager | 78 | n/a | n/a | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/payments` | public | eager | 1092 | n/a | n/a | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/countries` | public | eager | 23 | 12 | 2× | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/countries` | public | eager | 23 | 12 | 2× | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| DELETE | `/kyc/data/:type/:id` | hidden | none | — | n/a | n/a | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/additional/:id` | public | none | — | n/a | n/a | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/address/:id` | public | none | — | n/a | n/a | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/authority/:id` | public | none | — | n/a | n/a | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/beneficial/:id` | public | eager | 23 | n/a | n/a | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/confirmation/:id` | public | none | — | n/a | n/a | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/contact/:id` | hidden | none | — | n/a | n/a | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/data/financial/:id` | public | eager | 7 | n/a | n/a | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/financial/:id` | public | none | — | n/a | n/a | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/legal/:id` | public | none | — | n/a | n/a | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/name/:id` | public | none | — | n/a | n/a | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/nationality/:id` | public | eager | 23 | n/a | n/a | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/operational/:id` | public | none | — | n/a | n/a | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/owner/:id` | public | none | — | n/a | n/a | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/payment/:id` | public | eager | 23 | n/a | n/a | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/personal/:id` | public | eager | 23 | n/a | n/a | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/phone/:id` | public | eager | 13 | n/a | n/a | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recall/:id` | public | eager | 23 | n/a | n/a | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recommendation/:id` | public | eager | 308 | n/a | n/a | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/residence/:id` | public | none | — | n/a | n/a | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/signatory/:id` | public | eager | 23 | n/a | n/a | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/statutes/:id` | public | none | — | n/a | n/a | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/file/:id` | hidden | eager | 264 | 5 | 53× | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/ident/manual/:id` | hidden | eager | 23 | n/a | n/a | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/ident/sumsub` | public | none | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/transfer` | hidden | eager | 20 | n/a | n/a | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/transfer` | public | eager | 331 | n/a | n/a | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| DELETE | `/kyc/transfer` | hidden | eager | 20 | n/a | n/a | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/users` | public | eager | 561 | 3 | 187× | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/language` | public | eager | 7 | 5 | 1× | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | +| PUT | `/limitRequest/:id` | public | eager | 434 | n/a | n/a | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | `/liquidityManagement/balance` | public | eager | 40 | n/a | n/a | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | eager | 139 | n/a | n/a | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/order/in-progress` | public | eager | 139 | n/a | n/a | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/pipeline/:id/status` | hidden | eager | 112 | n/a | n/a | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/buy` | public | none | — | n/a | n/a | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/in-progress` | hidden | eager | 112 | n/a | n/a | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/sell` | hidden | none | — | n/a | n/a | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/stopped` | hidden | eager | 112 | n/a | n/a | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/rule` | public | none | — | 9 | — | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | `/liquidityManagement/rule/:id` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PUT | `/liquidityManagement/rule/:id` | hidden | eager | 83 | n/a | n/a | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/settings` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | `/lnurla` | public | none | — | 2 | — | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| POST | `/lnurla` | public | none | — | 2 | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurla/status` | public | none | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurld/:id` | public | none | — | — | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | `/lnurld/cb/:id/:var` | public | none | — | — | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | `/lnurlp/:id` | public | none | — | n/a | n/a | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| POST | `/lnurlp/:id` | public | eager | 490 | — | — | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| DELETE | `/lnurlp/cancel/:id` | public | eager | 545 | 14 | 39× | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/cb/:id` | public | projected | — | n/a | n/a | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/tx/:id` | public | none | — | n/a | n/a | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/wait/:id` | public | eager | 545 | 1 | 545× | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlw/:id` | public | none | — | — | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| GET | `/lnurlw/cb/:id` | public | none | — | n/a | n/a | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| POST | `/log` | public | none | — | n/a | n/a | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/:id` | hidden | eager | 11 | n/a | n/a | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/financial/validity` | hidden | none | — | n/a | n/a | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | +| GET | `/monitoring/data` | public | none | — | n/a | n/a | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| POST | `/monitoring/data` | hidden | none | — | n/a | n/a | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | `/mros` | hidden | eager | 243 | n/a | n/a | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/mros` | public | eager | 253 | n/a | n/a | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| GET | `/mros/:id` | hidden | eager | 243 | n/a | n/a | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | +| PUT | `/mros/:id` | hidden | eager | 78 | n/a | n/a | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/node/:node/:mode/cmd` | hidden | none | — | n/a | n/a | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/:mode/rpc` | hidden | none | — | n/a | n/a | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/:mode/tx/:txId` | hidden | none | — | n/a | n/a | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/cmd` | hidden | none | — | n/a | n/a | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/rpc` | public | none | — | n/a | n/a | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/tx/:txId` | hidden | none | — | n/a | n/a | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/notification/send-mail` | public | none | — | n/a | n/a | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | `/payIn` | public | none | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/poll` | hidden | none | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/retry` | hidden | eager | — | n/a | n/a | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | `/paymentLink` | public | projected | 513 | 15 | 34× | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink` | public | eager | 472 | 15 | 31× | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink` | public | none | — | 15 | — | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id` | hidden | eager | 513 | n/a | n/a | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | `/paymentLink/:id` | hidden | eager | 195 | n/a | n/a | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id/pos` | hidden | eager | 513 | n/a | n/a | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/assign` | public | eager | 472 | 15 | 31× | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/config` | public | eager | 253 | 1 | 253× | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/config` | public | none | — | n/a | n/a | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/history` | public | none | — | 16 | — | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/activate/:id` | public | none | — | n/a | n/a | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/webhook` | hidden | none | — | — | — | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/kucoin/activate/:id` | public | none | — | n/a | n/a | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| GET | `/paymentLink/locations` | public | eager | 513 | 5 | 103× | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/merchant` | public | none | — | n/a | n/a | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/payment` | hidden | eager | 472 | — | — | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/payment` | public | eager | 472 | 15 | 31× | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | `/paymentLink/payment` | public | none | — | 15 | — | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/payment/:id` | public | eager | 32 | n/a | n/a | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/payment/confirm` | public | none | — | 15 | — | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/payment/wait` | public | none | — | 15 | — | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/pos` | public | none | — | 1 | — | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/recipient` | public | none | — | 10 | — | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/standard` | public | none | — | 5 | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/standard/:id` | public | projected | — | 5 | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/stickers` | hidden | none | — | n/a | n/a | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/walletApp` | public | none | — | 33 | — | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | `/paymentLink/walletApp/:id` | public | eager | 15 | 33 | 0× | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | `/paymentLink/walletApp/recommended` | public | eager | 15 | 33 | 0× | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| POST | `/payout` | public | none | — | n/a | n/a | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/payout/completion` | hidden | none | — | n/a | n/a | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/retry` | hidden | eager | 123 | n/a | n/a | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/speedup` | hidden | eager | 123 | n/a | n/a | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/pl` | public | none | — | n/a | n/a | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | `/plp` | public | eager | 472 | — | — | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/pricing` | hidden | none | — | n/a | n/a | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| PUT | `/pricing` | hidden | eager | 53 | n/a | n/a | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/pricing/price` | public | none | — | n/a | n/a | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/realunit/account/:address` | public | none | — | 9 | — | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/account/:address/history` | public | none | — | 25 | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/quotes` | public | eager | 112 | 8 | 14× | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | eager | 61 | n/a | n/a | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/registration/:id/forward` | hidden | eager | 323 | n/a | n/a | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/transactions` | hidden | eager | 362 | 8 | 45× | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/balance/pdf` | public | eager | 78 | 1 | 78× | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/buyPrice` | public | none | — | 5 | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/buyShares` | public | none | — | 5 | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/info` | public | none | — | 8 | — | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/price` | public | none | — | 3 | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellPrice` | public | eager | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellShares` | public | eager | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/buy` | public | eager | 364 | 37 | 10× | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/buy/:id/confirm` | public | none | — | 1 | — | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/compliance/customers` | public | eager | 253 | 7 | 36× | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id` | hidden | eager | 826 | 93 | 9× | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/dossier` | hidden | eager | 264 | n/a | n/a | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/files` | hidden | eager | 264 | 4 | 66× | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | eager | 264 | 5 | 53× | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/confirm-aktionariat` | public | none | — | 3 | — | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/holders` | public | none | — | 10 | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/legal` | public | eager | 78 | 6 | 13× | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| PUT | `/realunit/legal` | public | eager | 78 | 6 | 13× | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| GET | `/realunit/pay/:id/status` | public | eager | 32 | 1 | 32× | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/submit` | public | none | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/unsigned-transaction` | public | projected | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/price` | public | none | — | 4 | — | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/price/history` | public | eager | 40 | 4 | 10× | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/buyPrice` | public | none | — | 5 | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/buyShares` | public | none | — | 5 | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/info` | public | none | — | 8 | — | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/price` | public | none | — | 3 | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellPrice` | public | eager | 78 | 4 | 20× | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellShares` | public | eager | 78 | 4 | 20× | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/complete` | public | eager | 23 | n/a | n/a | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/date` | public | none | — | 1 | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/email` | public | projected | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/status` | public | eager | 78 | n/a | n/a | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/wallet` | public | none | — | n/a | n/a | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/registration` | public | eager | 78 | 20 | 4× | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell` | public | eager | 253 | 46 | 6× | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/broadcast` | public | none | — | — | — | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/confirm` | public | none | — | — | — | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/unsigned-transactions` | public | none | — | — | — | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/support/:id` | hidden | eager | 421 | n/a | n/a | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/data` | hidden | eager | 951 | 67 | 14× | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| POST | `/realunit/support/:id/message` | hidden | eager | 441 | 5 | 88× | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/message/:messageId/file` | hidden | eager | 428 | n/a | n/a | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/messages` | hidden | eager | 421 | 5 | 84× | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/activity` | hidden | none | — | n/a | n/a | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/clerks` | hidden | none | — | n/a | n/a | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/counts` | hidden | projected | — | 13 | — | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/list` | public | none | — | — | — | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/statistics` | hidden | projected | — | 13 | — | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| PUT | `/realunit/swap` | public | eager | 78 | 27 | 3× | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/swap/:id/broadcast` | public | none | — | — | — | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/swap/:id/unsigned-transaction` | public | none | — | 1 | — | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/tokenInfo` | public | none | — | 7 | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/multi` | public | eager | 78 | 1 | 78× | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/single` | public | eager | 78 | 1 | 78× | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/transfer` | public | eager | 78 | 19 | 4× | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/transfer/:id/confirm` | public | none | — | — | — | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/wallet/status` | public | eager | 78 | 20 | 4× | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/recall` | hidden | eager | 174 | n/a | n/a | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | `/recall` | public | eager | 78 | n/a | n/a | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recall/:id` | hidden | eager | 174 | n/a | n/a | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | `/recall/:id` | hidden | eager | 78 | n/a | n/a | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recommendation` | public | none | — | 9 | — | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| POST | `/recommendation` | hidden | none | — | 9 | — | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | `/recommendation/:id/confirm` | hidden | eager | 643 | n/a | n/a | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | `/recommendation/:id/reject` | hidden | eager | 643 | n/a | n/a | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | `/ref` | public | none | — | n/a | n/a | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| POST | `/reward/ref` | hidden | eager | 156 | n/a | n/a | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/:id` | hidden | eager | 156 | n/a | n/a | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | `/reward/ref/manual` | hidden | eager | 98 | n/a | n/a | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/volumes` | public | eager | 78 | n/a | n/a | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| GET | `/route` | public | eager | 124 | 68 | 2× | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | +| PUT | `/route/:id` | hidden | eager | 174 | n/a | n/a | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | +| POST | `/scorechain/screening` | public | none | — | n/a | n/a | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| GET | `/sell` | public | eager | 124 | 24 | 5× | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| POST | `/sell` | hidden | eager | 253 | 24 | 11× | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/:id` | hidden | eager | 377 | 24 | 16× | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/:id` | public | eager | 124 | 24 | 5× | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/:id/history` | hidden | eager | 470 | — | — | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/paymentInfos` | public | none | — | 93 | — | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/paymentInfos/:id/confirm` | public | eager | 504 | 35 | 14× | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/paymentInfos/:id/tx` | public | eager | 504 | 15 | 34× | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/quote` | hidden | eager | 23 | 29 | 1× | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/setting` | public | eager | 5 | n/a | n/a | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/:key` | hidden | eager | 5 | n/a | n/a | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/customSignUpFees` | hidden | projected | — | n/a | n/a | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/disabledProcesses` | hidden | none | — | n/a | n/a | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | +| GET | `/setting/infoBanner` | public | none | — | 5 | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | +| POST | `/specialExternalAccount` | public | eager | 7 | n/a | n/a | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| GET | `/statistic` | public | none | — | 3 | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/statistic/status` | public | projected | — | n/a | n/a | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/statistic/transactions` | public | eager | 419 | 8 | 52× | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/support` | public | eager | 61 | n/a | n/a | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id` | hidden | eager | 826 | n/a | n/a | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/ip-log-pdf` | hidden | none | — | 16 | — | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/:id/onboarding-pdf` | hidden | none | — | 11 | — | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/scorechain` | hidden | projected | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/transaction-pdf` | hidden | none | — | 16 | — | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues` | hidden | none | — | n/a | n/a | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/:queue/items` | hidden | eager | 253 | n/a | n/a | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/clerks` | hidden | none | — | n/a | n/a | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/issue` | public | eager | 450 | 18 | 25× | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue` | public | eager | 34 | 18 | 2× | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id` | hidden | eager | 450 | 18 | 25× | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | `/support/issue/:id` | public | eager | 421 | n/a | n/a | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | `/support/issue/:id/close` | public | eager | 450 | 18 | 25× | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id/data` | hidden | eager | 951 | 67 | 14× | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/:id/message` | hidden | eager | 441 | 5 | 88× | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id/message/:messageId/file` | public | eager | 428 | n/a | n/a | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/activity` | hidden | none | — | n/a | n/a | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/clerk` | hidden | none | — | 18 | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/clerks` | hidden | none | — | n/a | n/a | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/counts` | hidden | projected | — | 13 | — | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/escalation/telegram-bind` | hidden | none | — | — | — | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/escalation/telegram-chats` | hidden | none | — | n/a | n/a | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/escalation/telegram-test` | hidden | none | — | n/a | n/a | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/list` | public | none | — | 13 | — | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/statistics` | hidden | projected | — | 13 | — | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/support` | public | eager | 20 | 18 | 1× | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/kycFileList` | hidden | eager | 253 | n/a | n/a | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/kycFileStats` | hidden | none | — | n/a | n/a | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/note` | hidden | eager | 9 | 11 | 1× | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/note` | hidden | eager | 253 | 11 | 23× | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/note/:id` | hidden | eager | 239 | 11 | 22× | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/note/:id` | hidden | eager | 9 | n/a | n/a | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/note/users` | hidden | projected | — | 3 | — | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews` | hidden | none | — | n/a | n/a | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews/items` | hidden | eager | 261 | n/a | n/a | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-transactions` | hidden | eager | 672 | n/a | n/a | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/recommendation-graph/:id/neighbors` | hidden | none | — | n/a | n/a | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/template` | hidden | eager | 8 | 8 | 1× | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/template` | hidden | eager | 253 | 8 | 32× | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/template/:id` | hidden | eager | 8 | 8 | 1× | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/template/:id` | hidden | eager | 8 | n/a | n/a | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transaction/:id/refund` | hidden | eager | 98 | 20 | 5× | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/transaction/:id/refund` | hidden | eager | 253 | n/a | n/a | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transactionList` | hidden | projected | — | n/a | n/a | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | +| GET | `/swap` | public | eager | 68 | 34 | 2× | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | `/swap` | hidden | eager | 78 | 34 | 2× | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/:id` | hidden | eager | 146 | 34 | 4× | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/:id` | public | eager | 68 | 34 | 2× | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/:id/history` | hidden | eager | 509 | — | — | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/paymentInfos` | public | none | — | 82 | — | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/paymentInfos/:id/confirm` | public | eager | 504 | 35 | 14× | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/paymentInfos/:id/tx` | public | eager | 504 | 15 | 34× | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/quote` | hidden | eager | 23 | 28 | 1× | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | `/tatum/addressWebhook` | public | none | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | `/trading/rule/:id` | public | eager | 87 | n/a | n/a | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| GET | `/transaction` | public | none | — | 35 | — | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/invoice` | public | eager | 1220 | 1 | 1220× | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/receipt` | public | eager | 1220 | 1 | 1220× | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/:id/refund` | public | none | — | 20 | — | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/refund` | public | none | — | n/a | n/a | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/target` | hidden | eager | 1051 | n/a | n/a | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/ChainReport` | hidden | none | — | 12 | — | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/CoinTracking` | public | none | — | 1 | — | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/admin/:id` | public | eager | 253 | n/a | n/a | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:id/stop` | hidden | none | — | n/a | n/a | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | n/a | n/a | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | eager | 13 | n/a | n/a | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | `/transaction/csv` | public | none | — | n/a | n/a | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/csv` | public | none | — | n/a | n/a | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/detail` | hidden | none | — | 2 | — | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/detail/csv` | public | none | — | n/a | n/a | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/detail/single` | public | none | — | 35 | — | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/single` | public | none | — | 35 | — | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/target` | hidden | eager | 134 | n/a | n/a | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/unassigned` | public | eager | 261 | 23 | 11× | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/user` | public | eager | 328 | 21 | 16× | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user` | public | none | — | 56 | — | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user` | public | eager | 406 | 14 | 29× | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user` | public | eager | 253 | 56 | 5× | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | none | — | n/a | n/a | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | eager | 344 | n/a | n/a | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/:id` | hidden | eager | 308 | n/a | n/a | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/account` | public | eager | 344 | n/a | n/a | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/addresses/:address` | public | eager | 351 | 56 | 6× | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/addresses/:address` | public | none | — | n/a | n/a | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/apiFilter/CT` | public | eager | 308 | n/a | n/a | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/apiKey/CT` | public | eager | 253 | 2 | 126× | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/apiKey/CT` | public | none | — | n/a | n/a | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/change` | public | none | — | 1 | — | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/data` | hidden | eager | 406 | 14 | 29× | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/detail` | public | eager | 328 | 14 | 23× | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/discountCodes` | public | eager | 78 | n/a | n/a | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/mail` | public | eager | 351 | n/a | n/a | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/mail/verify` | public | eager | 351 | 56 | 6× | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/name` | public | eager | 78 | n/a | n/a | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/profile` | public | eager | 253 | 24 | 11× | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/ref` | public | none | — | n/a | n/a | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/ref` | public | eager | 78 | 28 | 3× | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/ref` | public | eager | 273 | 28 | 10× | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/specialCodes` | public | eager | 78 | n/a | n/a | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/volumes` | hidden | none | — | n/a | n/a | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/userData` | public | eager | 253 | n/a | n/a | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData` | hidden | eager | 16 | n/a | n/a | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | `/userData/:id` | public | eager | 253 | n/a | n/a | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id` | hidden | eager | 384 | n/a | n/a | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/bankDatas` | hidden | eager | 284 | n/a | n/a | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/fee` | hidden | eager | 253 | n/a | n/a | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| DELETE | `/userData/:id/fee` | hidden | eager | 253 | n/a | n/a | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/:id/kycFile` | hidden | eager | 253 | n/a | n/a | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/merge` | hidden | eager | 331 | n/a | n/a | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/volumes` | hidden | projected | — | n/a | n/a | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/auditPeriodNumbers` | hidden | none | — | n/a | n/a | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/download` | public | none | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userDataRelation` | public | eager | 253 | n/a | n/a | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| PUT | `/userDataRelation/:id` | public | eager | 7 | n/a | n/a | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | `/userDataRelation/:id` | public | none | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| GET | `/version` | hidden | none | — | — | — | `AppController.getVersion` | `app.controller.ts` | +| POST | `/wallet` | public | none | — | n/a | n/a | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | `/wallet/:id` | hidden | eager | 20 | n/a | n/a | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index 47ce90153c..e461624a86 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -1,6 +1,6 @@ # Read-path projections -Why the endpoint inventory carries an `Eager` column, what we intend to do about it, and how the +Why the endpoint inventory carries a `Load` column, what we intend to do about it, and how the result is to be tested. ## The problem @@ -44,8 +44,9 @@ history and exports — which need fields, not objects. | **Read model** | A separate model optimised for reading. Introducing projections for read paths is a small step towards one. | Note that eager relations apply to the `find*` family, **not** to `createQueryBuilder` with an -explicit field list, and not to raw SQL. That is the entire basis of the `Eager` column in -[endpoints.md](endpoints.md): it records which mechanism an endpoint's load path uses. +explicit field list, and not to raw SQL. That is the entire basis of the `Load` column in +[endpoints.md](endpoints.md): it records which mechanism an endpoint's load path uses — +`eager`, `projected`, or `none` for no database access at all. ## What we intend to change @@ -101,11 +102,35 @@ described above proves it — a wrong value can run for weeks. ## Test definition +### Which endpoints these apply to + +Exactly one group: the endpoints marked `projected` in [endpoints.md](endpoints.md) — currently 27. +They already select an explicit field list, and a forgotten field there silently yields an empty +value. + +They do not apply to endpoints marked `none`, which touch no database and have no field list that +could be incomplete. And not yet to those marked `eager`: those load everything anyway, so nothing +can be missing. Each becomes subject to these tests the moment it is converted. + +### How they run + Four levels. All of them need a real Postgres instance; a mocked repository returns whatever the mock defines and cannot see which columns were requested, so it cannot test any of this. -The schema comes from the entity metadata (`synchronize`), not from replayed migrations — the -reference for a projection is the entity definition. +The repository already has the mechanism for this. Fourteen migration specs use it: + +```typescript +const PG_URL = process.env.MIGRATION_TEST_PG; +const describeDb = PG_URL ? describe : describe.skip; +``` + +The variable is set in the pull-request workflow, so a Postgres service is already running in CI, +and the suite still passes locally without one — those blocks are skipped. The projection tests +should use the same mechanism rather than introducing a second one. + +What is missing is only the schema and the data: the schema comes from the entity metadata +(`synchronize`), not from replayed migrations — the reference for a projection is the entity +definition — and the fixtures are generated from the same metadata. ### 1. Completeness From 5a6cd9da9897bf03d6b12e20ff2846f3fb1a7016 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:30:20 +0200 Subject: [PATCH 12/19] docs: record that the database test mechanism already exists Verified against the workflow rather than described from memory: a throwaway Postgres 16 runs as a service in all three test shards, because Jest distributes the suites across shards and each needs its own instance. Also recorded is how the migration specs isolate themselves - each creates its own Postgres schema so parallel specs cannot collide. The projection tests need the same isolation, but take their schema from the entity metadata via synchronize rather than from replayed migrations, since the reference for a projection is the entity definition. That leaves exactly two things to build: the schema setup and the generated fixtures. The document previously implied the whole test base had to be created. --- docs/read-path-projections.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index e461624a86..6c3a513b83 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -117,20 +117,28 @@ can be missing. Each becomes subject to these tests the moment it is converted. Four levels. All of them need a real Postgres instance; a mocked repository returns whatever the mock defines and cannot see which columns were requested, so it cannot test any of this. -The repository already has the mechanism for this. Fourteen migration specs use it: +**The repository already has this mechanism — it does not need to be built.** Fourteen migration +specs gate on it: ```typescript const PG_URL = process.env.MIGRATION_TEST_PG; const describeDb = PG_URL ? describe : describe.skip; ``` -The variable is set in the pull-request workflow, so a Postgres service is already running in CI, -and the suite still passes locally without one — those blocks are skipped. The projection tests -should use the same mechanism rather than introducing a second one. +`.github/workflows/api-pr.yaml` runs a throwaway Postgres 16 as a service and sets that variable, +in **all three test shards** — Jest distributes the suites across shards, so every shard needs its +own instance. Without the variable the blocks are skipped, which is why the suite still passes on a +machine with no database. -What is missing is only the schema and the data: the schema comes from the entity metadata -(`synchronize`), not from replayed migrations — the reference for a projection is the entity -definition — and the fixtures are generated from the same metadata. +The projection tests should use the same mechanism rather than introduce a second one. + +Two things are missing, and only two: + +- **The schema.** The migration specs each create their own Postgres schema (`const SCHEMA = '…'`) + so that parallel specs cannot collide. The projection tests need the same isolation, but their + schema comes from the entity metadata via `synchronize` rather than from replayed migrations — + the reference for a projection is the entity definition, not the migration history. +- **The fixtures**, generated from the same metadata. ### 1. Completeness From 776267530fd64f98c5b5efe744179dc9229211c8 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:44:53 +0200 Subject: [PATCH 13/19] docs: replace the per-endpoint load column with a load-site inventory The Load column on the endpoint table was wrong and could not be made right. It took the maximum over the whole call graph, so an endpoint counted as eager as soon as any call anywhere in its chain used find - a permission check, a lookup, a notification. Checked against independently verified cases it scored 4 of 7: the financial log and the two generic query endpoints came out eager although their data path is hand-written SQL. An endpoint does not have one load path. It reaches several, and a single value per endpoint cannot express that faithfully, regardless of how good the parser gets. Replaced by docs/load-sites.md: every one of the 1114 places in the code that reads from the database, with mechanism, target entity, and the column count measured against the real entity metadata. That statement is local and needs no call-chain heuristic. The numbers: 971 sites use the find family and therefore apply eager relations, 131 use a query builder, 12 raw SQL. Of the query builders exactly ONE carries an explicit field list; 105 call .select('alias'), which reads like a projection but selects the entity alias and still loads every column. Median 118 columns per site, 14 sites above 1000. Measurement coverage is stated honestly: 349 exact where the relations tree is written at the call site, 435 lower bounds where it arrives as a parameter, 330 not measurable. endpoints.md keeps only what is verified: the routes themselves, cross-checked in both directions against the framework's startup registration. --- CONTRIBUTING.md | 20 +- docs/endpoints.md | 1124 +++++++++++++++----------------- docs/load-sites.md | 1156 +++++++++++++++++++++++++++++++++ docs/read-path-projections.md | 28 +- 4 files changed, 1717 insertions(+), 611 deletions(-) create mode 100644 docs/load-sites.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2390917e28..afe78f925a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -515,18 +515,6 @@ export class SupportIssueController { [docs/endpoints.md](docs/endpoints.md) lists every route this service exposes. **Any change to the set of routes must be reflected there in the same PR** — adding, removing, renaming or re-scoping an endpoint, and equally a change to a `@Controller` base path, which moves every route beneath it. -Fill in the `Swagger` and `Load` columns; `Cols`, `Fields` and `Ratio` are measured, not hand-written. - -The `Load` column follows a mechanical rule — eager relations apply to the `find*` family, not to `createQueryBuilder` with an explicit field list or to raw SQL: - -- the handler reaches a `find` / `findOne` / `findBy` / `findOneBy` on a repository → `eager` -- it loads only through `createQueryBuilder(...).select([...])` or `dataSource.query(...)` → `projected` -- it touches no database at all → `none` - -The distinction between `projected` and `none` matters: a `projected` endpoint carries an explicit field list that can be incomplete, and is therefore subject to the tests in [docs/read-path-projections.md](docs/read-path-projections.md). A `none` endpoint has no field list to get wrong. - -This matters because eager relations expand recursively: a plain `findOne()` on `UserData` already selects 253 columns across 8 joins before any `relations` option is added. [docs/read-path-projections.md](docs/read-path-projections.md) explains the background and how converted read paths are tested. - Two details are easy to get wrong when editing the list by hand: - a file may declare more than one `@Controller` class, and a route belongs to the scope that **precedes** it, not to the first one in the file — `custody.controller.ts` declares both `custody` and `custody/admin` @@ -534,6 +522,14 @@ Two details are easy to get wrong when editing the list by hand: To verify a change, compare against the routes the framework logs at startup: every `Mapped {, }` line is one registered route. If a route you added does not appear there, it is not reachable — two routing decorators on the same handler, for instance, keep only one path. +[docs/load-sites.md](docs/load-sites.md) is the companion inventory: every place in the code that reads from the database, with the mechanism and the measured column count. It is generated, not hand-maintained, but the rule it documents is worth knowing before writing a query: + +- the `find` family applies eager relations and expands them recursively — a plain `findOne()` on `UserData` already selects 253 columns across 8 joins +- `createQueryBuilder` does not, but still loads every column of the root entity unless `.select([...])` narrows it +- `.select('alias')` is **not** a projection — the argument is the entity alias, not a field list + +See [docs/read-path-projections.md](docs/read-path-projections.md) for what follows from that. + ### Cron Jobs Use `@DfxCron` (custom wrapper with built-in locking, process control, and error handling). It replaces `@Cron` + `@Lock` + `DisabledProcess` — never combine these manually with `@DfxCron`. diff --git a/docs/endpoints.md b/docs/endpoints.md index f97cc6e32c..c78ae85a38 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -2,59 +2,9 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller files. 223 are marked `@ApiExcludeEndpoint` and do not appear in the public Swagger schema. -## Columns +Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match, with no entry left over on either side. -| Column | Meaning | -| ------ | ------- | -| **Swagger** | `public` — in the Swagger schema; `hidden` — carries `@ApiExcludeEndpoint` | -| **Load** | How the endpoint reaches its data. `eager` — through `find`/`findOne` on a repository, which pulls in TypeORM's automatic eager relations; `projected` — through `createQueryBuilder` with an explicit field list or raw SQL, which does not; `none` — no database access at all. Every endpoint is classified; there are no unknowns. | -| **Cols** | Columns the query actually selects, measured from the TypeORM metadata (largest load site reachable from the handler) | -| **Fields** | Fields of the response DTO, nested DTOs included | -| **Ratio** | Cols ÷ Fields — how much is loaded per field returned | - -`n/a` means the column does not apply — an endpoint returning `void` has no field count. `—` means the value could not be determined statically, **not** that it is zero. See *Coverage* below. - -## Why this list exists - -`Load = eager` marks the endpoints that load whole object graphs instead of the fields they return. TypeORM expands eager relations recursively, so a plain `findOne()` on `UserData` already selects 253 columns across 8 joins, and one on `LimitRequest` selects 434 across 15 — before any `relations` option is added. Endpoints reached only through a query builder with an explicit field list do not have that property. - -The `Ratio` column quantifies it where both sides are known. It is the basis for deciding which read paths are worth converting to explicit projections. - -[read-path-projections.md](read-path-projections.md) explains the background, the criteria for converting an endpoint, and how the result is tested. - -## Which endpoints the test definition applies to - -The four test levels in [read-path-projections.md](read-path-projections.md) exist to prove that a projection loads every field the response needs. They therefore apply to exactly one group: the **27 endpoints marked `projected`** — those already select an explicit field list, so a forgotten field would silently yield an empty value. - -They do **not** apply to the 211 endpoints marked `none`: without a database access there is no field list that could be incomplete. And they do not yet apply to the 295 marked `eager` — those load everything anyway, so nothing can be missing. They become subject to the tests at the moment they are converted. - -## How the values are produced - -- **Endpoints** — from the routing decorators in `src/**/*.controller.ts`, each attributed to the `@Controller` scope preceding it. Four files declare two controller classes with different base paths, one declares `@Controller()` without an argument. Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match. -- **Load** — from the call chain between handler and repository (up to ten levels). The rule is mechanical: eager relations apply to the `find*` family, not to `createQueryBuilder` or raw SQL. -- **Cols** — measured against the real entity metadata: the query is built and its SELECT list counted. Not an estimate. -- **Fields** — field count of the declared response DTO, nested DTOs resolved recursively. - -## Coverage - -| | Endpoints | Share | -| --- | --- | --- | -| `eager` — loads object graphs | 295 | 55 % | -| `projected` — explicit field list or raw SQL | 27 | 5 % | -| `none` — no database access | 211 | 40 % | -| unclassified | 0 | 0 % | -| Column count measured | 295 | 55 % | -| Field count known | 220 | 41 % | -| — returns `void`, no fields to count | 113 | 21 % | -| — returns no DTO (entity, string, record) | 172 | 32 % | -| — genuinely unrecognised | 28 | 5 % | -| Both, so `Ratio` available | 134 | 25 % | - -Most blanks in **Fields** are not measurement gaps: an endpoint returning `void` has nothing to count, and one returning an entity or a raw type has no declared field set. Only 28 are genuinely unrecognised. Those show `—`, the others `n/a`. - -`Eager = ?` is a real limit: a call somewhere in the chain could not be attributed, typically a method reached through inheritance or a dynamically chosen target. A missing `Cols` means no load site was attributable to the handler. - -Where both sides are known, the median ratio is **16×** — 14 endpoints exceed 100×. +For where the data is actually loaded — and how much of it — see [load-sites.md](load-sites.md). That distinction matters: an endpoint does not have *one* load path, it reaches several, and a single column per endpoint cannot express that faithfully. ## Known discrepancy @@ -62,540 +12,540 @@ Where both sides are known, the median ratio is **16×** — 14 endpoints exceed ## Endpoints -| Method | Path | Swagger | Load | Cols | Fields | Ratio | Handler | File | -| ------ | ---- | ------- | ----- | ---: | -----: | ----: | ------- | ---- | -| GET | `/` | public | none | — | n/a | n/a | `AppController.home` | `app.controller.ts` | -| POST | `/CustodyProvider` | public | none | — | n/a | n/a | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| PUT | `/CustodyProvider/:id` | hidden | eager | 6 | n/a | n/a | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | n/a | n/a | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/mail` | public | none | — | n/a | n/a | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/payout` | hidden | eager | 156 | n/a | n/a | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/sendLetter` | hidden | none | — | n/a | n/a | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/alchemy/addressWebhook` | public | none | — | n/a | n/a | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/alchemy/addresses/:webhookId` | public | none | — | n/a | n/a | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/app` | public | eager | 6 | n/a | n/a | `AppController.createRefNew` | `app.controller.ts` | -| GET | `/app/:app` | hidden | eager | 6 | n/a | n/a | `AppController.redirectToStore` | `app.controller.ts` | -| GET | `/app/advertisements` | hidden | none | — | — | — | `AppController.getAds` | `app.controller.ts` | -| GET | `/app/announcements` | public | none | — | 3 | — | `AppController.getAnnouncements` | `app.controller.ts` | -| GET | `/app/settings/flags` | hidden | none | — | 7 | — | `AppController.getFlags` | `app.controller.ts` | -| GET | `/asset` | public | projected | — | 3 | — | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | -| PUT | `/asset/:id` | public | eager | 33 | n/a | n/a | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | -| POST | `/auth` | public | eager | 78 | 1 | 78× | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/2fa` | hidden | eager | 253 | n/a | n/a | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa` | public | eager | 253 | 3 | 84× | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa/verify` | public | eager | 253 | n/a | n/a | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby` | hidden | none | — | — | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby/redirect/:id` | hidden | eager | 78 | — | — | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/challenge` | hidden | eager | 20 | 1 | 20× | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/mail` | hidden | eager | 20 | n/a | n/a | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/mail/confirm` | public | eager | 470 | 2 | 235× | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/mail/redirect` | hidden | eager | 253 | 1 | 253× | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signIn` | hidden | eager | 78 | 1 | 78× | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/signMessage` | public | none | — | 2 | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signUp` | public | eager | 78 | 1 | 78× | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/verifySignature` | public | eager | 6 | 1 | 6× | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/balance/pdf` | public | none | — | 1 | — | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | `/balance/pdf/blockchains` | public | none | — | n/a | n/a | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | `/bank` | public | eager | 13 | 4 | 3× | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| PUT | `/bank/receiveIban` | public | eager | 101 | 1 | 101× | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| POST | `/bank/yapeal/webhook` | public | none | — | n/a | n/a | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | -| GET | `/bankAccount` | public | eager | 261 | 14 | 19× | `BankAccountController.AuthGuard` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount` | public | eager | 253 | 14 | 18× | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | `/bankAccount/:id` | public | eager | 261 | 14 | 19× | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/bic` | hidden | eager | 26 | n/a | n/a | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/iban` | public | eager | 26 | n/a | n/a | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | `/bankData/:id` | public | eager | 31 | n/a | n/a | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| PUT | `/bankData/:id/nameCheck` | hidden | eager | 261 | n/a | n/a | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| POST | `/bankTx` | public | eager | 61 | n/a | n/a | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTx/:id` | hidden | eager | 1051 | n/a | n/a | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| DELETE | `/bankTx/:id/buyCrypto` | hidden | eager | 247 | n/a | n/a | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTxRepeat/:id` | public | eager | 240 | n/a | n/a | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | -| PUT | `/bankTxReturn/:id` | public | eager | 438 | n/a | n/a | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | `/bankTxReturn/:id/refund` | hidden | eager | 727 | n/a | n/a | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | `/blockchain/balances` | public | eager | 33 | 4 | 8× | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | `/blockchain/broadcast` | public | none | — | 1 | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | `/blockchain/transaction` | public | eager | 33 | 4 | 8× | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| GET | `/buy` | public | eager | 56 | 30 | 2× | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | `/buy` | hidden | eager | 364 | 30 | 12× | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/:id` | hidden | eager | 134 | 30 | 4× | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/:id` | public | eager | 56 | 30 | 2× | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/:id/history` | hidden | eager | 497 | — | — | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos` | public | eager | 78 | 69 | 1× | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos/:id/confirm` | public | eager | 504 | n/a | n/a | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos/:id/invoice` | public | eager | 504 | 1 | 504× | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/personalIban` | public | eager | 101 | 9 | 11× | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | `/buy/personalIban` | public | none | — | 9 | — | `BuyController.AuthGuard` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/quote` | hidden | eager | 23 | 29 | 1× | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buyCrypto/:id` | hidden | eager | 1090 | n/a | n/a | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/:id/amlCheck` | hidden | eager | 363 | n/a | n/a | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| DELETE | `/buyCrypto/:id/amlCheck` | hidden | eager | 422 | n/a | n/a | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/refund` | hidden | eager | 1051 | n/a | n/a | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/scorechain` | hidden | eager | 717 | n/a | n/a | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/webhook` | public | eager | 844 | n/a | n/a | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/refVolumes` | hidden | projected | — | n/a | n/a | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/volumes` | hidden | eager | 487 | n/a | n/a | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyFiat/:id` | hidden | eager | 1033 | n/a | n/a | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/:id/amlCheck` | hidden | eager | 201 | n/a | n/a | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| DELETE | `/buyFiat/:id/amlCheck` | hidden | eager | 490 | n/a | n/a | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/refund` | hidden | eager | 803 | n/a | n/a | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/scorechain` | hidden | eager | 517 | n/a | n/a | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/webhook` | public | eager | 644 | n/a | n/a | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/refVolumes` | hidden | projected | — | n/a | n/a | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/volumes` | hidden | eager | 201 | n/a | n/a | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| GET | `/country` | public | eager | 23 | 12 | 2× | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | -| GET | `/cryptoRoute` | public | none | — | n/a | n/a | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| POST | `/cryptoRoute` | hidden | none | — | n/a | n/a | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id` | hidden | none | — | n/a | n/a | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| PUT | `/cryptoRoute/:id` | hidden | none | — | n/a | n/a | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id/history` | hidden | none | — | n/a | n/a | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/custody` | public | eager | 253 | 12 | 21× | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody` | public | eager | 23 | 1 | 23× | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/account` | public | eager | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/account` | public | none | — | 8 | — | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id` | public | eager | 253 | 8 | 32× | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | `/custody/account/:id` | public | none | — | 8 | — | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/access` | public | eager | 238 | 4 | 60× | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/account/:id/access` | public | none | — | 4 | — | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | `/custody/account/:id/access/:accessId` | public | none | — | 4 | — | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| DELETE | `/custody/account/:id/access/:accessId` | public | none | — | n/a | n/a | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/balance` | public | eager | 253 | 12 | 21× | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/history` | public | eager | 253 | 6 | 42× | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/order` | public | projected | — | 8 | — | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/pdf` | public | eager | 253 | 1 | 253× | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/admin/order/:id/approve` | public | eager | 217 | n/a | n/a | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/admin/orders` | public | none | — | n/a | n/a | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| PUT | `/custody/admin/user/:id/balance` | public | eager | 118 | n/a | n/a | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/history` | public | eager | 253 | 6 | 42× | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/order` | public | projected | — | 8 | — | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody/order` | public | eager | 377 | 50 | 8× | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody/order/:id/confirm` | public | eager | 525 | n/a | n/a | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/pdf` | public | eager | 253 | 1 | 253× | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/dashboard/accounting/ledger/accounts` | public | eager | 54 | 13 | 4× | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | eager | 8 | 24 | 0× | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/equity-comparison` | hidden | projected | — | 10 | — | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/margin` | hidden | none | — | 11 | — | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/reconciliation` | hidden | eager | 54 | 11 | 5× | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/suspense` | hidden | projected | — | 12 | — | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/financial/changes` | hidden | projected | — | 5 | — | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/changes/latest` | hidden | projected | — | 4 | — | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/latest` | hidden | none | — | 8 | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/log` | public | none | — | 8 | — | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/reconciliation` | public | eager | 46 | — | — | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | `/dashboard/financial/reconciliation/overview` | hidden | eager | 33 | — | — | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | `/dashboard/financial/ref-recipients` | hidden | none | — | 3 | — | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| POST | `/deposit` | public | none | — | n/a | n/a | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| PUT | `/deposit/lightningWebhook` | hidden | none | — | n/a | n/a | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| GET | `/deuro/info` | public | eager | 11 | — | — | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | -| GET | `/dex/check-liquidity` | public | none | — | n/a | n/a | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| PUT | `/dex/complete-orders` | hidden | eager | 156 | n/a | n/a | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/liquidity-after-purchase` | hidden | eager | 156 | n/a | n/a | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/purchase-liquidity` | hidden | none | — | n/a | n/a | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/reserve-liquidity` | hidden | none | — | n/a | n/a | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/transfer-completion` | hidden | none | — | n/a | n/a | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/transfer-liquidity` | hidden | none | — | n/a | n/a | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/exchange/:exchange/balances` | public | none | — | n/a | n/a | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/price` | hidden | none | — | n/a | n/a | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | -| PUT | `/exchange/:exchange/sync` | hidden | eager | 33 | n/a | n/a | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade` | hidden | none | — | n/a | n/a | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/trade` | hidden | none | — | n/a | n/a | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade/history` | hidden | none | — | n/a | n/a | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/withdraw` | hidden | none | — | n/a | n/a | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/withdraw/:id` | public | none | — | n/a | n/a | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/trade/:id` | hidden | none | — | n/a | n/a | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/faucet` | public | eager | 78 | 23 | 3× | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | -| POST | `/fee` | public | eager | 65 | n/a | n/a | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | -| GET | `/fiat` | public | eager | 23 | 4 | 6× | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | -| POST | `/fiatOutput` | public | eager | 377 | n/a | n/a | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| PUT | `/fiatOutput/:id` | hidden | eager | 59 | n/a | n/a | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| GET | `/frankencoin/info` | public | eager | 11 | — | — | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | `/gs/db` | public | none | — | n/a | n/a | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/db/custom` | hidden | none | — | n/a | n/a | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/debug` | hidden | projected | — | n/a | n/a | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/evm/bridgeApproval` | hidden | eager | 33 | n/a | n/a | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/coinTransaction` | hidden | eager | 6 | n/a | n/a | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractApproval` | hidden | eager | 33 | n/a | n/a | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractTransaction` | hidden | none | — | n/a | n/a | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/rawTransaction` | public | eager | 6 | n/a | n/a | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/tokenTransaction` | hidden | eager | 33 | n/a | n/a | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| GET | `/gs/support` | hidden | eager | 907 | n/a | n/a | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | -| GET | `/health` | public | none | — | n/a | n/a | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/banking` | public | none | — | n/a | n/a | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/external` | public | none | — | n/a | n/a | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/liquidity` | public | none | — | n/a | n/a | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/nodes` | public | none | — | n/a | n/a | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/payment` | public | none | — | n/a | n/a | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/history` | public | none | — | 35 | — | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/history/:exportType` | hidden | eager | 331 | 1 | 331× | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/history/csv` | hidden | none | — | n/a | n/a | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| POST | `/history/csv` | public | none | — | n/a | n/a | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/ikna/bfs/:id` | hidden | none | — | n/a | n/a | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | -| POST | `/ikna/bfs/address` | public | none | — | n/a | n/a | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | `/ikna/tag` | hidden | none | — | n/a | n/a | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | `/juice/info` | public | eager | 11 | — | — | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | -| GET | `/kyc` | public | none | — | 13 | — | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc` | public | none | — | n/a | n/a | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc` | public | none | — | n/a | n/a | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| PUT | `/kyc` | public | none | — | 5 | — | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/2fa` | public | eager | 253 | n/a | n/a | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa` | public | none | — | 3 | — | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa/verify` | public | none | — | n/a | n/a | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/:code` | public | none | — | n/a | n/a | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc/:code` | public | none | — | n/a | n/a | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:code/countries` | public | eager | 23 | 12 | 2× | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:id/documents` | public | eager | 78 | 2 | 39× | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:id/documents/:type` | public | eager | 328 | n/a | n/a | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:step` | public | projected | — | 5 | — | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/admin/blacklist/ip` | hidden | projected | — | n/a | n/a | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| DELETE | `/kyc/admin/blacklist/ip` | hidden | none | — | n/a | n/a | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/ident/file/sync` | hidden | eager | 243 | n/a | n/a | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/log` | hidden | eager | 253 | n/a | n/a | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/log/:id` | hidden | eager | 17 | n/a | n/a | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/nameCheck/:id` | public | eager | 245 | n/a | n/a | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/step/:id` | hidden | eager | 385 | n/a | n/a | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/webhook` | hidden | eager | 243 | n/a | n/a | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| GET | `/kyc/client/payments` | public | eager | 1092 | n/a | n/a | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users` | public | eager | 20 | 1 | 20× | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents` | public | eager | 78 | 2 | 39× | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents/:type` | public | eager | 78 | n/a | n/a | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/payments` | public | eager | 1092 | n/a | n/a | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/countries` | public | eager | 23 | 12 | 2× | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/countries` | public | eager | 23 | 12 | 2× | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/data/:type/:id` | hidden | none | — | n/a | n/a | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/additional/:id` | public | none | — | n/a | n/a | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/address/:id` | public | none | — | n/a | n/a | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/authority/:id` | public | none | — | n/a | n/a | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/beneficial/:id` | public | eager | 23 | n/a | n/a | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/confirmation/:id` | public | none | — | n/a | n/a | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/contact/:id` | hidden | none | — | n/a | n/a | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/data/financial/:id` | public | eager | 7 | n/a | n/a | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/financial/:id` | public | none | — | n/a | n/a | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/legal/:id` | public | none | — | n/a | n/a | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/name/:id` | public | none | — | n/a | n/a | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/nationality/:id` | public | eager | 23 | n/a | n/a | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/operational/:id` | public | none | — | n/a | n/a | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/owner/:id` | public | none | — | n/a | n/a | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/payment/:id` | public | eager | 23 | n/a | n/a | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/personal/:id` | public | eager | 23 | n/a | n/a | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/phone/:id` | public | eager | 13 | n/a | n/a | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recall/:id` | public | eager | 23 | n/a | n/a | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recommendation/:id` | public | eager | 308 | n/a | n/a | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/residence/:id` | public | none | — | n/a | n/a | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/signatory/:id` | public | eager | 23 | n/a | n/a | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/statutes/:id` | public | none | — | n/a | n/a | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/file/:id` | hidden | eager | 264 | 5 | 53× | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/ident/manual/:id` | hidden | eager | 23 | n/a | n/a | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/ident/sumsub` | public | none | — | n/a | n/a | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/transfer` | hidden | eager | 20 | n/a | n/a | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/transfer` | public | eager | 331 | n/a | n/a | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/transfer` | hidden | eager | 20 | n/a | n/a | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/users` | public | eager | 561 | 3 | 187× | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/language` | public | eager | 7 | 5 | 1× | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | -| PUT | `/limitRequest/:id` | public | eager | 434 | n/a | n/a | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | -| GET | `/liquidityManagement/balance` | public | eager | 40 | n/a | n/a | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | -| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | eager | 139 | n/a | n/a | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/order/in-progress` | public | eager | 139 | n/a | n/a | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/pipeline/:id/status` | hidden | eager | 112 | n/a | n/a | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/buy` | public | none | — | n/a | n/a | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/in-progress` | hidden | eager | 112 | n/a | n/a | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/sell` | hidden | none | — | n/a | n/a | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/stopped` | hidden | eager | 112 | n/a | n/a | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/rule` | public | none | — | 9 | — | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | `/liquidityManagement/rule/:id` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PUT | `/liquidityManagement/rule/:id` | hidden | eager | 83 | n/a | n/a | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/settings` | hidden | eager | 83 | 9 | 9× | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | `/lnurla` | public | none | — | 2 | — | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| POST | `/lnurla` | public | none | — | 2 | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | `/lnurla/status` | public | none | — | 2 | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | `/lnurld/:id` | public | none | — | — | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurld/cb/:id/:var` | public | none | — | — | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurlp/:id` | public | none | — | n/a | n/a | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| POST | `/lnurlp/:id` | public | eager | 490 | — | — | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| DELETE | `/lnurlp/cancel/:id` | public | eager | 545 | 14 | 39× | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/cb/:id` | public | projected | — | n/a | n/a | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/tx/:id` | public | none | — | n/a | n/a | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/wait/:id` | public | eager | 545 | 1 | 545× | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlw/:id` | public | none | — | — | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| GET | `/lnurlw/cb/:id` | public | none | — | n/a | n/a | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | `/log` | public | none | — | n/a | n/a | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/:id` | hidden | eager | 11 | n/a | n/a | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/financial/validity` | hidden | none | — | n/a | n/a | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | -| GET | `/monitoring/data` | public | none | — | n/a | n/a | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | -| POST | `/monitoring/data` | hidden | none | — | n/a | n/a | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | -| GET | `/mros` | hidden | eager | 243 | n/a | n/a | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/mros` | public | eager | 253 | n/a | n/a | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | -| GET | `/mros/:id` | hidden | eager | 243 | n/a | n/a | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | -| PUT | `/mros/:id` | hidden | eager | 78 | n/a | n/a | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/node/:node/:mode/cmd` | hidden | none | — | n/a | n/a | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/:mode/rpc` | hidden | none | — | n/a | n/a | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/:mode/tx/:txId` | hidden | none | — | n/a | n/a | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/cmd` | hidden | none | — | n/a | n/a | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/rpc` | public | none | — | n/a | n/a | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/tx/:txId` | hidden | none | — | n/a | n/a | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/notification/send-mail` | public | none | — | n/a | n/a | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | `/payIn` | public | none | — | n/a | n/a | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | n/a | n/a | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | n/a | n/a | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/poll` | hidden | none | — | n/a | n/a | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/retry` | hidden | eager | — | n/a | n/a | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| GET | `/paymentLink` | public | projected | 513 | 15 | 34× | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink` | public | eager | 472 | 15 | 31× | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink` | public | none | — | 15 | — | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id` | hidden | eager | 513 | n/a | n/a | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | `/paymentLink/:id` | hidden | eager | 195 | n/a | n/a | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id/pos` | hidden | eager | 513 | n/a | n/a | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/assign` | public | eager | 472 | 15 | 31× | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/config` | public | eager | 253 | 1 | 253× | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/config` | public | none | — | n/a | n/a | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/history` | public | none | — | 16 | — | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/activate/:id` | public | none | — | n/a | n/a | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/webhook` | hidden | none | — | — | — | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/kucoin/activate/:id` | public | none | — | n/a | n/a | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | — | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| GET | `/paymentLink/locations` | public | eager | 513 | 5 | 103× | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/merchant` | public | none | — | n/a | n/a | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/payment` | hidden | eager | 472 | — | — | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/payment` | public | eager | 472 | 15 | 31× | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | `/paymentLink/payment` | public | none | — | 15 | — | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/payment/:id` | public | eager | 32 | n/a | n/a | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/payment/confirm` | public | none | — | 15 | — | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/payment/wait` | public | none | — | 15 | — | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/pos` | public | none | — | 1 | — | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/recipient` | public | none | — | 10 | — | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/standard` | public | none | — | 5 | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/standard/:id` | public | projected | — | 5 | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/stickers` | hidden | none | — | n/a | n/a | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/walletApp` | public | none | — | 33 | — | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | `/paymentLink/walletApp/:id` | public | eager | 15 | 33 | 0× | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | `/paymentLink/walletApp/recommended` | public | eager | 15 | 33 | 0× | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | `/payout` | public | none | — | n/a | n/a | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/payout/completion` | hidden | none | — | n/a | n/a | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/retry` | hidden | eager | 123 | n/a | n/a | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/speedup` | hidden | eager | 123 | n/a | n/a | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/pl` | public | none | — | n/a | n/a | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | -| GET | `/plp` | public | eager | 472 | — | — | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/pricing` | hidden | none | — | n/a | n/a | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| PUT | `/pricing` | hidden | eager | 53 | n/a | n/a | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | `/pricing/price` | public | none | — | n/a | n/a | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | `/realunit/account/:address` | public | none | — | 9 | — | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/account/:address/history` | public | none | — | 25 | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/quotes` | public | eager | 112 | 8 | 14× | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | eager | 61 | n/a | n/a | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/registration/:id/forward` | hidden | eager | 323 | n/a | n/a | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/transactions` | hidden | eager | 362 | 8 | 45× | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/balance/pdf` | public | eager | 78 | 1 | 78× | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/buyPrice` | public | none | — | 5 | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/buyShares` | public | none | — | 5 | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/info` | public | none | — | 8 | — | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/price` | public | none | — | 3 | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellPrice` | public | eager | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellShares` | public | eager | 78 | 4 | 20× | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/buy` | public | eager | 364 | 37 | 10× | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/buy/:id/confirm` | public | none | — | 1 | — | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/compliance/customers` | public | eager | 253 | 7 | 36× | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id` | hidden | eager | 826 | 93 | 9× | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/dossier` | hidden | eager | 264 | n/a | n/a | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/files` | hidden | eager | 264 | 4 | 66× | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | eager | 264 | 5 | 53× | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/confirm-aktionariat` | public | none | — | 3 | — | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/holders` | public | none | — | 10 | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/legal` | public | eager | 78 | 6 | 13× | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| PUT | `/realunit/legal` | public | eager | 78 | 6 | 13× | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| GET | `/realunit/pay/:id/status` | public | eager | 32 | 1 | 32× | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/submit` | public | none | — | 1 | — | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/unsigned-transaction` | public | projected | — | 5 | — | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/price` | public | none | — | 4 | — | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/price/history` | public | eager | 40 | 4 | 10× | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/buyPrice` | public | none | — | 5 | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/buyShares` | public | none | — | 5 | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/info` | public | none | — | 8 | — | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/price` | public | none | — | 3 | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellPrice` | public | eager | 78 | 4 | 20× | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellShares` | public | eager | 78 | 4 | 20× | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/complete` | public | eager | 23 | n/a | n/a | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/date` | public | none | — | 1 | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/email` | public | projected | — | 1 | — | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/status` | public | eager | 78 | n/a | n/a | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/wallet` | public | none | — | n/a | n/a | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/registration` | public | eager | 78 | 20 | 4× | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell` | public | eager | 253 | 46 | 6× | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/broadcast` | public | none | — | — | — | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/confirm` | public | none | — | — | — | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/unsigned-transactions` | public | none | — | — | — | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/support/:id` | hidden | eager | 421 | n/a | n/a | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/data` | hidden | eager | 951 | 67 | 14× | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| POST | `/realunit/support/:id/message` | hidden | eager | 441 | 5 | 88× | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/message/:messageId/file` | hidden | eager | 428 | n/a | n/a | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/messages` | hidden | eager | 421 | 5 | 84× | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/activity` | hidden | none | — | n/a | n/a | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/clerks` | hidden | none | — | n/a | n/a | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/counts` | hidden | projected | — | 13 | — | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/list` | public | none | — | — | — | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/statistics` | hidden | projected | — | 13 | — | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| PUT | `/realunit/swap` | public | eager | 78 | 27 | 3× | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/swap/:id/broadcast` | public | none | — | — | — | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/swap/:id/unsigned-transaction` | public | none | — | 1 | — | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/tokenInfo` | public | none | — | 7 | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/multi` | public | eager | 78 | 1 | 78× | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/single` | public | eager | 78 | 1 | 78× | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/transfer` | public | eager | 78 | 19 | 4× | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/transfer/:id/confirm` | public | none | — | — | — | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/wallet/status` | public | eager | 78 | 20 | 4× | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/recall` | hidden | eager | 174 | n/a | n/a | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | `/recall` | public | eager | 78 | n/a | n/a | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | `/recall/:id` | hidden | eager | 174 | n/a | n/a | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | -| PUT | `/recall/:id` | hidden | eager | 78 | n/a | n/a | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | `/recommendation` | public | none | — | 9 | — | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| POST | `/recommendation` | hidden | none | — | 9 | — | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/confirm` | hidden | eager | 643 | n/a | n/a | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/reject` | hidden | eager | 643 | n/a | n/a | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| GET | `/ref` | public | none | — | n/a | n/a | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | -| POST | `/reward/ref` | hidden | eager | 156 | n/a | n/a | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/:id` | hidden | eager | 156 | n/a | n/a | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| POST | `/reward/ref/manual` | hidden | eager | 98 | n/a | n/a | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/volumes` | public | eager | 78 | n/a | n/a | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| GET | `/route` | public | eager | 124 | 68 | 2× | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | -| PUT | `/route/:id` | hidden | eager | 174 | n/a | n/a | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | -| POST | `/scorechain/screening` | public | none | — | n/a | n/a | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | -| GET | `/sell` | public | eager | 124 | 24 | 5× | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| POST | `/sell` | hidden | eager | 253 | 24 | 11× | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/:id` | hidden | eager | 377 | 24 | 16× | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/:id` | public | eager | 124 | 24 | 5× | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/:id/history` | hidden | eager | 470 | — | — | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/paymentInfos` | public | none | — | 93 | — | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/paymentInfos/:id/confirm` | public | eager | 504 | 35 | 14× | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/paymentInfos/:id/tx` | public | eager | 504 | 15 | 34× | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/quote` | hidden | eager | 23 | 29 | 1× | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/setting` | public | eager | 5 | n/a | n/a | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/:key` | hidden | eager | 5 | n/a | n/a | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/customSignUpFees` | hidden | projected | — | n/a | n/a | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/disabledProcesses` | hidden | none | — | n/a | n/a | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | -| GET | `/setting/infoBanner` | public | none | — | 5 | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | -| POST | `/specialExternalAccount` | public | eager | 7 | n/a | n/a | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | -| GET | `/statistic` | public | none | — | 3 | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/statistic/status` | public | projected | — | n/a | n/a | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/statistic/transactions` | public | eager | 419 | 8 | 52× | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/support` | public | eager | 61 | n/a | n/a | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id` | hidden | eager | 826 | n/a | n/a | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/ip-log-pdf` | hidden | none | — | 16 | — | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/:id/onboarding-pdf` | hidden | none | — | 11 | — | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/scorechain` | hidden | projected | — | 16 | — | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/transaction-pdf` | hidden | none | — | 16 | — | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues` | hidden | none | — | n/a | n/a | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/:queue/items` | hidden | eager | 253 | n/a | n/a | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/clerks` | hidden | none | — | n/a | n/a | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/issue` | public | eager | 450 | 18 | 25× | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue` | public | eager | 34 | 18 | 2× | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id` | hidden | eager | 450 | 18 | 25× | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | `/support/issue/:id` | public | eager | 421 | n/a | n/a | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | `/support/issue/:id/close` | public | eager | 450 | 18 | 25× | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id/data` | hidden | eager | 951 | 67 | 14× | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/:id/message` | hidden | eager | 441 | 5 | 88× | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id/message/:messageId/file` | public | eager | 428 | n/a | n/a | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/activity` | hidden | none | — | n/a | n/a | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/clerk` | hidden | none | — | 18 | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/clerks` | hidden | none | — | n/a | n/a | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/counts` | hidden | projected | — | 13 | — | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/escalation/telegram-bind` | hidden | none | — | — | — | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/escalation/telegram-chats` | hidden | none | — | n/a | n/a | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/escalation/telegram-test` | hidden | none | — | n/a | n/a | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/list` | public | none | — | 13 | — | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/statistics` | hidden | projected | — | 13 | — | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/support` | public | eager | 20 | 18 | 1× | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/kycFileList` | hidden | eager | 253 | n/a | n/a | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/kycFileStats` | hidden | none | — | n/a | n/a | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/note` | hidden | eager | 9 | 11 | 1× | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/note` | hidden | eager | 253 | 11 | 23× | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/note/:id` | hidden | eager | 239 | 11 | 22× | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/note/:id` | hidden | eager | 9 | n/a | n/a | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/note/users` | hidden | projected | — | 3 | — | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews` | hidden | none | — | n/a | n/a | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews/items` | hidden | eager | 261 | n/a | n/a | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-transactions` | hidden | eager | 672 | n/a | n/a | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/recommendation-graph/:id/neighbors` | hidden | none | — | n/a | n/a | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/template` | hidden | eager | 8 | 8 | 1× | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/template` | hidden | eager | 253 | 8 | 32× | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/template/:id` | hidden | eager | 8 | 8 | 1× | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/template/:id` | hidden | eager | 8 | n/a | n/a | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transaction/:id/refund` | hidden | eager | 98 | 20 | 5× | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/transaction/:id/refund` | hidden | eager | 253 | n/a | n/a | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transactionList` | hidden | projected | — | n/a | n/a | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | -| GET | `/swap` | public | eager | 68 | 34 | 2× | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/swap` | hidden | eager | 78 | 34 | 2× | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/:id` | hidden | eager | 146 | 34 | 4× | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/:id` | public | eager | 68 | 34 | 2× | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/:id/history` | hidden | eager | 509 | — | — | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/paymentInfos` | public | none | — | 82 | — | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/paymentInfos/:id/confirm` | public | eager | 504 | 35 | 14× | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/paymentInfos/:id/tx` | public | eager | 504 | 15 | 34× | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/quote` | hidden | eager | 23 | 28 | 1× | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/tatum/addressWebhook` | public | none | — | n/a | n/a | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | -| PUT | `/trading/rule/:id` | public | eager | 87 | n/a | n/a | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | -| GET | `/transaction` | public | none | — | 35 | — | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/invoice` | public | eager | 1220 | 1 | 1220× | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/receipt` | public | eager | 1220 | 1 | 1220× | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/:id/refund` | public | none | — | 20 | — | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/refund` | public | none | — | n/a | n/a | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/target` | hidden | eager | 1051 | n/a | n/a | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/ChainReport` | hidden | none | — | 12 | — | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/CoinTracking` | public | none | — | 1 | — | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/admin/:id` | public | eager | 253 | n/a | n/a | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:id/stop` | hidden | none | — | n/a | n/a | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | n/a | n/a | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | eager | 13 | n/a | n/a | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| GET | `/transaction/csv` | public | none | — | n/a | n/a | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/csv` | public | none | — | n/a | n/a | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/detail` | hidden | none | — | 2 | — | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/detail/csv` | public | none | — | n/a | n/a | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/detail/single` | public | none | — | 35 | — | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/single` | public | none | — | 35 | — | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/target` | hidden | eager | 134 | n/a | n/a | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/unassigned` | public | eager | 261 | 23 | 11× | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/user` | public | eager | 328 | 21 | 16× | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user` | public | none | — | 56 | — | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user` | public | eager | 406 | 14 | 29× | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user` | public | eager | 253 | 56 | 5× | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | none | — | n/a | n/a | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | eager | 344 | n/a | n/a | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/:id` | hidden | eager | 308 | n/a | n/a | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/account` | public | eager | 344 | n/a | n/a | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/addresses/:address` | public | eager | 351 | 56 | 6× | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/addresses/:address` | public | none | — | n/a | n/a | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/apiFilter/CT` | public | eager | 308 | n/a | n/a | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/apiKey/CT` | public | eager | 253 | 2 | 126× | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/apiKey/CT` | public | none | — | n/a | n/a | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/change` | public | none | — | 1 | — | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/data` | hidden | eager | 406 | 14 | 29× | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/detail` | public | eager | 328 | 14 | 23× | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/discountCodes` | public | eager | 78 | n/a | n/a | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/mail` | public | eager | 351 | n/a | n/a | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/mail/verify` | public | eager | 351 | 56 | 6× | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/name` | public | eager | 78 | n/a | n/a | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/profile` | public | eager | 253 | 24 | 11× | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/ref` | public | none | — | n/a | n/a | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/ref` | public | eager | 78 | 28 | 3× | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/ref` | public | eager | 273 | 28 | 10× | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/specialCodes` | public | eager | 78 | n/a | n/a | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/volumes` | hidden | none | — | n/a | n/a | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/userData` | public | eager | 253 | n/a | n/a | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData` | hidden | eager | 16 | n/a | n/a | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| GET | `/userData/:id` | public | eager | 253 | n/a | n/a | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id` | hidden | eager | 384 | n/a | n/a | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/bankDatas` | hidden | eager | 284 | n/a | n/a | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/fee` | hidden | eager | 253 | n/a | n/a | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| DELETE | `/userData/:id/fee` | hidden | eager | 253 | n/a | n/a | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/:id/kycFile` | hidden | eager | 253 | n/a | n/a | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/merge` | hidden | eager | 331 | n/a | n/a | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/volumes` | hidden | projected | — | n/a | n/a | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/auditPeriodNumbers` | hidden | none | — | n/a | n/a | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/download` | public | none | — | n/a | n/a | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userDataRelation` | public | eager | 253 | n/a | n/a | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| PUT | `/userDataRelation/:id` | public | eager | 7 | n/a | n/a | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| DELETE | `/userDataRelation/:id` | public | none | — | n/a | n/a | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| GET | `/version` | hidden | none | — | — | — | `AppController.getVersion` | `app.controller.ts` | -| POST | `/wallet` | public | none | — | n/a | n/a | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | -| PUT | `/wallet/:id` | hidden | eager | 20 | n/a | n/a | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| Method | Path | Swagger | Handler | File | +| ------ | ---- | ------- | ------- | ---- | +| GET | `/` | public | `AppController.home` | `app.controller.ts` | +| POST | `/CustodyProvider` | public | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| PUT | `/CustodyProvider/:id` | hidden | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/mail` | public | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/payout` | hidden | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/admin/sendLetter` | hidden | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | +| POST | `/alchemy/addressWebhook` | public | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/alchemy/addresses/:webhookId` | public | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | `/app` | public | `AppController.createRefNew` | `app.controller.ts` | +| GET | `/app/:app` | hidden | `AppController.redirectToStore` | `app.controller.ts` | +| GET | `/app/advertisements` | hidden | `AppController.getAds` | `app.controller.ts` | +| GET | `/app/announcements` | public | `AppController.getAnnouncements` | `app.controller.ts` | +| GET | `/app/settings/flags` | hidden | `AppController.getFlags` | `app.controller.ts` | +| GET | `/asset` | public | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | `/asset/:id` | public | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| POST | `/auth` | public | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/2fa` | hidden | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa` | public | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/2fa/verify` | public | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby` | hidden | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/alby/redirect/:id` | hidden | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/challenge` | hidden | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/mail` | hidden | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/mail/confirm` | public | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/mail/redirect` | hidden | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signIn` | hidden | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/signMessage` | public | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | `/auth/signUp` | public | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/auth/verifySignature` | public | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | `/balance/pdf` | public | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | `/balance/pdf/blockchains` | public | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | `/bank` | public | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| PUT | `/bank/receiveIban` | public | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| POST | `/bank/yapeal/webhook` | public | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| GET | `/bankAccount` | public | `BankAccountController.AuthGuard` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount` | public | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | `/bankAccount/:id` | public | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount/bic` | hidden | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | `/bankAccount/iban` | public | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | `/bankData/:id` | public | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| PUT | `/bankData/:id/nameCheck` | hidden | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | `/bankTx` | public | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTx/:id` | hidden | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| DELETE | `/bankTx/:id/buyCrypto` | hidden | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | `/bankTxRepeat/:id` | public | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | `/bankTxReturn/:id` | public | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/bankTxReturn/:id/refund` | hidden | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | `/blockchain/balances` | public | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | `/blockchain/broadcast` | public | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | `/blockchain/transaction` | public | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| GET | `/buy` | public | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | `/buy` | hidden | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/:id` | hidden | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/:id` | public | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/:id/history` | hidden | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos` | public | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos/:id/confirm` | public | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/paymentInfos/:id/invoice` | public | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | `/buy/personalIban` | public | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | `/buy/personalIban` | public | `BuyController.AuthGuard` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buy/quote` | hidden | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | `/buyCrypto/:id` | hidden | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/:id/amlCheck` | hidden | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| DELETE | `/buyCrypto/:id/amlCheck` | hidden | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/refund` | hidden | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/scorechain` | hidden | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | `/buyCrypto/:id/webhook` | public | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/refVolumes` | hidden | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyCrypto/volumes` | hidden | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | `/buyFiat/:id` | hidden | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/:id/amlCheck` | hidden | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| DELETE | `/buyFiat/:id/amlCheck` | hidden | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/refund` | hidden | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/scorechain` | hidden | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | `/buyFiat/:id/webhook` | public | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/refVolumes` | hidden | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | `/buyFiat/volumes` | hidden | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| GET | `/country` | public | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | +| GET | `/cryptoRoute` | public | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| POST | `/cryptoRoute` | hidden | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id` | hidden | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| PUT | `/cryptoRoute/:id` | hidden | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/cryptoRoute/:id/history` | hidden | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | `/custody` | public | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody` | public | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/account` | public | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/account` | public | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id` | public | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | `/custody/account/:id` | public | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/access` | public | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/account/:id/access` | public | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | `/custody/account/:id/access/:accessId` | public | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| DELETE | `/custody/account/:id/access/:accessId` | public | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/balance` | public | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/history` | public | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/order` | public | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | `/custody/account/:id/pdf` | public | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | `/custody/admin/order/:id/approve` | public | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/admin/orders` | public | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| PUT | `/custody/admin/user/:id/balance` | public | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/history` | public | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/order` | public | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/order` | public | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | `/custody/order/:id/confirm` | public | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/custody/pdf` | public | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | `/dashboard/accounting/ledger/accounts` | public | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/equity-comparison` | hidden | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/margin` | hidden | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/reconciliation` | hidden | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/accounting/ledger/suspense` | hidden | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | `/dashboard/financial/changes` | hidden | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/changes/latest` | hidden | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/latest` | hidden | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/log` | public | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | `/dashboard/financial/reconciliation` | public | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | `/dashboard/financial/reconciliation/overview` | hidden | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | `/dashboard/financial/ref-recipients` | hidden | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| POST | `/deposit` | public | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| PUT | `/deposit/lightningWebhook` | hidden | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| GET | `/deuro/info` | public | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | +| GET | `/dex/check-liquidity` | public | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| PUT | `/dex/complete-orders` | hidden | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/liquidity-after-purchase` | hidden | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/purchase-liquidity` | hidden | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/reserve-liquidity` | hidden | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/dex/transfer-completion` | hidden | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | `/dex/transfer-liquidity` | hidden | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | `/exchange/:exchange/balances` | public | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/price` | hidden | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | +| PUT | `/exchange/:exchange/sync` | hidden | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade` | hidden | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/trade` | hidden | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/trade/history` | hidden | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/exchange/:exchange/withdraw` | hidden | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/:exchange/withdraw/:id` | public | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | `/exchange/trade/:id` | hidden | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | `/faucet` | public | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | `/fee` | public | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| GET | `/fiat` | public | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | +| POST | `/fiatOutput` | public | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| PUT | `/fiatOutput/:id` | hidden | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| GET | `/frankencoin/info` | public | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | +| POST | `/gs/db` | public | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/db/custom` | hidden | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/debug` | hidden | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | `/gs/evm/bridgeApproval` | hidden | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/coinTransaction` | hidden | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractApproval` | hidden | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/contractTransaction` | hidden | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/rawTransaction` | public | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | `/gs/evm/tokenTransaction` | hidden | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| GET | `/gs/support` | hidden | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | +| GET | `/health` | public | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/banking` | public | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/external` | public | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/liquidity` | public | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/nodes` | public | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/health/payment` | public | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | `/history` | public | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/history/:exportType` | hidden | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/history/csv` | hidden | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | `/history/csv` | public | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | `/ikna/bfs/:id` | hidden | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | `/ikna/bfs/address` | public | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/ikna/tag` | hidden | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | `/juice/info` | public | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | +| GET | `/kyc` | public | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc` | public | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc` | public | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| PUT | `/kyc` | public | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/2fa` | public | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa` | public | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/2fa/verify` | public | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/:code` | public | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | `/kyc/:code` | public | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:code/countries` | public | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:id/documents` | public | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:id/documents/:type` | public | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/kyc/:step` | public | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/admin/blacklist/ip` | hidden | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| DELETE | `/kyc/admin/blacklist/ip` | hidden | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/ident/file/sync` | hidden | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/log` | hidden | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/log/:id` | hidden | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/nameCheck/:id` | public | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | `/kyc/admin/step/:id` | hidden | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | `/kyc/admin/webhook` | hidden | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| GET | `/kyc/client/payments` | public | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users` | public | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents` | public | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/documents/:type` | public | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/client/users/:id/payments` | public | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | `/kyc/countries` | public | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/countries` | public | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| DELETE | `/kyc/data/:type/:id` | hidden | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/additional/:id` | public | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/address/:id` | public | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/authority/:id` | public | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/beneficial/:id` | public | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/confirmation/:id` | public | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/contact/:id` | hidden | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/data/financial/:id` | public | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/financial/:id` | public | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/legal/:id` | public | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/name/:id` | public | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/nationality/:id` | public | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/operational/:id` | public | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/owner/:id` | public | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/payment/:id` | public | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/personal/:id` | public | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/phone/:id` | public | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recall/:id` | public | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/recommendation/:id` | public | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/residence/:id` | public | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/signatory/:id` | public | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/data/statutes/:id` | public | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/file/:id` | hidden | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/ident/manual/:id` | hidden | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/ident/sumsub` | public | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | `/kyc/transfer` | hidden | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | `/kyc/transfer` | public | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| DELETE | `/kyc/transfer` | hidden | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | `/kyc/users` | public | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | `/language` | public | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | +| PUT | `/limitRequest/:id` | public | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | `/liquidityManagement/balance` | public | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/order/in-progress` | public | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | `/liquidityManagement/pipeline/:id/status` | hidden | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/buy` | public | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/in-progress` | hidden | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/pipeline/sell` | hidden | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | `/liquidityManagement/pipeline/stopped` | hidden | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | `/liquidityManagement/rule` | public | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | `/liquidityManagement/rule/:id` | hidden | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PUT | `/liquidityManagement/rule/:id` | hidden | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | `/liquidityManagement/rule/:id/settings` | hidden | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | `/lnurla` | public | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| POST | `/lnurla` | public | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurla/status` | public | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | `/lnurld/:id` | public | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | `/lnurld/cb/:id/:var` | public | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | `/lnurlp/:id` | public | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| POST | `/lnurlp/:id` | public | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| DELETE | `/lnurlp/cancel/:id` | public | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/cb/:id` | public | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/tx/:id` | public | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlp/wait/:id` | public | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | `/lnurlw/:id` | public | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| GET | `/lnurlw/cb/:id` | public | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| POST | `/log` | public | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/:id` | hidden | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| PUT | `/log/financial/validity` | hidden | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | +| GET | `/monitoring/data` | public | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| POST | `/monitoring/data` | hidden | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | `/mros` | hidden | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/mros` | public | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| GET | `/mros/:id` | hidden | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | +| PUT | `/mros/:id` | hidden | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | `/node/:node/:mode/cmd` | hidden | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/:mode/rpc` | hidden | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/:mode/tx/:txId` | hidden | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/cmd` | hidden | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/node/:node/rpc` | public | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | `/node/:node/tx/:txId` | hidden | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | `/notification/send-mail` | public | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | `/payIn` | public | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | `/payIn/poll` | hidden | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | `/payIn/retry` | hidden | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | `/paymentLink` | public | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink` | public | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink` | public | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id` | hidden | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | `/paymentLink/:id` | hidden | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/:id/pos` | hidden | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/assign` | public | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/config` | public | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/config` | public | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/history` | public | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/activate/:id` | public | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/binance/webhook` | hidden | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integration/kucoin/activate/:id` | public | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| GET | `/paymentLink/locations` | public | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/merchant` | public | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/payment` | hidden | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | `/paymentLink/payment` | public | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | `/paymentLink/payment` | public | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/payment/:id` | public | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/payment/confirm` | public | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/payment/wait` | public | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | `/paymentLink/pos` | public | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/recipient` | public | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/standard` | public | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/standard/:id` | public | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | `/paymentLink/stickers` | hidden | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/paymentLink/walletApp` | public | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | `/paymentLink/walletApp/:id` | public | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | `/paymentLink/walletApp/recommended` | public | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| POST | `/payout` | public | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/payout/completion` | hidden | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/retry` | hidden | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | `/payout/speedup` | hidden | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | `/pl` | public | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | `/plp` | public | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | `/pricing` | hidden | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| PUT | `/pricing` | hidden | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/pricing/price` | public | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | `/realunit/account/:address` | public | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/account/:address/history` | public | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/quotes` | public | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/admin/registration/:id/forward` | hidden | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/admin/transactions` | hidden | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/balance/pdf` | public | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/buyPrice` | public | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/buyShares` | public | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/info` | public | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/price` | public | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellPrice` | public | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/brokerbot/sellShares` | public | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/buy` | public | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/buy/:id/confirm` | public | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/compliance/customers` | public | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id` | hidden | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/dossier` | hidden | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/files` | hidden | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | `/realunit/confirm-aktionariat` | public | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/holders` | public | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/legal` | public | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| PUT | `/realunit/legal` | public | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| GET | `/realunit/pay/:id/status` | public | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/submit` | public | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/pay/unsigned-transaction` | public | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/price` | public | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/price/history` | public | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/buyPrice` | public | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/buyShares` | public | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/info` | public | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/price` | public | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellPrice` | public | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/quote/sellShares` | public | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/complete` | public | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/date` | public | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/email` | public | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/register/status` | public | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/register/wallet` | public | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/registration` | public | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell` | public | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/broadcast` | public | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/confirm` | public | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/sell/:id/unsigned-transactions` | public | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/support/:id` | hidden | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/data` | hidden | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| POST | `/realunit/support/:id/message` | hidden | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/message/:messageId/file` | hidden | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/:id/messages` | hidden | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/activity` | hidden | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/clerks` | hidden | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/counts` | hidden | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/list` | public | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | `/realunit/support/statistics` | hidden | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| PUT | `/realunit/swap` | public | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/swap/:id/broadcast` | public | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/swap/:id/unsigned-transaction` | public | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/tokenInfo` | public | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/multi` | public | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | `/realunit/transactions/receipt/single` | public | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/transfer` | public | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | `/realunit/transfer/:id/confirm` | public | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/realunit/wallet/status` | public | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | `/recall` | hidden | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | `/recall` | public | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recall/:id` | hidden | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | `/recall/:id` | hidden | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | `/recommendation` | public | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| POST | `/recommendation` | hidden | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | `/recommendation/:id/confirm` | hidden | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | `/recommendation/:id/reject` | hidden | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | `/ref` | public | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| POST | `/reward/ref` | hidden | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/:id` | hidden | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | `/reward/ref/manual` | hidden | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | `/reward/ref/volumes` | public | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| GET | `/route` | public | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | +| PUT | `/route/:id` | hidden | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | +| POST | `/scorechain/screening` | public | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| GET | `/sell` | public | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| POST | `/sell` | hidden | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/:id` | hidden | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/:id` | public | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/:id/history` | hidden | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/paymentInfos` | public | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/paymentInfos/:id/confirm` | public | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/sell/paymentInfos/:id/tx` | public | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | `/sell/quote` | hidden | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | `/setting` | public | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/:key` | hidden | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/customSignUpFees` | hidden | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | +| PUT | `/setting/disabledProcesses` | hidden | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | +| GET | `/setting/infoBanner` | public | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | +| POST | `/specialExternalAccount` | public | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| GET | `/statistic` | public | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/statistic/status` | public | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/statistic/transactions` | public | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | `/support` | public | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id` | hidden | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/ip-log-pdf` | hidden | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/:id/onboarding-pdf` | hidden | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/scorechain` | hidden | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/:id/transaction-pdf` | hidden | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues` | hidden | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/:queue/items` | hidden | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/call-queues/clerks` | hidden | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/issue` | public | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue` | public | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id` | hidden | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | `/support/issue/:id` | public | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | `/support/issue/:id/close` | public | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id/data` | hidden | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/:id/message` | hidden | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/:id/message/:messageId/file` | public | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/activity` | hidden | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/clerk` | hidden | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/clerks` | hidden | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/counts` | hidden | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/escalation/telegram-bind` | hidden | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/escalation/telegram-chats` | hidden | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/escalation/telegram-test` | hidden | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/list` | public | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/issue/statistics` | hidden | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | `/support/issue/support` | public | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | `/support/kycFileList` | hidden | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/kycFileStats` | hidden | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/note` | hidden | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/note` | hidden | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/note/:id` | hidden | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/note/:id` | hidden | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/note/users` | hidden | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews` | hidden | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-reviews/items` | hidden | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/pending-transactions` | hidden | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/recommendation-graph/:id/neighbors` | hidden | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/template` | hidden | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | +| POST | `/support/template` | hidden | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/template/:id` | hidden | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | +| DELETE | `/support/template/:id` | hidden | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transaction/:id/refund` | hidden | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| PUT | `/support/transaction/:id/refund` | hidden | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | `/support/transactionList` | hidden | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | +| GET | `/swap` | public | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | `/swap` | hidden | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/:id` | hidden | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/:id` | public | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/:id/history` | hidden | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/paymentInfos` | public | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/paymentInfos/:id/confirm` | public | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | `/swap/paymentInfos/:id/tx` | public | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | `/swap/quote` | hidden | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | `/tatum/addressWebhook` | public | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | `/trading/rule/:id` | public | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| GET | `/transaction` | public | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/invoice` | public | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/receipt` | public | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/:id/refund` | public | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/refund` | public | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/:id/target` | hidden | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/ChainReport` | hidden | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/CoinTracking` | public | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/admin/:id` | public | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:id/stop` | hidden | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | `/transaction/admin/:txId/riskAssessment` | hidden | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | `/transaction/csv` | public | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/csv` | public | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/detail` | hidden | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | `/transaction/detail/csv` | public | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/detail/single` | public | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/single` | public | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/target` | hidden | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/transaction/unassigned` | public | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | `/user` | public | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user` | public | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user` | public | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user` | public | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user` | public | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/:id` | hidden | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/account` | public | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/addresses/:address` | public | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/addresses/:address` | public | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/apiFilter/CT` | public | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/apiKey/CT` | public | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | `/user/apiKey/CT` | public | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/change` | public | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/data` | hidden | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/detail` | public | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/discountCodes` | public | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/mail` | public | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | `/user/mail/verify` | public | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/name` | public | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/profile` | public | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/ref` | public | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/ref` | public | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/ref` | public | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | `/user/specialCodes` | public | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/user/volumes` | hidden | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | `/userData` | public | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData` | hidden | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | `/userData/:id` | public | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id` | hidden | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/bankDatas` | hidden | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/fee` | hidden | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| DELETE | `/userData/:id/fee` | hidden | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/:id/kycFile` | hidden | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/merge` | hidden | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/:id/volumes` | hidden | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | `/userData/auditPeriodNumbers` | hidden | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userData/download` | public | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | `/userDataRelation` | public | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| PUT | `/userDataRelation/:id` | public | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | `/userDataRelation/:id` | public | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| GET | `/version` | hidden | `AppController.getVersion` | `app.controller.ts` | +| POST | `/wallet` | public | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | `/wallet/:id` | hidden | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. diff --git a/docs/load-sites.md b/docs/load-sites.md new file mode 100644 index 0000000000..ed677b93de --- /dev/null +++ b/docs/load-sites.md @@ -0,0 +1,1156 @@ +# Database load sites + +Every place in the code that reads from the database: **1114 load sites** across 241 files. + +This is the level at which the statement is unambiguous. An endpoint reaches several load sites — a permission check, a lookup, the actual query — so asking whether *an endpoint* loads efficiently has no single answer. Asking it of a load site does. + +## What the mechanism means + +| Mechanism | Sites | Eager relations | Columns selected | +| --------- | ----: | --------------- | ---------------- | +| `find` family | 971 | **applied** — expanded recursively | all columns of the entity plus every eager relation | +| `createQueryBuilder` | 131 | not applied | all columns of the root entity, unless `.select([...])` narrows it | +| raw SQL | 12 | not applied | whatever the statement lists | + +Among the query builders, the field list is what decides whether anything is actually saved: + +| | Sites | +| --- | ---: | +| `.select([...])` — an explicit field list | **1** | +| `.select('alias')` — selects the root alias, **loads every column** | 105 | +| no `select` at all — loads every column | 25 | + +`.select('alias')` is the trap: it reads like a projection but the argument is the entity alias, not a field list. Such a query still loads every column of the root entity — it merely avoids the eager relations. + +## Measurements + +Columns were measured against the real entity metadata by building the query and counting its SELECT list — 784 of 1114 sites. + +- **349 are exact**: the `relations` tree is written at the call site. +- **435 are lower bounds**: the tree arrives as a parameter, so only the base query is visible here. `transaction.service.ts` is the clearest case — its callers pass trees reaching well over a thousand columns. +- 330 could not be measured: no resolvable target entity, or raw SQL. + +Median across measured sites: **118 columns**. 14 sites exceed 1000, 77 exceed 500, 409 exceed 100. + +Postgres refuses a statement with more than 1664 columns. That limit is what broke every invoice and receipt in production once a single new column was added elsewhere. + +## Load sites + +Sorted by measured columns, largest first. `—` means not measurable, not zero. + +| Columns | Joins | Mechanism | Entity | Location | Method | +| ------: | ----: | --------- | ------ | -------- | ------ | +| 1453 | 49 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:229` | `FiatOutputJobService.setReadyDate` | +| 1363 | 47 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:267` | `TransactionService.getTransactionsForAccount` | +| 1282 | 50 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts:426` | `BuyCryptoPreparationService.fillPaymentLinkPayments` | +| 1231 | 38 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:174` | `FiatOutputJobService.assignBankAccount` | +| 1162 | 44 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-batch.service.ts:65` | `BuyCryptoBatchService.batchAndOptimizeTransactions` | +| 1139 | 41 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts:317` | `BuyCryptoPreparationService.In` | +| 1092 | 41 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:299` | `TransactionService.getTransactionsForUsers` | +| 1090 | 40 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:274` | `BuyCryptoService.update` | +| 1063 | 42 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts:119` | `BuyCryptoPreparationService.doAmlCheck` | +| 1051 | 36 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:513` | `BuyCryptoService.refundBuyCrypto` | +| 1051 | 32 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:328` | `BankTxService.create` | +| 1051 | 32 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:341` | `BankTxService.update` | +| 1033 | 40 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:181` | `BuyFiatService.update` | +| 1003 | 36 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts:534` | `BuyFiatPreparationService.addFiatOutputs` | +| 951 | 33 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:685` | `SupportIssueService.getIssueData` | +| 907 | 31 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1191` | `BuyCryptoService.getAllUserTransactions` | +| 891 | 37 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts:340` | `BuyFiatPreparationService.fillPaymentLinkPayments` | +| 885 | 33 | find | `BuyCryptoBatch` | `subdomains/core/buy-crypto/process/services/buy-crypto-out.service.ts:133` | `BuyCryptoOutService.fetchBatchesForPayout` | +| 880 | 26 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts:626` | `BuyCryptoPreparationService.chargebackFillUp` | +| 844 | 26 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-webhook.service.ts:17` | `BuyCryptoWebhookService.triggerWebhookManual` | +| 826 | 27 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:189` | `TransactionService.getTransactionsWithoutUid` | +| 826 | 27 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:198` | `TransactionService.getTransactionsByUserDataId` | +| 815 | 28 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:922` | `BuyCryptoService.getRefTransactions` | +| 815 | 28 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1173` | `BuyCryptoService.getAllRefTransactions` | +| 813 | 29 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts:255` | `BuyFiatPreparationService.refreshFee` | +| 803 | 29 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:401` | `BuyFiatService.refundBuyFiat` | +| 794 | 27 | find | `Transaction` | `subdomains/supporting/payment/services/transaction-notification.service.ts:37` | `TransactionNotificationService.txAssigned` | +| 785 | 24 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts:267` | `BuyCryptoNotificationService.chargebackInitiated` | +| 765 | 23 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts:588` | `BuyCryptoPreparationService.chargebackTx` | +| 737 | 30 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts:107` | `BuyFiatPreparationService.doAmlCheck` | +| 727 | 23 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:176` | `BankTxReturnService.refundBankTxReturn` | +| 717 | 27 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:788` | `BuyCryptoService.retriggerScorechain` | +| 703 | 24 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts:491` | `BuyFiatPreparationService.complete` | +| 672 | 23 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1229` | `BuyCryptoService.getByAmlReason` | +| 644 | 22 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:375` | `BuyFiatService.getBuyFiat` | +| 644 | 22 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:379` | `BuyFiatService.triggerWebhookManual` | +| 643 | 21 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:196` | `RecommendationService.confirmRecommendation` | +| 643 | 21 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:255` | `RecommendationService.getAndCheckRecommendationByCode` | +| 643 | 21 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:294` | `RecommendationService.checkAndConfirmRecommendInvitation` | +| 639 | 24 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:108` | `FiatOutputJobService.generateReports` | +| 630 | 20 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:284` | `RecommendationService.getUserDataRecommendation` | +| 623 | 20 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:620` | `BuyFiatService.getAllUserTransactions` | +| 613 | 19 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts:82` | `BuyCryptoNotificationService.paymentCompleted` | +| 613 | 19 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts:175` | `BuyCryptoNotificationService.pendingBuyCrypto` | +| 613 | 19 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts:350` | `BuyCryptoNotificationService.chargebackUnconfirmed` | +| 597 | 21 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts:432` | `BuyFiatPreparationService.setOutput` | +| 593 | 18 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:738` | `BuyCryptoService.getBuyCryptosByChargebackIban` | +| 583 | 21 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts:209` | `BuyFiatNotificationService.chargebackInitiated` | +| 583 | 21 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts:35` | `BuyFiatRegistrationService.syncReturnTxId` | +| 567 | 17 | find | `BuyCrypto` | `subdomains/core/accounting/services/consumers/buy-crypto.consumer.ts:114` | `BuyCryptoConsumer.processForward` | +| 558 | 24 | find | `PaymentQuote` | `subdomains/core/payment-link/services/payment-quote.service.ts:150` | `PaymentQuoteService.getConfirmingQuotes` | +| 545 | 23 | find | `PaymentLink` | `subdomains/core/payment-link/repositories/payment-link.repository.ts:41` | `PaymentLinkRepository.getHistoryByStatus` | +| 545 | 23 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:97` | `PaymentLinkPaymentService.updatePayment` | +| 545 | 23 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:104` | `PaymentLinkPaymentService.getPendingPaymentByUniqueId` | +| 545 | 23 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:372` | `PaymentLinkPaymentService.handleBlockchainConfirmed` | +| 545 | 23 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:449` | `PaymentLinkPaymentService.sendWebhook` | +| 540 | 17 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:784` | `BuyFiatService.getByAmlReason` | +| 538 | 21 | find | `CryptoInput` | `subdomains/core/accounting/services/consumers/crypto-input.consumer.ts:89` | `CryptoInputConsumer.processForward` | +| 535 | 15 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:955` | `BuyCryptoService.getPendingTransactions` | +| 525 | 16 | find | `CustodyOrder` | `subdomains/core/custody/services/custody-order.service.ts:294` | `CustodyOrderService.confirmOrder` | +| 525 | 16 | find | `CustodyOrder` | `subdomains/core/custody/services/custody-order.service.ts:310` | `CustodyOrderService.getOrdersForSupport` | +| 517 | 16 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts:615` | `BuyFiatPreparationService.chargebackTx` | +| 517 | 16 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:487` | `BuyFiatService.retriggerScorechain` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/repositories/payment-link.repository.ts:14` | `PaymentLinkRepository.getAllPaymentLinks` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/repositories/payment-link.repository.ts:21` | `PaymentLinkRepository.getAllPaymentLinksByExternalLinkId` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/repositories/payment-link.repository.ts:28` | `PaymentLinkRepository.getAllPaymentLinksByExternalPaymentId` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/repositories/payment-link.repository.ts:65` | `PaymentLinkRepository.getPaymentLinkByLinkId` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/repositories/payment-link.repository.ts:72` | `PaymentLinkRepository.getPaymentLinkByExternalId` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/repositories/payment-link.repository.ts:82` | `PaymentLinkRepository.getPaymentLinkByExternalPaymentId` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:430` | `PaymentLinkService.updatePaymentLinkAdmin` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:485` | `PaymentLinkService.getActivePaymentLink` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:504` | `PaymentLinkService.assignPaymentLink` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:520` | `PaymentLinkService.getLocations` | +| 513 | 21 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:702` | `PaymentLinkService.createPosLinkAdmin` | +| 509 | 17 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:947` | `BuyCryptoService.getCryptoHistory` | +| 507 | 18 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:358` | `KycService.reviewRecommendationStep` | +| 504 | 16 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:218` | `TransactionRequestService.getOrThrow` | +| 499 | 14 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:169` | `BankTxReturnService.getPendingTx` | +| 497 | 16 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:937` | `BuyCryptoService.getBuyHistory` | +| 497 | 18 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts:128` | `BuyFiatNotificationService.pendingBuyFiat` | +| 497 | 15 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:86` | `BankTxReturnService.setFiatAmounts` | +| 493 | 19 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:366` | `SupportIssueService.createIssueInternal` | +| 490 | 20 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:587` | `PaymentLinkService.getPublicPaymentLinkByUniqueId` | +| 490 | 15 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:474` | `BuyFiatService.resetAmlCheck` | +| 487 | 19 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:745` | `BuyCryptoService.getBuyCryptoByTransactionId` | +| 487 | 19 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:749` | `BuyCryptoService.getBuyCrypto` | +| 487 | 19 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:753` | `BuyCryptoService.updateVolumes` | +| 484 | 15 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward-notification.service.ts:27` | `RefRewardNotificationService.refRewardPayouts` | +| 474 | 14 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:198` | `KycService.reviewIdentSteps` | +| 474 | 16 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:274` | `RecommendationService.getAllRecommendationForUserData` | +| 474 | 16 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:318` | `RecommendationService.getRecommendationsByKycStepIdsOrUserDataId` | +| 474 | 16 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:326` | `RecommendationService.getRecommendationsByKycStepIdsOrUserDataId` | +| 474 | 16 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:336` | `RecommendationService.getAllRecommendationsByRecommenderId` | +| 474 | 16 | find | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:344` | `RecommendationService.getRecommendationsByRecommendedId` | +| 473 | 18 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:652` | `SupportIssueService.getIssueEntities` | +| 472 | 14 | find | `BuyFiat` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:122` | `BuyFiatConsumer.processForward` | +| 472 | 19 | find | `DepositRoute` | `subdomains/supporting/address-pool/route/deposit-route.service.ts:15` | `DepositRouteService.get` | +| 472 | 19 | find | `DepositRoute` | `subdomains/supporting/address-pool/route/deposit-route.service.ts:25` | `DepositRouteService.getById` | +| 472 | 19 | find | `DepositRoute` | `subdomains/supporting/address-pool/route/deposit-route.service.ts:29` | `DepositRouteService.getLatest` | +| 472 | 19 | find | `DepositRoute` | `subdomains/supporting/address-pool/route/deposit-route.service.ts:75` | `DepositRouteService.getPaymentRoutesForPublicName` | +| 470 | 16 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:637` | `BuyFiatService.getSellHistory` | +| 470 | 16 | find | `AccountMerge` | `subdomains/generic/user/models/account-merge/account-merge.service.ts:119` | `AccountMergeService.executeMerge` | +| 458 | 14 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return-notification.service.ts:27` | `BankTxReturnNotificationService.chargebackInitiated` | +| 454 | 16 | find | `LimitRequest` | `subdomains/supporting/support-issue/services/limit-request-notification.service.ts:31` | `LimitRequestNotificationService.limitRequestAcceptedManual` | +| 451 | 14 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts:42` | `BuyFiatNotificationService.paymentCompleted` | +| 451 | 14 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts:290` | `BuyFiatNotificationService.chargebackUnconfirmed` | +| 450 | 16 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:457` | `SupportIssueService.closeIssue` | +| 450 | 16 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:661` | `SupportIssueService.getIssues` | +| 450 | 16 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:670` | `SupportIssueService.getIssue` | +| 450 | 16 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:737` | `SupportIssueService.getUserIssues` | +| 449 | 13 | find | `BuyCrypto` | `subdomains/core/accounting/services/ledger-cutover.service.ts:475` | `LedgerCutoverService.openBuyCryptoReceived` | +| 449 | 13 | find | `BuyCrypto` | `subdomains/core/accounting/services/ledger-cutover.service.ts:536` | `LedgerCutoverService.openBuyCryptoOwed` | +| 449 | 13 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts:25` | `BuyCryptoRegistrationService.syncReturnTxId` | +| 444 | 16 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue-job.service.ts:37` | `SupportIssueJobService.autoOnHold` | +| 444 | 16 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue-job.service.ts:117` | `SupportIssueJobService.getAutoResponseIssues` | +| 441 | 15 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:504` | `SupportIssueService.createMessage` | +| 441 | 15 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:514` | `SupportIssueService.createMessageSupport` | +| 438 | 13 | find | `BankTxReturn` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:547` | `BankTxConsumer.openingBankTxId` | +| 438 | 13 | find | `BankTxReturn` | `subdomains/core/accounting/services/ledger-cutover.service.ts:610` | `LedgerCutoverService.openBankTxReturn` | +| 438 | 13 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:54` | `BankTxReturnService.chargebackTx` | +| 438 | 13 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:137` | `BankTxReturnService.update` | +| 434 | 15 | find | `LimitRequest` | `subdomains/supporting/support-issue/services/limit-request.service.ts:61` | `LimitRequestService.updateLimitRequest` | +| 434 | 15 | find | `LimitRequest` | `subdomains/supporting/support-issue/services/limit-request.service.ts:82` | `LimitRequestService.getUserLimitRequests` | +| 433 | 12 | find | `BankTx` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:106` | `BankTxConsumer.processForward` | +| 428 | 15 | find | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:478` | `SupportIssueService.closeIssue` | +| 428 | 15 | find | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:723` | `SupportIssueService.getIssueMessages` | +| 427 | 12 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:67` | `TransactionRequestService.txRequestWaitingExpiryCheck` | +| 427 | 12 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:78` | `TransactionRequestService.deleteOldTxRequests` | +| 422 | 12 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:778` | `BuyCryptoService.resetAmlCheck` | +| 421 | 14 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-escalation.service.ts:214` | `SupportEscalationService.checkEscalations` | +| 421 | 14 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:484` | `SupportIssueService.updateIssue` | +| 421 | 14 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:713` | `SupportIssueService.getIssueMessages` | +| 421 | 14 | find | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:750` | `SupportIssueService.getIssueUserDataId` | +| 419 | 14 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1212` | `BuyCryptoService.getTransactions` | +| 418 | 18 | find | `CustodyOrderStep` | `subdomains/core/custody/services/custody-job.service.ts:80` | `CustodyJobService.executeStep` | +| 418 | 11 | find | `User` | `subdomains/generic/user/models/user/user-job.service.ts:19` | `UserJobService.approveUser` | +| 415 | 16 | find | `Buy` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1050` | `BuyCryptoService.getBuy` | +| 406 | 12 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:399` | `UserService.updateUserV1` | +| 406 | 12 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:453` | `UserService.updateUserData` | +| 396 | 15 | find | `Swap` | `subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts:69` | `BuyCryptoRegistrationService.filterBuyCryptoPayIns` | +| 396 | 15 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:260` | `SwapService.updateSwap` | +| 396 | 15 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:268` | `SwapService.confirmSwap` | +| 392 | 14 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:645` | `BuyFiatService.getPendingTransactions` | +| 386 | 11 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:445` | `UserService.updateUserName` | +| 385 | 15 | find | `Sell` | `subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts:139` | `BuyFiatRegistrationService.createBuyFiatsAndAckPayIns` | +| 385 | 14 | find | `KycStep` | `subdomains/generic/kyc/services/kyc-admin.service.ts:45` | `KycAdminService.updateKycStep` | +| 384 | 14 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:223` | `BuyService.getByBankUsage` | +| 384 | 13 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:344` | `UserDataService.updateUserData` | +| 377 | 14 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:80` | `SellService.get` | +| 377 | 12 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:118` | `BankTxReturnService.create` | +| 377 | 12 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:148` | `BankTxReturnService.updateInternal` | +| 377 | 12 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:158` | `BankTxReturnService.getBankTxReturn` | +| 377 | 12 | find | `BankTxReturn` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts:162` | `BankTxReturnService.getBankTxReturnsByIban` | +| 374 | 14 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:287` | `SellService.confirmSell` | +| 370 | 10 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:268` | `BankTxService.fillBankTx` | +| 370 | 9 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:554` | `FiatOutputJobService.searchOutgoingBankTx` | +| 364 | 13 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:162` | `BuyService.createBuy` | +| 364 | 12 | find | `Webhook` | `subdomains/generic/user/services/webhook/webhook-notification.service.ts:32` | `WebhookNotificationService.sendOpenWebhooks` | +| 364 | 12 | find | `Webhook` | `subdomains/generic/user/services/webhook/webhook.service.ts:146` | `WebhookService.createAndSendWebhook` | +| 363 | 10 | find | `BuyCrypto` | `subdomains/core/accounting/services/consumers/payout-order.consumer.ts:297` | `PayoutOrderConsumer.owedCompletionChf` | +| 363 | 10 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts:554` | `BuyCryptoPreparationService.checkAggregatingTransactions` | +| 363 | 10 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:134` | `BuyCryptoService.checkAmlResetTx` | +| 363 | 10 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:148` | `BuyCryptoService.createFromBankTx` | +| 363 | 10 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:203` | `BuyCryptoService.createFromCheckoutTx` | +| 363 | 10 | find | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:833` | `BuyCryptoService.manualPassAmlCheck` | +| 363 | 10 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data-job.service.ts:25` | `UserDataJobService.bankTxVerification` | +| 363 | 10 | find | `BuyCrypto` | `subdomains/supporting/fiat-output/fiat-output.service.ts:108` | `FiatOutputService.create` | +| 362 | 11 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:375` | `TransactionService.getByAssetId` | +| 358 | 16 | find | `CryptoStaking` | `subdomains/core/staking/services/staking.service.ts:48` | `StakingService.getUserInvests` | +| 356 | 10 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:624` | `BankTxService.getUnassignedBankTx` | +| 356 | 10 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:634` | `BankTxService.getBankTxsByVirtualIban` | +| 354 | 13 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:117` | `SellService.getSellsByIban` | +| 351 | 11 | find | `UserData` | `subdomains/generic/user/models/kyc/kyc.service.ts:127` | `KycService.getUserByKycCode` | +| 351 | 11 | find | `UserData` | `subdomains/generic/user/models/user/user.service.ts:266` | `UserService.getUserDtoV2` | +| 351 | 11 | find | `UserData` | `subdomains/generic/user/models/user/user.service.ts:412` | `UserService.updateUser` | +| 351 | 11 | find | `UserData` | `subdomains/generic/user/models/user/user.service.ts:424` | `UserService.updateUserMail` | +| 351 | 11 | find | `UserData` | `subdomains/generic/user/models/user/user.service.ts:434` | `UserService.verifyMail` | +| 351 | 11 | find | `UserData` | `subdomains/generic/user/models/user/user.service.ts:490` | `UserService.updateAddress` | +| 344 | 11 | find | `UserData` | `subdomains/generic/user/models/user/user.service.ts:505` | `UserService.deactivateUser` | +| 343 | 10 | find | `CheckoutTx` | `subdomains/supporting/fiat-payin/services/fiat-payin-sync.service.ts:87` | `FiatPayInSyncService.createCheckoutTx` | +| 331 | 10 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1074` | `UserDataService.updateApiFilter` | +| 331 | 10 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1084` | `UserDataService.checkApiKey` | +| 331 | 14 | find | `VirtualIban` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:169` | `VirtualIbanService.getByIdForUser` | +| 331 | 14 | find | `VirtualIban` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1262` | `VirtualIbanService.getActiveForBuyAndCurrency` | +| 331 | 14 | find | `VirtualIban` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1274` | `VirtualIbanService.getByIban` | +| 331 | 14 | find | `VirtualIban` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1316` | `VirtualIbanService.getVirtualIbansForAccount` | +| 329 | 9 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:278` | `TransactionRequestService.findAndComplete` | +| 328 | 10 | find | `User` | `subdomains/generic/user/models/auth/auth.controller.ts:157` | `AuthController.createAccessTokenAfterMerge` | +| 328 | 10 | find | `Wallet` | `subdomains/generic/user/models/kyc/kyc.service.ts:138` | `KycService.getAllKycData` | +| 328 | 10 | find | `User` | `subdomains/generic/user/models/kyc/kyc.service.ts:147` | `KycService.getKycFiles` | +| 328 | 10 | find | `User` | `subdomains/generic/user/models/kyc/kyc.service.ts:162` | `KycService.getKycFile` | +| 328 | 10 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:129` | `UserService.getUserDto` | +| 323 | 10 | find | `AktionariatRegistration` | `subdomains/supporting/realunit/realunit.service.ts:1246` | `RealUnitService.forwardRegistrationToAktionariat` | +| 321 | 8 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:363` | `BuyFiatService.getBuyFiatByTransactionId` | +| 321 | 8 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:368` | `BuyFiatService.getBuyFiatsByTransactionIds` | +| 319 | 10 | find | `BuyFiat` | `subdomains/core/accounting/services/ledger-cutover.service.ts:308` | `LedgerCutoverService.openBuyFiatReceived` | +| 319 | 10 | find | `BuyFiat` | `subdomains/core/accounting/services/ledger-cutover.service.ts:357` | `LedgerCutoverService.openBuyFiatOwed` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/kyc/kyc.service.ts:61` | `KycService.transferKycData` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/kyc/kyc.service.ts:77` | `KycService.transferKycData` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:80` | `UserService.getAllUser` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:84` | `UserService.getUser` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:88` | `UserService.getAllUserDataUsers` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:93` | `UserService.getUsersByUserDataIds` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:122` | `UserService.getUsersByIp` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:204` | `UserService.getRefUser` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:209` | `UserService.getRefUsersByRefs` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:215` | `UserService.getUsersByUsedRefs` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:467` | `UserService.updateUserAdmin` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:572` | `UserService.updateUserDataVolume` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:739` | `UserService.checkApiKey` | +| 308 | 9 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:748` | `UserService.updateApiFilter` | +| 301 | 6 | find | `BankTxRepeat` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:89` | `BankTxRepeatService.getAllUserRepeats` | +| 299 | 12 | find | `TradingOrder` | `subdomains/core/trading/services/trading-order.service.ts:65` | `TradingOrderService.startNewOrders` | +| 295 | 8 | find | `CustodyOrder` | `subdomains/core/custody/services/custody-job.service.ts:113` | `CustodyJobService.onStepComplete` | +| 295 | 8 | find | `CustodyOrder` | `subdomains/core/custody/services/custody-order.service.ts:284` | `CustodyOrderService.getCustodyOrderByTx` | +| 287 | 8 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:767` | `BuyFiatService.getTransactions` | +| 284 | 10 | find | `UserData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:173` | `BankDataService.addBankData` | +| 276 | 10 | find | `NameCheckLog` | `subdomains/generic/kyc/services/name-check.service.ts:205` | `NameCheckService.createNameCheckLog` | +| 274 | 10 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:59` | `BankDataService.checkUnverifiedBankDatas` | +| 266 | 9 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data-job.service.ts:39` | `UserDataJobService.setAccountOpener` | +| 264 | 9 | find | `KycFile` | `subdomains/generic/kyc/services/kyc-file.service.ts:27` | `KycFileService.getKycFile` | +| 264 | 9 | find | `KycFile` | `subdomains/generic/kyc/services/kyc-file.service.ts:34` | `KycFileService.getUserDataKycFiles` | +| 263 | 9 | find | `KycStep` | `subdomains/generic/kyc/services/kyc-notification.service.ts:35` | `KycNotificationService.autoKycStepReminder` | +| 263 | 9 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:137` | `KycService.checkIdentSteps` | +| 263 | 9 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:174` | `KycService.reviewNationalityStep` | +| 263 | 9 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:308` | `KycService.reviewFinancialData` | +| 263 | 9 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:1850` | `KycService.getUserByTransactionOrThrow` | +| 261 | 8 | find | `BuyCryptoBatch` | `subdomains/core/buy-crypto/process/services/buy-crypto-dex.service.ts:30` | `BuyCryptoDexService.secureLiquidity` | +| 261 | 8 | find | `BuyCryptoBatch` | `subdomains/core/buy-crypto/process/services/buy-crypto-dex.service.ts:35` | `BuyCryptoDexService.secureLiquidity` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:92` | `BankDataService.verifyBankData` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:279` | `BankDataService.getBankData` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:299` | `BankDataService.getBankDatasByIban` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:308` | `BankDataService.getBankDatasByUserData` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:317` | `BankDataService.getApprovedAlternatives` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:351` | `BankDataService.getValidBankDatasForUser` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:369` | `BankDataService.getIdentBankDataForUser` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:376` | `BankDataService.updateUserBankData` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:399` | `BankDataService.updateUserBankData` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:437` | `BankDataService.createIbanForUserInternal` | +| 261 | 9 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:507` | `BankDataService.getPendingReviewList` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:413` | `BankDataService.createIbanForUser` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/organization/organization.service.ts:26` | `OrganizationService.syncOrganization` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/jwt-revocation-sync.service.ts:30` | `JwtRevocationSyncService.syncDeniedJwtAccounts` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts:54` | `UserDataController.getAllUserData` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts:91` | `UserDataController.getUserData` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:158` | `UserDataService.getUserData` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:159` | `UserDataService.getUserData` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:171` | `UserDataService.getUserDataByIds` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:190` | `UserDataService.getByKycHashOrThrow` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:216` | `UserDataService.getDifferentUserWithSameIdentDoc` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:229` | `UserDataService.getUsersByMail` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:241` | `UserDataService.getUserDataByBirthday` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:281` | `UserDataService.getUsersByName` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:285` | `UserDataService.getUsersByPhone` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:289` | `UserDataService.getUserDatasWithKycFile` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:606` | `UserDataService.assignNextKycFileId` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1055` | `UserDataService.createApiKey` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1128` | `UserDataService.loadRelationsAndVerify` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1139` | `UserDataService.loadRelationsAndVerify` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1146` | `UserDataService.loadRelationsAndVerify` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1783` | `UserDataService.getByPhoneCallStatuses` | +| 253 | 8 | find | `UserData` | `subdomains/generic/user/models/user/user.service.ts:319` | `UserService.getUserProfile` | +| 247 | 9 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:576` | `BuyFiatService.updateVolumes` | +| 247 | 6 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:384` | `BankTxService.reset` | +| 246 | 9 | find | `CustodyAccountAccess` | `subdomains/core/custody/services/custody-account.service.ts:61` | `CustodyAccountService.getCustodyAccountsForUser` | +| 245 | 8 | find | `NameCheckLog` | `subdomains/generic/kyc/services/name-check.service.ts:40` | `NameCheckService.updateLog` | +| 245 | 8 | find | `NameCheckLog` | `subdomains/generic/kyc/services/name-check.service.ts:169` | `NameCheckService.closeAndRefreshRiskStatus` | +| 243 | 8 | find | `KycStep` | `subdomains/generic/kyc/services/kyc-admin.service.ts:144` | `KycAdminService.triggerWebhook` | +| 243 | 8 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:1493` | `KycService.getKycStepById` | +| 243 | 8 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:1896` | `KycService.syncIdentFiles` | +| 243 | 8 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:1967` | `KycService.getDfxApprovalSteps` | +| 243 | 8 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:1995` | `KycService.getPendingReviewSteps` | +| 243 | 8 | find | `Mros` | `subdomains/supporting/mros/mros.service.ts:50` | `MrosService.getAll` | +| 243 | 8 | find | `Mros` | `subdomains/supporting/mros/mros.service.ts:54` | `MrosService.getById` | +| 240 | 5 | find | `BankTxRepeat` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:23` | `BankTxRepeatService.create` | +| 240 | 5 | find | `BankTxRepeat` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:36` | `BankTxRepeatService.update` | +| 240 | 5 | find | `BankTxRepeat` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:97` | `BankTxRepeatService.getPendingTx` | +| 239 | 8 | find | `SupportNote` | `subdomains/generic/support/services/support-note.service.ts:139` | `SupportNoteService.update` | +| 238 | 8 | find | `CustodyAccount` | `subdomains/core/custody/services/custody-account.service.ts:117` | `CustodyAccountService.getCustodyAccountById` | +| 238 | 8 | find | `CustodyAccountAccess` | `subdomains/core/custody/services/custody-account.service.ts:259` | `CustodyAccountService.getAccessList` | +| 238 | 8 | find | `CustodyAccount` | `subdomains/core/custody/services/custody-account.service.ts:384` | `CustodyAccountService.requireOwner` | +| 235 | 9 | find | `StakingReward` | `subdomains/core/staking/services/staking.service.ts:25` | `StakingService.getUserStakingRewards` | +| 234 | 6 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward-out.service.ts:28` | `RefRewardOutService.checkPaidTransaction` | +| 234 | 6 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward-out.service.ts:43` | `RefRewardOutService.payoutNewTransactions` | +| 234 | 6 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:188` | `RefRewardService.updateRefReward` | +| 234 | 6 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:199` | `RefRewardService.getAllUserRewards` | +| 234 | 6 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:207` | `RefRewardService.getRefRewardsByUserDataId` | +| 229 | 11 | find | `CryptoInput` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:527` | `DashboardReconciliationService.getCryptoInputs` | +| 226 | 7 | find | `CustodyOrderStep` | `subdomains/core/custody/services/custody-job.service.ts:94` | `CustodyJobService.checkStep` | +| 217 | 6 | find | `CustodyOrder` | `subdomains/core/custody/services/custody-job.service.ts:52` | `CustodyJobService.resetExpiredConfirmedOrders` | +| 217 | 6 | find | `CustodyOrder` | `subdomains/core/custody/services/custody-order.service.ts:319` | `CustodyOrderService.approveOrder` | +| 217 | 6 | find | `CustodyOrder` | `subdomains/core/custody/services/custody.service.ts:257` | `CustodyService.getUserCustodyHistory` | +| 217 | 6 | find | `CustodyOrder` | `subdomains/core/custody/services/custody.service.ts:470` | `CustodyService.calculateAccruedInterest` | +| 201 | 5 | find | `BuyFiat` | `subdomains/core/accounting/services/consumers/payout-order.consumer.ts:293` | `PayoutOrderConsumer.owedCompletionChf` | +| 201 | 8 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward-dex.service.ts:36` | `RefRewardDexService.secureLiquidity` | +| 201 | 5 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:109` | `BuyFiatService.checkAmlResetTx` | +| 201 | 5 | find | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:549` | `BuyFiatService.manualPassAmlCheck` | +| 201 | 5 | find | `BuyFiat` | `subdomains/supporting/fiat-output/fiat-output.service.ts:98` | `FiatOutputService.create` | +| 195 | 8 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:612` | `PaymentLinkService.deletePaymentLink` | +| 182 | 5 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output.service.ts:222` | `FiatOutputService.delete` | +| 179 | 4 | find | `BankTxRepeat` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:553` | `BankTxConsumer.openingBankTxId` | +| 179 | 4 | find | `BankTxRepeat` | `subdomains/core/accounting/services/ledger-cutover.service.ts:641` | `LedgerCutoverService.openBankTxRepeat` | +| 176 | 5 | find | `TradingOrder` | `subdomains/core/accounting/services/consumers/trading-order.consumer.ts:84` | `TradingOrderConsumer.processForward` | +| 176 | 5 | find | `TradingOrder` | `subdomains/core/trading/services/trading-order.service.ts:164` | `TradingOrderService.checkRunningOrders` | +| 176 | 5 | find | `TradingOrder` | `subdomains/core/trading/services/trading-rule.service.ts:42` | `TradingRuleService.getCurrentTradingOrders` | +| 174 | 13 | find | `Route` | `subdomains/core/route/route.service.ts:19` | `RouteService.updateRoute` | +| 174 | 4 | find | `Recall` | `subdomains/supporting/recall/recall.service.ts:51` | `RecallService.update` | +| 174 | 4 | find | `Recall` | `subdomains/supporting/recall/recall.service.ts:63` | `RecallService.getAll` | +| 174 | 4 | find | `Recall` | `subdomains/supporting/recall/recall.service.ts:75` | `RecallService.getById` | +| 164 | 9 | find | `DepositRoute` | `subdomains/supporting/address-pool/route/deposit-route.service.ts:41` | `DepositRouteService.getByLabel` | +| 159 | 3 | find | `Transaction` | `subdomains/supporting/payment/services/transaction-notification.service.ts:114` | `TransactionNotificationService.txUnassigned` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/core/accounting/services/consumers/liquidity-order-dex.consumer.ts:104` | `LiquidityOrderDexConsumer.processForward` | +| 156 | 4 | find | `RefReward` | `subdomains/core/accounting/services/consumers/payout-order.consumer.ts:208` | `PayoutOrderConsumer.refRewardCounter` | +| 156 | 4 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:140` | `RefRewardService.createPendingRefRewards` | +| 156 | 4 | find | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:261` | `RefRewardService.getTransactions` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/base/dex-evm.service.ts:157` | `DexEvmService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-arkade.service.ts:28` | `DexArkadeService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-bitcoin-testnet4.service.ts:55` | `DexBitcoinTestnet4Service.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-bitcoin.service.ts:52` | `DexBitcoinService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-cardano.service.ts:62` | `DexCardanoService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-firo.service.ts:48` | `DexFiroService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-icp.service.ts:73` | `DexIcpService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-lightning.service.ts:30` | `DexLightningService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-monero.service.ts:42` | `DexMoneroService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-solana.service.ts:62` | `DexSolanaService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-spark.service.ts:28` | `DexSparkService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-tron.service.ts:62` | `DexTronService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex-zano.service.ts:58` | `DexZanoService.getPendingAmount` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:162` | `DexService.fetchLiquidityTransactionResult` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:182` | `DexService.checkOrderReady` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:199` | `DexService.checkOrderCompletion` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:211` | `DexService.completeOrders` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:222` | `DexService.cancelOrders` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:234` | `DexService.hasOrder` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:239` | `DexService.getPendingOrders` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:329` | `DexService.finalizePurchaseOrders` | +| 156 | 4 | find | `LiquidityOrder` | `subdomains/supporting/dex/services/dex.service.ts:341` | `DexService.alertStrandedPurchaseOrders` | +| 150 | 10 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/services/liquidity-management.service.ts:56` | `LiquidityManagementService.getPipelineWithOrders` | +| 146 | 6 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:106` | `SwapService.updateVolume` | +| 146 | 6 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:140` | `SwapService.getSwapWithoutRoute` | +| 146 | 6 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:145` | `SwapService.get` | +| 146 | 6 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:174` | `SwapService.getAllUserSwaps` | +| 146 | 6 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:182` | `SwapService.getSwapsByUserDataId` | +| 146 | 6 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:214` | `SwapService.createSwap` | +| 146 | 6 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:253` | `SwapService.getUserSwaps` | +| 144 | 6 | find | `Sell` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:685` | `BuyFiatService.getSell` | +| 143 | 4 | find | `Fee` | `subdomains/supporting/payment/services/fee.service.ts:342` | `FeeService.getAllFees` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/accounting/services/consumers/liquidity-mgmt.consumer.ts:89` | `LiquidityMgmtConsumer.processForward` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/adapters/actions/liquidity-pipeline.adapter.ts:62` | `LiquidityPipelineAdapter.buy` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/adapters/actions/liquidity-pipeline.adapter.ts:98` | `LiquidityPipelineAdapter.checkBuyCompletion` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:122` | `LiquidityManagementPipelineService.getProcessingOrders` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:133` | `LiquidityManagementPipelineService.getPendingTx` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:181` | `LiquidityManagementPipelineService.checkRunningPipelines` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:243` | `LiquidityManagementPipelineService.startNewOrders` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:334` | `LiquidityManagementPipelineService.resolveUncertainOrders` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:506` | `LiquidityManagementPipelineService.blockConfirmedOrder` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:649` | `LiquidityManagementPipelineService.resolveUncertainOrderManually` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:702` | `LiquidityManagementPipelineService.checkRunningOrders` | +| 139 | 9 | find | `LiquidityManagementOrder` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:510` | `DashboardReconciliationService.getLmOrders` | +| 134 | 5 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:84` | `BuyService.updateVolume` | +| 134 | 5 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:120` | `BuyService.getAllBankUsages` | +| 134 | 5 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:131` | `BuyService.get` | +| 134 | 5 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:204` | `BuyService.getBuyWithoutRoute` | +| 134 | 5 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:208` | `BuyService.getUserBuys` | +| 134 | 5 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:212` | `BuyService.getUserDataBuys` | +| 134 | 5 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:250` | `BuyService.getAllUserBuys` | +| 131 | 3 | find | `StakingRefReward` | `subdomains/core/staking/services/staking.service.ts:37` | `StakingService.getUserStakingRefRewards` | +| 130 | 9 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:173` | `LiquidityManagementPipelineService.checkRunningPipelines` | +| 126 | 2 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:223` | `BankTxService.assignTransactions` | +| 126 | 2 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:417` | `BankTxService.getBankTxByTransactionId` | +| 126 | 2 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:422` | `BankTxService.getBankTxsByTransactionIds` | +| 126 | 2 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:678` | `BankTxService.getBankTxsByName` | +| 124 | 5 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:123` | `SellService.getUserSells` | +| 124 | 5 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:136` | `SellService.getSellsByUserDataId` | +| 124 | 5 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:167` | `SellService.createSell` | +| 124 | 5 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:216` | `SellService.updateSell` | +| 124 | 5 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:244` | `SellService.updateVolume` | +| 124 | 5 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:278` | `SellService.getAllUserSells` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/core/accounting/services/consumers/payout-order.consumer.ts:109` | `PayoutOrderConsumer.processForward` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:521` | `DashboardReconciliationService.getPayoutOrders` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:37` | `PayoutService.getPayoutOrders` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:69` | `PayoutService.checkOrderCompletion` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:91` | `PayoutService.getRecentPayoutSentCorrelationIds` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:117` | `PayoutService.speedupTransaction` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:140` | `PayoutService.retryUncertainPayout` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:193` | `PayoutService.getLatestOrderDate` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:206` | `PayoutService.checkPreparationCompletion` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:226` | `PayoutService.checkPayoutCompletion` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:249` | `PayoutService.prepareNewOrders` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:266` | `PayoutService.payoutOrders` | +| 123 | 3 | find | `PayoutOrder` | `subdomains/supporting/payout/services/payout.service.ts:283` | `PayoutService.processFailedOrders` | +| 118 | 3 | find | `CustodyBalance` | `subdomains/core/custody/services/custody-pdf.service.ts:47` | `CustodyPdfService.getBalancesWithHistoricalPrices` | +| 118 | 3 | find | `CustodyBalance` | `subdomains/core/custody/services/custody.service.ts:111` | `CustodyService.getUserCustodyBalance` | +| 118 | 3 | find | `CustodyBalance` | `subdomains/core/custody/services/custody.service.ts:238` | `CustodyService.updateCustodyBalance` | +| 118 | 3 | find | `BankTxRepeat` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:49` | `BankTxRepeatService.update` | +| 118 | 3 | find | `BankTxRepeat` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:62` | `BankTxRepeatService.update` | +| 118 | 3 | find | `BankTxRepeat` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:104` | `BankTxRepeatService.getBankTxRepeat` | +| 112 | 7 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/adapters/actions/liquidity-pipeline.adapter.ts:86` | `LiquidityPipelineAdapter.checkBuyCompletion` | +| 112 | 7 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:110` | `LiquidityManagementPipelineService.getProcessingPipelines` | +| 112 | 7 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:116` | `LiquidityManagementPipelineService.getStoppedPipelines` | +| 112 | 7 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:145` | `LiquidityManagementPipelineService.getPipelineStatus` | +| 112 | 7 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts:155` | `LiquidityManagementPipelineService.startNewPipelines` | +| 112 | 7 | find | `LiquidityManagementPipeline` | `subdomains/core/liquidity-management/services/liquidity-management.service.ts:196` | `LiquidityManagementService.findRunningPipeline` | +| 112 | 2 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:257` | `TransactionRequestService.getTransactionRequestByUid` | +| 112 | 2 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:261` | `TransactionRequestService.getOpenBuyQuotes` | +| 112 | 2 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:424` | `TransactionRequestService.getByAssetId` | +| 101 | 6 | find | `VirtualIban` | `subdomains/supporting/bank/bank/bank.service.ts:181` | `BankService.getReceiveIbanStatus` | +| 101 | 6 | find | `VirtualIban` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:130` | `VirtualIbanService.getActiveReceivingForUserAndCurrency` | +| 101 | 6 | find | `VirtualIban` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:155` | `VirtualIbanService.getActiveSendingCandidatesForUserAndCurrency` | +| 99 | 0 | query-builder (nur-alias) | `UserData` | `subdomains/generic/user/models/user-data/user-data-notification.service.ts:173` | `UserDataNotificationService.blackSquadInvitation` | +| 99 | 0 | query-builder (ohne-select) | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:141` | `UserDataService.getUserDataByUser` | +| 99 | 0 | query-builder (nur-alias) | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:179` | `UserDataService.getUserDataIdsByServiceProvider` | +| 99 | 0 | query-builder (nur-alias) | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:313` | `UserDataService.getUserDataByKey` | +| 99 | 0 | query-builder (ohne-select) | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1766` | `UserDataService.countByDateRange` | +| 99 | 0 | query-builder (nur-alias) | `UserData` | `subdomains/generic/user/models/user-data/user-data.service.ts:1774` | `UserDataService.getMaxKycFileIdByDateRange` | +| 98 | 2 | find | `User` | `subdomains/generic/user/models/user-data/user-data.service.ts:1033` | `UserDataService.customIdentMethod` | +| 98 | 2 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:277` | `UserService.getRefDtoV2` | +| 98 | 2 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:285` | `UserService.updateRef` | +| 98 | 2 | find | `User` | `subdomains/generic/user/services/webhook/webhook.service.ts:107` | `WebhookService.sendWebhooks` | +| 98 | 2 | find | `User` | `subdomains/generic/user/services/webhook/webhook.service.ts:176` | `WebhookService.getUsers` | +| 98 | 2 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:146` | `TransactionService.getTransactionById` | +| 98 | 2 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:151` | `TransactionService.getTransactionsByIds` | +| 98 | 2 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:159` | `TransactionService.getTransactionByUid` | +| 98 | 2 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:166` | `TransactionService.getTransactionByRequestId` | +| 98 | 2 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:173` | `TransactionService.getTransactionByRequestUid` | +| 98 | 2 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:181` | `TransactionService.getTransactionByExternalId` | +| 98 | 2 | find | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:185` | `TransactionService.getTransactionByCkoId` | +| 93 | 2 | find | `AktionariatRegistration` | `subdomains/supporting/realunit/realunit.service.ts:1281` | `RealUnitService.findRegistration` | +| 93 | 2 | find | `AktionariatRegistration` | `subdomains/supporting/realunit/realunit.service.ts:1296` | `RealUnitService.findRegistration` | +| 91 | 4 | find | `PaymentActivation` | `subdomains/core/payment-link/services/payment-activation.service.ts:64` | `PaymentActivationService.getActivationByTxId` | +| 91 | 4 | find | `PaymentActivation` | `subdomains/core/payment-link/services/payment-activation.service.ts:131` | `PaymentActivationService.getExistingActivations` | +| 87 | 2 | find | `TradingRule` | `subdomains/core/trading/services/trading-rule.service.ts:46` | `TradingRuleService.updateTradingRule` | +| 87 | 2 | find | `TradingRule` | `subdomains/core/trading/services/trading-rule.service.ts:53` | `TradingRuleService.processRules` | +| 87 | 2 | find | `TradingRule` | `subdomains/core/trading/services/trading-rule.service.ts:63` | `TradingRuleService.reactivateRules` | +| 87 | 2 | find | `RealUnitTransferRequest` | `subdomains/supporting/realunit/realunit.service.ts:3103` | `RealUnitService.confirmTransfer` | +| 87 | 2 | find | `RealUnitTransferRequest` | `subdomains/supporting/realunit/realunit.service.ts:3209` | `RealUnitService.reconcilePendingTransfers` | +| 86 | 2 | find | `Asset` | `shared/models/asset/asset.service.ts:78` | `AssetService.getAssetsByPriceRules` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:56` | `LiquidityManagementRuleService.updateRule` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:64` | `LiquidityManagementRuleService.getRule` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:72` | `LiquidityManagementRuleService.deactivateRule` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:82` | `LiquidityManagementRuleService.reactivateRule` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:95` | `LiquidityManagementRuleService.updateRuleSettings` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:110` | `LiquidityManagementRuleService.reactivateRules` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:147` | `LiquidityManagementRuleService.findExistingRuleOnCreation` | +| 83 | 4 | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management.service.ts:109` | `LiquidityManagementService.findRuleByAssetOrThrow` | +| 78 | 1 | find | `User` | `subdomains/generic/user/models/user/user.service.ts:97` | `UserService.getUserByAddress` | +| 78 | 3 | find | `Mros` | `subdomains/supporting/mros/mros.service.ts:32` | `MrosService.update` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:712` | `BuyCryptoService.getBuyCryptoByKeys` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:767` | `BuyCryptoService.updateRefVolumes` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:883` | `BuyCryptoService.getUserVolumeForType` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:963` | `BuyCryptoService.getPendingLiquidityDemandChf` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1077` | `BuyCryptoService.updateBuyVolume` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1105` | `BuyCryptoService.updateCryptoRouteVolume` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1148` | `BuyCryptoService.getRefVolume` | +| 77 | 0 | query-builder (nur-alias) | `BuyCrypto` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1160` | `BuyCryptoService.getPartnerFeeRefVolume` | +| 75 | 2 | find | `BuyCryptoBatch` | `subdomains/core/buy-crypto/process/services/buy-crypto-batch.service.ts:238` | `BuyCryptoBatchService.filterOutExistingBatches` | +| 71 | 0 | query-builder (nur-alias) | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:341` | `BuyFiatService.getBuyFiatByKey` | +| 71 | 0 | query-builder (nur-alias) | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:587` | `BuyFiatService.updateRefVolumes` | +| 71 | 0 | query-builder (nur-alias) | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:604` | `BuyFiatService.getUserVolume` | +| 71 | 0 | query-builder (nur-alias) | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:699` | `BuyFiatService.updateSellVolume` | +| 71 | 0 | query-builder (nur-alias) | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:742` | `BuyFiatService.getRefVolume` | +| 71 | 0 | query-builder (nur-alias) | `BuyFiat` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:754` | `BuyFiatService.getPartnerFeeRefVolume` | +| 71 | 1 | find | `Recall` | `subdomains/supporting/recall/recall.service.ts:68` | `RecallService.getByBankTxIds` | +| 68 | 4 | find | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:204` | `SwapService.getById` | +| 65 | 2 | find | `Fee` | `subdomains/supporting/payment/services/fee.service.ts:115` | `FeeService.createFee` | +| 61 | 0 | find | `BankTx` | `subdomains/core/accounting/services/consumers/exchange-tx.consumer.ts:386` | `ExchangeTxConsumer.hasBankRouteMatch` | +| 61 | 0 | find | `BankTx` | `subdomains/core/accounting/services/ledger-cutover.service.ts:710` | `LedgerCutoverService.openUnattributed` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:46` | `BankTxRepeatService.update` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.service.ts:59` | `BankTxRepeatService.update` | +| 61 | 0 | query-builder (nur-alias) | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx-outgoing-match.service.ts:36` | `BankTxOutgoingMatchService.getUniqueOutgoingBankTx` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:153` | `BankTxService.enrichYapealTransactions` | +| 61 | 0 | query-builder (nur-alias) | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:395` | `BankTxService.getBankTxByKey` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:429` | `BankTxService.getBankTxById` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:433` | `BankTxService.getPendingTx` | +| 61 | 0 | query-builder (nur-alias) | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:449` | `BankTxService.getBankTxFee` | +| 61 | 0 | query-builder (nur-alias) | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:461` | `BankTxService.getBankTxFee` | +| 61 | 0 | query-builder (nur-alias) | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:505` | `BankTxService.getBankTxFee` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:525` | `BankTxService.getRecentBankToBankTx` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:532` | `BankTxService.getRecentExchangeTx` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:552` | `BankTxService.storeSepaFile` | +| 61 | 0 | find | `BankTx` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:464` | `DashboardReconciliationService.getBankFlows` | +| 59 | 2 | find | `PaymentQuote` | `subdomains/core/payment-link/services/payment-quote.service.ts:94` | `PaymentQuoteService.getActualQuoteByUniqueId` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-frick.service.ts:37` | `FiatOutputFrickService.checkFrickOrderStatus` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-frick.service.ts:101` | `FiatOutputFrickService.transmitPayments` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:85` | `FiatOutputJobService.checkOlkypayOrderStatus` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:362` | `FiatOutputJobService.DisabledProcess` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:407` | `FiatOutputJobService.checkTransmission` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:432` | `FiatOutputJobService.transmitYapealPayments` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:495` | `FiatOutputJobService.transmitOlkypayPayments` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:603` | `FiatOutputJobService.getLastBatchId` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:638` | `FiatOutputJobService.notifyScryptDeposits` | +| 59 | 1 | find | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output.service.ts:203` | `FiatOutputService.update` | +| 56 | 3 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:140` | `BuyService.getById` | +| 56 | 3 | find | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:258` | `BuyService.updateBuy` | +| 54 | 2 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-query.service.ts:89` | `LedgerQueryService.getAccounts` | +| 54 | 2 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-query.service.ts:157` | `LedgerQueryService.getReconStatus` | +| 54 | 2 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-query.service.ts:619` | `LedgerQueryService.unverifiedAccountIds` | +| 54 | 2 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-reconciliation.service.ts:146` | `LedgerReconciliationService.reconcileAssets` | +| 53 | 1 | find | `PriceRule` | `subdomains/supporting/pricing/services/pricing.service.ts:163` | `PricingService.updatePrices` | +| 50 | 2 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:58` | `PaymentLinkPaymentService.processExpiredPayments` | +| 50 | 2 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:264` | `PaymentLinkPaymentService.expirePaymentIfPending` | +| 50 | 2 | find | `PaymentLink` | `subdomains/core/payment-link/services/payment-link.service.ts:172` | `PaymentLinkService.createInvoice` | +| 46 | 1 | find | `Bank` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:839` | `BankTxConsumer.bankContext` | +| 46 | 1 | find | `Bank` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:870` | `BankTxConsumer.currencyMarkAssetId` | +| 46 | 1 | find | `Bank` | `subdomains/core/accounting/services/ledger-cutover.service.ts:750` | `LedgerCutoverService.bankMaps` | +| 46 | 3 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:90` | `SellService.getById` | +| 46 | 3 | find | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:143` | `SellService.getSellWithoutRoute` | +| 46 | 1 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:40` | `BankService.getAllBanks` | +| 46 | 1 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:44` | `BankService.getBanksWithAsset` | +| 46 | 1 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:48` | `BankService.getBanksByName` | +| 46 | 1 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:222` | `BankService.loadIbanCache` | +| 46 | 1 | find | `Asset` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:74` | `DashboardReconciliationService.getReconciliation` | +| 46 | 1 | find | `Asset` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:146` | `DashboardReconciliationService.getOverview` | +| 46 | 3 | find | `Sell` | `subdomains/supporting/fiat-output/fiat-output.service.ts:149` | `FiatOutputService.createInternal` | +| 46 | 0 | query-builder (nur-alias) | `FiatOutput` | `subdomains/supporting/fiat-output/fiat-output.service.ts:231` | `FiatOutputService.getFiatOutputByKey` | +| 45 | 2 | find | `PaymentQuote` | `subdomains/core/payment-link/services/payment-quote.service.ts:124` | `PaymentQuoteService.getQuoteByAsset` | +| 45 | 2 | find | `PaymentQuote` | `subdomains/core/payment-link/services/payment-quote.service.ts:143` | `PaymentQuoteService.getQuoteByTxId` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:102` | `UserService.getUserByKey` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:140` | `UserService.getAllLinkedUsers` | +| 45 | 0 | query-builder (ohne-select) | `User` | `subdomains/generic/user/models/user/user.service.ts:177` | `UserService.getOpenRefCreditUser` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:195` | `UserService.getOpenRefCreditEur` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:226` | `UserService.countRefChildrenByUserDataIds` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:248` | `UserService.countRefReferrersByUserDataIds` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:582` | `UserService.getUserVolumes` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:592` | `UserService.getUserVolumes` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:654` | `UserService.getRefInfo` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:667` | `UserService.getRefInfo` | +| 45 | 0 | query-builder (nur-alias) | `User` | `subdomains/generic/user/models/user/user.service.ts:726` | `UserService.getTotalRefRewards` | +| 42 | 1 | find | `FaucetRequest` | `subdomains/core/faucet-request/services/faucet-request.service.ts:41` | `FaucetRequestService.checkFaucetRequests` | +| 42 | 1 | find | `FaucetRequest` | `subdomains/core/faucet-request/services/faucet-request.service.ts:93` | `FaucetRequestService.resetFaucet` | +| 40 | 1 | find | `LiquidityBalance` | `subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts:38` | `LiquidityManagementBalanceService.getAllLiqBalancesForAssets` | +| 40 | 1 | find | `LiquidityBalance` | `subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts:68` | `LiquidityManagementBalanceService.refreshBankBalance` | +| 40 | 1 | find | `LiquidityBalance` | `subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts:82` | `LiquidityManagementBalanceService.getBalances` | +| 40 | 1 | find | `LiquidityBalance` | `subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts:95` | `LiquidityManagementBalanceService.saveBalanceResults` | +| 40 | 1 | find | `AssetPrice` | `subdomains/supporting/pricing/services/asset-prices.service.ts:12` | `AssetPricesService.getAssetPrices` | +| 40 | 1 | find | `AssetPrice` | `subdomains/supporting/pricing/services/asset-prices.service.ts:38` | `AssetPricesService.getAssetPriceEntitiesForDate` | +| 39 | 1 | find | `Organization` | `subdomains/generic/user/models/organization/organization.service.ts:86` | `OrganizationService.getOrganizationByName` | +| 38 | 1 | find | `BlockchainFee` | `subdomains/supporting/payment/services/fee.service.ts:93` | `FeeService.updateBlockchainFees` | +| 38 | 1 | find | `BlockchainFee` | `subdomains/supporting/payment/services/fee.service.ts:297` | `FeeService.getBlockchainFeeInChf` | +| 38 | 1 | find | `BlockchainFee` | `subdomains/supporting/payment/services/fee.service.ts:550` | `FeeService.getBlockchainMaxFee` | +| 34 | 0 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:96` | `TransactionRequestService.syncStatus` | +| 34 | 0 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:233` | `TransactionRequestService.getTransactionRequest` | +| 34 | 0 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:244` | `TransactionRequestService.getWaitingTransactionRequest` | +| 34 | 0 | find | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:341` | `TransactionRequestService.getConsumedSettlementEventIds` | +| 34 | 0 | query-builder (nur-alias) | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:352` | `TransactionRequestService.getLegacySettlementTxIds` | +| 34 | 0 | query-builder (nur-alias) | `TransactionRequest` | `subdomains/supporting/payment/services/transaction-request.service.ts:406` | `TransactionRequestService.getActiveDepositAddresses` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:21` | `AssetService.updateAsset` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:30` | `AssetService.getAssetsWith` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:42` | `AssetService.getAllBlockchainAssets` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:46` | `AssetService.getPricedAssets` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:53` | `AssetService.getPaymentAssets` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:57` | `AssetService.getAssetById` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:61` | `AssetService.getAssetsById` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:87` | `AssetService.getAssetsByIdWith` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:91` | `AssetService.getAssetByChainId` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:95` | `AssetService.getAssetByUniqueName` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:99` | `AssetService.getAssetByQuery` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:103` | `AssetService.getAssetsByName` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:107` | `AssetService.getNativeAsset` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:121` | `AssetService.getTokens` | +| 33 | 0 | find | `Asset` | `shared/models/asset/asset.service.ts:126` | `AssetService.getSellableBlockchains` | +| 33 | 0 | query-builder (nur-alias) | `Asset` | `shared/models/asset/asset.service.ts:140` | `AssetService.getAssetsUsedOn` | +| 33 | 0 | find | `Asset` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:106` | `DashboardReconciliationService.getReconciliation` | +| 33 | 0 | find | `Asset` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:377` | `DashboardReconciliationService.getExchangeFlows` | +| 32 | 1 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:125` | `PaymentLinkPaymentService.getPaymentByExternalId` | +| 32 | 1 | find | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:131` | `PaymentLinkPaymentService.getMostRecentPayment` | +| 31 | 1 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:217` | `BankDataService.createBankDataInternal` | +| 31 | 1 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:237` | `BankDataService.updateBankData` | +| 31 | 1 | find | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:332` | `BankDataService.getVerifiedBankDataWithIban` | +| 30 | 0 | find | `ExchangeTx` | `integration/exchange/services/exchange-tx.service.ts:76` | `ExchangeTxService.upsertScryptTx` | +| 30 | 0 | find | `ExchangeTx` | `integration/exchange/services/exchange-tx.service.ts:114` | `ExchangeTxService.syncExchanges` | +| 30 | 0 | find | `ExchangeTx` | `integration/exchange/services/exchange-tx.service.ts:211` | `ExchangeTxService.getExchangeTx` | +| 30 | 0 | find | `ExchangeTx` | `integration/exchange/services/exchange-tx.service.ts:215` | `ExchangeTxService.getLastExchangeTx` | +| 30 | 0 | find | `ExchangeTx` | `integration/exchange/services/exchange-tx.service.ts:219` | `ExchangeTxService.getRecentExchangeTx` | +| 30 | 0 | find | `ExchangeTx` | `integration/exchange/services/exchange-tx.service.ts:269` | `ExchangeTxService.getSyncSinceDate` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:335` | `BankTxConsumer.cutoverOwedOpeningChf` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:563` | `BankTxConsumer.openingLiabilityLegChf` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:582` | `BankTxConsumer.cutoverOpeningLiabilityChf` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/buy-crypto.consumer.ts:323` | `BuyCryptoConsumer.paymentLinkOpeningChf` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:585` | `BuyFiatConsumer.cutoverOwedOpeningChf` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:603` | `BuyFiatConsumer.paymentLinkOpeningChf` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:621` | `BuyFiatConsumer.cutoverPaymentLinkOpeningChf` | +| 30 | 0 | find | `ExchangeTx` | `subdomains/core/accounting/services/consumers/exchange-tx.consumer.ts:78` | `ExchangeTxConsumer.processForward` | +| 30 | 2 | find | `LedgerLeg` | `subdomains/core/accounting/services/consumers/exchange-tx.consumer.ts:363` | `ExchangeTxConsumer.matchRaiffeisenSweep` | +| 30 | 0 | find | `ExchangeTx` | `subdomains/core/accounting/services/consumers/exchange-tx.consumer.ts:417` | `ExchangeTxConsumer.buildFillIndexMap` | +| 30 | 2 | find | `LedgerTx` | `subdomains/core/accounting/services/consumers/payout-order.consumer.ts:321` | `PayoutOrderConsumer.cutoverOwedOpeningChf` | +| 30 | 2 | find | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:349` | `LedgerQueryService.counterAccountByTxId` | +| 30 | 0 | find | `ExchangeTx` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:286` | `DashboardReconciliationService.getBlockchainFlows` | +| 30 | 0 | find | `ExchangeTx` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:387` | `DashboardReconciliationService.getExchangeFlows` | +| 30 | 0 | find | `ExchangeTx` | `subdomains/supporting/dashboard/dashboard-reconciliation.service.ts:544` | `DashboardReconciliationService.getExchangeWithdrawalsForBlockchain` | +| 27 | 2 | find | `LiquidityManagementAction` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:257` | `LiquidityManagementRuleService.findExistingAction` | +| 26 | 0 | query-builder (nur-alias) | `BankAccount` | `subdomains/supporting/bank/bank-account/bank-account.service.ts:22` | `BankAccountService.getBankAccountByKey` | +| 26 | 0 | find | `BankAccount` | `subdomains/supporting/bank/bank-account/bank-account.service.ts:40` | `BankAccountService.checkFailedBankAccounts` | +| 26 | 0 | find | `BankAccount` | `subdomains/supporting/bank/bank-account/bank-account.service.ts:48` | `BankAccountService.reloadErrorBankAccounts` | +| 26 | 0 | find | `BankAccount` | `subdomains/supporting/bank/bank-account/bank-account.service.ts:56` | `BankAccountService.reloadUncheckedBankAccounts` | +| 26 | 0 | find | `BankAccount` | `subdomains/supporting/bank/bank-account/bank-account.service.ts:66` | `BankAccountService.getOrCreateIbanBankAccountInternal` | +| 26 | 0 | find | `BankAccount` | `subdomains/supporting/bank/bank-account/bank-account.service.ts:73` | `BankAccountService.getOrCreateBicBankAccountInternal` | +| 25 | 0 | query-builder (nur-alias) | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:216` | `RefRewardService.getRefRewardVolume` | +| 25 | 0 | query-builder (nur-alias) | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:249` | `RefRewardService.updatePaidRefCredit` | +| 25 | 0 | query-builder (nur-alias) | `RefReward` | `subdomains/core/referral/reward/services/ref-reward.service.ts:278` | `RefRewardService.getRewardRecipients` | +| 25 | 0 | find | `CheckoutTx` | `subdomains/supporting/fiat-payin/services/checkout-tx.service.ts:53` | `CheckoutTxService.getCheckoutTx` | +| 25 | 0 | find | `CheckoutTx` | `subdomains/supporting/fiat-payin/services/checkout-tx.service.ts:60` | `CheckoutTxService.getPendingRefundedList` | +| 25 | 0 | find | `CheckoutTx` | `subdomains/supporting/fiat-payin/services/checkout-tx.service.ts:71` | `CheckoutTxService.getSyncDate` | +| 23 | 0 | find | `Country` | `shared/models/country/country.service.ts:12` | `CountryService.getAllCountry` | +| 23 | 0 | find | `Country` | `shared/models/country/country.service.ts:16` | `CountryService.getCountry` | +| 23 | 0 | find | `Country` | `shared/models/country/country.service.ts:21` | `CountryService.getCountryWithSymbol` | +| 23 | 0 | find | `Country` | `shared/models/country/country.service.ts:22` | `CountryService.getCountryWithSymbol` | +| 23 | 0 | find | `Country` | `shared/models/country/country.service.ts:28` | `CountryService.getCountriesByKycType` | +| 23 | 0 | find | `Country` | `shared/models/country/country.service.ts:31` | `CountryService.getCountriesByKycType` | +| 23 | 0 | query-builder (nur-alias) | `TradingOrder` | `subdomains/core/trading/services/trading-order.service.ts:53` | `TradingOrderService.getTradingOrderYield` | +| 23 | 0 | query-builder (nur-alias) | `TradingOrder` | `subdomains/core/trading/services/trading-rule.service.ts:35` | `TradingRuleService.getCurrentTradingOrders` | +| 23 | 0 | find | `BankTxBatch` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx-batch.service.ts:10` | `BankTxBatchService.getBankTxBatchByIban` | +| 21 | 0 | query-builder (ohne-select) | `DepositRoute` | `subdomains/supporting/address-pool/route/deposit-route.service.ts:87` | `DepositRouteService.getPaymentRouteForKey` | +| 20 | 0 | query-builder (nur-alias) | `Sell` | `subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts:97` | `BuyFiatRegistrationService.filterSellPayIns` | +| 20 | 0 | query-builder (nur-alias) | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:95` | `SellService.getSellByKey` | +| 20 | 0 | query-builder (nur-alias) | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:261` | `SellService.getUserVolume` | +| 20 | 0 | query-builder (nur-alias) | `Sell` | `subdomains/core/sell-crypto/route/sell.service.ts:271` | `SellService.getTotalVolume` | +| 20 | 0 | find | `Wallet` | `subdomains/generic/user/models/wallet/wallet.repository.ts:13` | `WalletRepository.getByAddress` | +| 20 | 0 | find | `Wallet` | `subdomains/generic/user/models/wallet/wallet.service.ts:19` | `WalletService.updateWallet` | +| 20 | 0 | find | `Wallet` | `subdomains/generic/user/models/wallet/wallet.service.ts:28` | `WalletService.getByAddress` | +| 20 | 0 | find | `Wallet` | `subdomains/generic/user/models/wallet/wallet.service.ts:36` | `WalletService.getByIdOrName` | +| 20 | 0 | find | `Wallet` | `subdomains/generic/user/models/wallet/wallet.service.ts:40` | `WalletService.getKycClients` | +| 20 | 0 | find | `Wallet` | `subdomains/generic/user/models/wallet/wallet.service.ts:44` | `WalletService.getDefault` | +| 20 | 0 | query-builder (nur-alias) | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:221` | `TransactionService.getTransactionList` | +| 20 | 0 | query-builder (nur-alias) | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:324` | `TransactionService.getManualRefVolume` | +| 20 | 0 | query-builder (nur-alias) | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:353` | `TransactionService.getAuditPeriodVolumes` | +| 20 | 0 | query-builder (nur-alias) | `Transaction` | `subdomains/supporting/payment/services/transaction.service.ts:389` | `TransactionService.getTransactionByKey` | +| 20 | 0 | query-builder (ohne-select) | `PriceRule` | `subdomains/supporting/pricing/services/pricing.service.ts:272` | `PricingService.getRuleFor` | +| 19 | 0 | query-builder (ohne-select) | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:79` | `SwapService.getSwapByAddress` | +| 19 | 0 | query-builder (nur-alias) | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:123` | `SwapService.getUserVolume` | +| 19 | 0 | query-builder (nur-alias) | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:133` | `SwapService.getTotalVolume` | +| 19 | 0 | query-builder (nur-alias) | `Swap` | `subdomains/core/buy-crypto/routes/swap/swap.service.ts:152` | `SwapService.getSwapByKey` | +| 19 | 0 | query-builder (ohne-select) | `CustodyOrder` | `subdomains/core/custody/services/custody-order.service.ts:231` | `CustodyOrderService.getOrdersByUserData` | +| 19 | 0 | query-builder (nur-alias) | `CustodyOrder` | `subdomains/core/custody/services/custody.service.ts:221` | `CustodyService.updateCustodyBalance` | +| 19 | 0 | query-builder (nur-alias) | `CustodyOrder` | `subdomains/core/custody/services/custody.service.ts:229` | `CustodyService.updateCustodyBalance` | +| 19 | 0 | query-builder (nur-alias) | `CustodyOrder` | `subdomains/core/custody/services/custody.service.ts:677` | `CustodyService.getHistoricalBalances` | +| 19 | 0 | query-builder (nur-alias) | `CustodyOrder` | `subdomains/core/custody/services/custody.service.ts:689` | `CustodyService.getHistoricalBalances` | +| 17 | 0 | find | `KycLog` | `subdomains/generic/kyc/services/kyc-log.service.ts:83` | `KycLogService.updateLog` | +| 17 | 0 | find | `KycLog` | `subdomains/generic/kyc/services/kyc-log.service.ts:90` | `KycLogService.updateLogPdfUrl` | +| 17 | 0 | find | `KycLog` | `subdomains/generic/kyc/services/kyc-log.service.ts:109` | `KycLogService.getLogsByUserDataId` | +| 16 | 0 | find | `Fiat` | `shared/models/fiat/fiat.service.ts:12` | `FiatService.getAllFiat` | +| 16 | 0 | find | `Fiat` | `shared/models/fiat/fiat.service.ts:16` | `FiatService.getActiveFiat` | +| 16 | 0 | find | `Fiat` | `shared/models/fiat/fiat.service.ts:27` | `FiatService.getFiat` | +| 16 | 0 | find | `Fiat` | `shared/models/fiat/fiat.service.ts:33` | `FiatService.getFiatByName` | +| 16 | 0 | find | `Fiat` | `shared/models/fiat/fiat.service.ts:43` | `FiatService.getFiatByCountry` | +| 16 | 0 | query-builder (nur-alias) | `PaymentLinkPayment` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:148` | `PaymentLinkPaymentService.getMostRecentPayments` | +| 16 | 0 | query-builder (nur-alias) | `VirtualIban` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1294` | `VirtualIbanService.getVirtualIbanByKey` | +| 16 | 0 | query-builder (nur-alias) | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:109` | `SupportIssueService.getSupportIssueCounts` | +| 16 | 0 | query-builder (nur-alias) | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:177` | `SupportIssueService.getSupportIssueStatistics` | +| 16 | 0 | query-builder (nur-alias) | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:198` | `SupportIssueService.getSupportIssueStatistics` | +| 16 | 0 | query-builder (nur-alias) | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:245` | `SupportIssueService.getSupportIssueStatistics` | +| 16 | 0 | query-builder (ohne-select) | `SupportIssue` | `subdomains/supporting/support-issue/services/support-issue.service.ts:549` | `SupportIssueService.getSupportIssueList` | +| 15 | 0 | find | `WalletApp` | `subdomains/core/payment-link/services/wallet-app.service.ts:20` | `WalletAppService.getAllBlockchainWalletApps` | +| 15 | 0 | find | `WalletApp` | `subdomains/core/payment-link/services/wallet-app.service.ts:24` | `WalletAppService.getRecommendedWalletApps` | +| 15 | 0 | find | `WalletApp` | `subdomains/core/payment-link/services/wallet-app.service.ts:28` | `WalletAppService.getWalletAppById` | +| 15 | 0 | query-builder (nur-alias) | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:284` | `BankDataService.getBankDataByKey` | +| 15 | 0 | query-builder (ohne-select) | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:385` | `BankDataService.updateUserBankData` | +| 15 | 0 | query-builder (nur-alias) | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:493` | `BankDataService.getPendingReviewSummary` | +| 15 | 0 | find | `AktionariatRegistration` | `subdomains/supporting/realunit/realunit.service.ts:2830` | `RealUnitService.getRegisteredWalletAddresses` | +| 14 | 0 | find | `ScorechainScreening` | `integration/scorechain/repositories/scorechain-screening.repository.ts:18` | `ScorechainScreeningRepository.getByObjectIds` | +| 14 | 0 | find | `ScorechainScreening` | `integration/scorechain/services/scorechain-screening.service.ts:233` | `ScorechainScreeningService.getCached` | +| 14 | 0 | query-builder (nur-alias) | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:354` | `RecommendationService.countByRecommenderIds` | +| 14 | 0 | query-builder (nur-alias) | `Recommendation` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:369` | `RecommendationService.countByRecommendedIds` | +| 13 | 0 | query-builder (nur-alias) | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:101` | `BuyService.getUserVolume` | +| 13 | 0 | query-builder (nur-alias) | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:111` | `BuyService.getTotalVolume` | +| 13 | 0 | query-builder (nur-alias) | `Buy` | `subdomains/core/buy-crypto/routes/buy/buy.service.ts:228` | `BuyService.getBuyByKey` | +| 13 | 0 | find | `PaymentQuote` | `subdomains/core/payment-link/services/payment-quote.service.ts:76` | `PaymentQuoteService.processExpiredQuotes` | +| 13 | 0 | find | `PaymentQuote` | `subdomains/core/payment-link/services/payment-quote.service.ts:109` | `PaymentQuoteService.getActualQuoteByPaymentId` | +| 13 | 0 | find | `PaymentQuote` | `subdomains/core/payment-link/services/payment-quote.service.ts:157` | `PaymentQuoteService.cancelAllForPayment` | +| 13 | 0 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:147` | `KycService.checkIdentSteps` | +| 13 | 0 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:184` | `KycService.reviewNationalityStep` | +| 13 | 0 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:209` | `KycService.reviewIdentSteps` | +| 13 | 0 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:319` | `KycService.reviewFinancialData` | +| 13 | 0 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:371` | `KycService.reviewRecommendationStep` | +| 13 | 0 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:441` | `KycService.checkDfxApproval` | +| 13 | 0 | find | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:1497` | `KycService.getStepsByUserData` | +| 13 | 0 | query-builder (nur-alias) | `KycStep` | `subdomains/generic/kyc/services/kyc.service.ts:1981` | `KycService.getPendingReviewSummary` | +| 13 | 0 | find | `TfaLog` | `subdomains/generic/kyc/services/tfa.service.ts:195` | `TfaService.checkVerification` | +| 13 | 0 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:63` | `BankService.getBankInternal` | +| 13 | 0 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:68` | `BankService.getBankById` | +| 13 | 0 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:72` | `BankService.getBankByIdUncached` | +| 13 | 0 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:76` | `BankService.getBankByIban` | +| 13 | 0 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:80` | `BankService.getReceiveBanks` | +| 13 | 0 | find | `Bank` | `subdomains/supporting/bank/bank/bank.service.ts:84` | `BankService.getSenderBanks` | +| 13 | 0 | find | `Notification` | `subdomains/supporting/notification/services/notification-job.service.ts:38` | `NotificationJobService.resendUncompletedMails` | +| 13 | 0 | find | `Notification` | `subdomains/supporting/notification/services/notification.service.ts:49` | `NotificationService.getMails` | +| 13 | 0 | find | `Notification` | `subdomains/supporting/notification/services/notification.service.ts:107` | `NotificationService.isSuppressed` | +| 13 | 0 | find | `TransactionRiskAssessment` | `subdomains/supporting/payment/services/transaction-risk-assessment.service.ts:20` | `TransactionRiskAssessmentService.update` | +| 12 | 0 | find | `IpLog` | `shared/models/ip-log/ip-log.service.ts:66` | `IpLogService.getByUserDataId` | +| 12 | 0 | find | `IpLog` | `shared/models/ip-log/ip-log.service.ts:75` | `IpLogService.getLoginCountries` | +| 12 | 0 | query-builder (nur-alias) | `IpLog` | `shared/models/ip-log/ip-log.service.ts:79` | `IpLogService.getLoginCountries` | +| 12 | 0 | query-builder (nur-alias) | `IpLog` | `shared/models/ip-log/ip-log.service.ts:92` | `IpLogService.getUserDataIdsWith` | +| 12 | 0 | query-builder (nur-alias) | `IpLog` | `shared/models/ip-log/ip-log.service.ts:103` | `IpLogService.getUserDataIdsWith` | +| 12 | 0 | find | `IpLog` | `shared/models/ip-log/ip-log.service.ts:119` | `IpLogService.updateUserIpLogs` | +| 11 | 0 | find | `OlkyRecipient` | `integration/bank/services/olkypay.service.ts:104` | `OlkypayService.getOrCreateRecipient` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-mark-to-market.service.ts:106` | `LedgerMarkToMarketService.selectCandidates` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-mark-to-market.service.ts:173` | `LedgerMarkToMarketService.accountBalance` | +| 11 | 0 | query-builder (ohne-select) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-mark-to-market.service.ts:212` | `LedgerMarkToMarketService.alreadyBooked` | +| 11 | 0 | query-builder (ohne-select) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:125` | `LedgerQueryService.getAccountDetail` | +| 11 | 0 | query-builder (ohne-select) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:184` | `LedgerQueryService.getSuspense` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:284` | `LedgerQueryService.balancesByAccount` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:298` | `LedgerQueryService.nativeBalanceBefore` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:310` | `LedgerQueryService.nativeBalanceInPeriod` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:326` | `LedgerQueryService.nativeBalanceByAccount` | +| 11 | 0 | query-builder (ohne-select) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:466` | `LedgerQueryService.marginBuckets` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-query.service.ts:540` | `LedgerQueryService.cumulativeEquityByDay` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-reconciliation.service.ts:271` | `LedgerReconciliationService.checkTransitAge` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-reconciliation.service.ts:347` | `LedgerReconciliationService.openResidualSince` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-reconciliation.service.ts:400` | `LedgerReconciliationService.checkSuspense` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-reconciliation.service.ts:487` | `LedgerReconciliationService.journalEquity` | +| 11 | 0 | query-builder (nur-alias) | `LedgerLeg` | `subdomains/core/accounting/services/ledger-reconciliation.service.ts:517` | `LedgerReconciliationService.nativeBalanceByAccount` | +| 11 | 0 | query-builder (nur-alias) | `Log` | `subdomains/supporting/log/log.repository.ts:97` | `LogRepository.cleanup` | +| 11 | 0 | query-builder (nur-alias) | `Log` | `subdomains/supporting/log/log.repository.ts:104` | `LogRepository.cleanup` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.repository.ts:119` | `LogRepository.getFinancialLogAt` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.repository.ts:132` | `LogRepository.getLatestFinancialLog` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.repository.ts:142` | `LogRepository.getLatestValidFinancialLogs` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.repository.ts:150` | `LogRepository.getLatestFinancialChangesLog` | +| 11 | 0 | query-builder (nur-alias) | `Log` | `subdomains/supporting/log/log.repository.ts:158` | `LogRepository.getFinancialChangesLogs` | +| 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:165` | `LogRepository.getFinancialChangesLogs` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.repository.ts:187` | `LogRepository.getFinancialChangesLogs` | +| 11 | 0 | query-builder (nur-alias) | `Log` | `subdomains/supporting/log/log.repository.ts:206` | `LogRepository.getFinancialLogs` | +| 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:214` | `LogRepository.getFinancialLogs` | +| 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:244` | `LogRepository.getFinancialLogs` | +| 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:688` | `LogRepository.assertEmptyResultIsEndOfData` | +| 11 | 0 | query-builder (feldliste) | `Log` | `subdomains/supporting/log/log.repository.ts:699` | `LogRepository.getFinancialLogValidityChangeSet` | +| 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:722` | `LogRepository.async` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.service.ts:51` | `LogService.update` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.service.ts:131` | `LogService.getLog` | +| 11 | 0 | find | `Log` | `subdomains/supporting/log/log.service.ts:135` | `LogService.maxEntity` | +| 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.service.ts:191` | `LogService.getBankLog` | +| 10 | 0 | find | `AccountMerge` | `subdomains/generic/user/models/account-merge/account-merge.service.ts:61` | `AccountMergeService.sendMergeRequest` | +| 10 | 0 | find | `AccountMerge` | `subdomains/generic/user/models/account-merge/account-merge.service.ts:162` | `AccountMergeService.pendingMergeRequest` | +| 9 | 0 | find | `SupportNote` | `subdomains/generic/support/services/support-note.service.ts:57` | `SupportNoteService.search` | +| 9 | 0 | find | `SupportNote` | `subdomains/generic/support/services/support-note.service.ts:76` | `SupportNoteService.search` | +| 9 | 0 | query-builder (nur-alias) | `SupportNote` | `subdomains/generic/support/services/support-note.service.ts:84` | `SupportNoteService.listUsers` | +| 9 | 0 | find | `SupportNote` | `subdomains/generic/support/services/support-note.service.ts:152` | `SupportNoteService.delete` | +| 9 | 0 | find | `TransactionSpecification` | `subdomains/supporting/payment/services/transaction-helper.ts:92` | `TransactionHelper.updateCache` | +| 8 | 0 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-account.service.ts:12` | `LedgerAccountService.findByName` | +| 8 | 0 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-account.service.ts:16` | `LedgerAccountService.findByAssetId` | +| 8 | 0 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-mark-to-market.service.ts:122` | `LedgerMarkToMarketService.selectCandidates` | +| 8 | 0 | find | `LedgerAccount` | `subdomains/core/accounting/services/ledger-query.service.ts:114` | `LedgerQueryService.getAccountDetail` | +| 8 | 0 | find | `CustodyAccountAccess` | `subdomains/core/custody/services/custody-account.service.ts:149` | `CustodyAccountService.checkAccess` | +| 8 | 0 | find | `CustodyAccountAccess` | `subdomains/core/custody/services/custody-account.service.ts:418` | `CustodyAccountService.requireActingAllowed` | +| 8 | 0 | find | `SupportIssueTemplate` | `subdomains/generic/support/services/support-issue-template.service.ts:28` | `SupportIssueTemplateService.search` | +| 8 | 0 | find | `SupportIssueTemplate` | `subdomains/generic/support/services/support-issue-template.service.ts:31` | `SupportIssueTemplateService.search` | +| 8 | 0 | find | `SupportIssueTemplate` | `subdomains/generic/support/services/support-issue-template.service.ts:58` | `SupportIssueTemplateService.update` | +| 8 | 0 | find | `SupportIssueTemplate` | `subdomains/generic/support/services/support-issue-template.service.ts:76` | `SupportIssueTemplateService.delete` | +| 7 | 0 | find | `Language` | `shared/models/language/language.service.ts:11` | `LanguageService.getAllLanguage` | +| 7 | 0 | find | `Language` | `shared/models/language/language.service.ts:15` | `LanguageService.getLanguage` | +| 7 | 0 | find | `Language` | `shared/models/language/language.service.ts:19` | `LanguageService.getLanguageBySymbol` | +| 7 | 0 | find | `Language` | `shared/models/language/language.service.ts:24` | `LanguageService.getLanguageByCountry` | +| 7 | 0 | find | `UserDataRelation` | `subdomains/generic/user/models/user-data-relation/user-data-relation.service.ts:40` | `UserDataRelationService.updateUserDataRelation` | +| 7 | 0 | find | `SpecialExternalAccount` | `subdomains/supporting/payment/services/special-external-account.service.ts:12` | `SpecialExternalAccountService.createSpecialExternalAccount` | +| 7 | 0 | find | `SpecialExternalAccount` | `subdomains/supporting/payment/services/special-external-account.service.ts:24` | `SpecialExternalAccountService.getMultiAccounts` | +| 7 | 0 | find | `SpecialExternalAccount` | `subdomains/supporting/payment/services/special-external-account.service.ts:48` | `SpecialExternalAccountService.getPhoneCallList` | +| 7 | 0 | find | `SpecialExternalAccount` | `subdomains/supporting/payment/services/special-external-account.service.ts:58` | `SpecialExternalAccountService.getBlacklist` | +| 7 | 0 | find | `AssetPrice` | `subdomains/supporting/pricing/services/asset-prices-job.service.ts:81` | `AssetPricesJobService.saveAssetPrices` | +| 7 | 0 | find | `RealUnitLegalAcceptance` | `subdomains/supporting/realunit/realunit-legal.service.ts:57` | `RealUnitLegalService.getLatestAcceptance` | +| 7 | 0 | query-builder (nur-alias) | `SupportMessage` | `subdomains/supporting/support-issue/services/support-escalation.service.ts:310` | `SupportEscalationService.getLastMessages` | +| 7 | 0 | query-builder (nur-alias) | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:133` | `SupportIssueService.getSupportIssueActivity` | +| 7 | 0 | query-builder (nur-alias) | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:186` | `SupportIssueService.getSupportIssueStatistics` | +| 7 | 0 | query-builder (nur-alias) | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:614` | `SupportIssueService.getMessageStats` | +| 6 | 0 | find | `Ref` | `subdomains/core/referral/process/ref.repository.ts:13` | `RefRepository.getAndRemove` | +| 6 | 0 | find | `Ref` | `subdomains/core/referral/process/ref.service.ts:22` | `RefService.checkRefs` | +| 6 | 0 | find | `Ref` | `subdomains/core/referral/process/ref.service.ts:28` | `RefService.addOrUpdate` | +| 6 | 0 | find | `CustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.service.ts:17` | `CustodyProviderService.updateCustodyProvider` | +| 6 | 0 | find | `CustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.service.ts:26` | `CustodyProviderService.getWithMasterKey` | +| 6 | 0 | find | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:63` | `DepositService.getDeposit` | +| 6 | 0 | find | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:67` | `DepositService.getDepositByAddress` | +| 6 | 0 | find | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:71` | `DepositService.getAllDeposits` | +| 6 | 0 | find | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:75` | `DepositService.getDepositsByBlockchain` | +| 6 | 0 | find | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:79` | `DepositService.getDepositByBlockchainAndIndex` | +| 6 | 0 | find | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:83` | `DepositService.getUsedDepositsByBlockchain` | +| 6 | 0 | query-builder (ohne-select) | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:89` | `DepositService.getNextDeposit` | +| 6 | 0 | query-builder (nur-alias) | `Deposit` | `subdomains/supporting/address-pool/deposit/deposit.service.ts:189` | `DepositService.getNextDepositIndex` | +| 5 | 0 | find | `Setting` | `shared/models/setting/setting.repository.ts:36` | `SettingRepository.getStatusSettings` | +| 5 | 0 | find | `Setting` | `shared/models/setting/setting.service.ts:16` | `SettingService.getAll` | +| 5 | 0 | find | `Setting` | `shared/models/setting/setting.service.ts:26` | `SettingService.get` | +| 5 | 0 | find | `Setting` | `shared/models/setting/setting.service.ts:32` | `SettingService.set` | +| 5 | 0 | find | `Setting` | `shared/models/setting/setting.service.ts:202` | `SettingService.getObj` | +| 5 | 0 | find | `Setting` | `shared/models/setting/setting.service.ts:206` | `SettingService.getObjCached` | +| 5 | 0 | find | `Setting` | `shared/models/setting/setting.service.ts:210` | `SettingService.setObj` | +| 5 | 0 | find | `Sanction` | `subdomains/core/aml/services/sanction.service.ts:54` | `SanctionService.syncList` | +| 4 | 0 | find | `SystemStateSnapshot` | `subdomains/core/monitoring/monitoring.service.ts:47` | `MonitoringService.loadState` | +| — | — | find | `—` | `config/config.ts:1344` | `Configuration.isDomesticIban` | +| — | — | find | `—` | `integration/binance-pay/services/binance-pay.service.ts:271` | `BinancePayService.verifySignature` | +| — | — | find | `—` | `integration/blockchain/api/services/blockchain-balance.service.ts:52` | `BlockchainBalanceService.getSolanaBalances` | +| — | — | find | `—` | `integration/blockchain/api/services/blockchain-balance.service.ts:79` | `BlockchainBalanceService.getTronBalances` | +| — | — | find | `—` | `integration/blockchain/api/services/blockchain-balance.service.ts:115` | `BlockchainBalanceService.getEvmBalances` | +| — | — | find | `—` | `integration/blockchain/api/services/blockchain-balance.service.ts:132` | `BlockchainBalanceService.getEvmBalances` | +| — | — | find | `—` | `integration/blockchain/cardano/cardano-client.ts:81` | `CardanoClient.getNativeCoinBalanceForAddress` | +| — | — | find | `—` | `integration/blockchain/cardano/cardano-client.ts:100` | `CardanoClient.getTokenBalances` | +| — | — | find | `—` | `integration/blockchain/icp/icp-client.ts:231` | `InternetComputerClient.getNativeTransfersForAddress` | +| — | — | find | `—` | `integration/blockchain/icp/icp-client.ts:232` | `InternetComputerClient.getNativeTransfersForAddress` | +| — | — | find | `—` | `integration/blockchain/shared/evm/citrea-base-client.ts:248` | `CitreaBaseClient.swapViaGateway` | +| — | — | find | `—` | `integration/blockchain/shared/evm/citrea-base-client.ts:353` | `CitreaBaseClient.getTokenPairByAddresses` | +| — | — | find | `—` | `integration/blockchain/shared/evm/evm-client.ts:681` | `EvmClient.poolQuote` | +| — | — | find | `—` | `integration/blockchain/shared/evm/evm-client.ts:704` | `EvmClient.getSwapResultBaseUnits` | +| — | — | find | `—` | `integration/blockchain/shared/evm/evm-decimals.service.ts:24` | `EvmDecimalsService.setDecimals` | +| — | — | find | `—` | `integration/blockchain/solana/solana-client.ts:530` | `SolanaClient.updateTokenInstruction` | +| — | — | find | `—` | `integration/blockchain/solana/solana-client.ts:531` | `SolanaClient.updateTokenInstruction` | +| — | — | find | `—` | `integration/blockchain/tron/tron-client.ts:51` | `TronClient.getNativeCoinBalanceForAddress` | +| — | — | find | `—` | `integration/blockchain/zano/services/zano.service.ts:97` | `ZanoService.addAssetsToWhitelist` | +| — | — | find | `—` | `integration/blockchain/zano/services/zano.service.ts:98` | `ZanoService.addAssetsToWhitelist` | +| — | — | find | `—` | `integration/blockchain/zano/zano-client.ts:185` | `ZanoClient.getTokenBalances` | +| — | — | find | `—` | `integration/exchange/controllers/exchange.controller.ts:93` | `ExchangeController.syncExchange` | +| — | — | find | `—` | `integration/exchange/services/exchange-tx.service.ts:304` | `ExchangeTxService.getTransactionsFor` | +| — | — | find | `—` | `integration/exchange/services/exchange.service.ts:228` | `ExchangeService.getWithdraw` | +| — | — | find | `—` | `integration/exchange/services/exchange.service.ts:284` | `ExchangeService.getMarket` | +| — | — | find | `—` | `integration/exchange/services/exchange.service.ts:297` | `ExchangeService.getTradePair` | +| — | — | find | `—` | `integration/exchange/services/exchange.service.ts:343` | `ExchangeService.getBestBidLiquidity` | +| — | — | find | `—` | `integration/exchange/services/exchange.service.ts:368` | `ExchangeService.trade` | +| — | — | find | `—` | `integration/exchange/services/mexc.service.ts:159` | `MexcService.getWithdraw` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:402` | `ScryptService.withdrawFunds` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:577` | `ScryptService.findWithdrawal` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:600` | `ScryptService.getOrderStatus` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:832` | `ScryptService.placeOrder` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:862` | `ScryptService.cancelOrder` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:895` | `ScryptService.editOrder` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:914` | `ScryptService.getTradePair` | +| — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:930` | `ScryptService.getSecurity` | +| — | — | find | `—` | `integration/lightning/lightning-helper.ts:134` | `LightningHelper.None` | +| — | — | find | `—` | `integration/lightning/services/lightning.service.ts:196` | `LightningService.findPayment` | +| — | — | find | `—` | `shared/models/asset/asset.controller.ts:39` | `AssetController.getAllAsset` | +| — | — | find | `—` | `shared/models/asset/asset.service.ts:153` | `AssetService.getByQuerySync` | +| — | — | find | `—` | `shared/models/asset/asset.service.ts:157` | `AssetService.getByChainIdSync` | +| — | — | find | `—` | `shared/models/fiat/fiat.controller.ts:27` | `FiatController.getAllFiat` | +| — | — | find | `—` | `shared/models/fiat/fiat.service.ts:32` | `FiatService.getFiatByName` | +| — | — | find | `—` | `shared/models/ip-log/ip-log.service.ts:143` | `IpLogService.checkIpCountry` | +| — | — | raw-sql | `—` | `shared/models/setting/setting.repository.ts:18` | `SettingRepository.setDateMax` | +| — | — | find | `—` | `shared/models/setting/setting.repository.ts:20` | `SettingRepository.setDateMax` | +| — | — | find | `—` | `shared/models/setting/setting.service.ts:169` | `SettingService.updateCustomSignUpFees` | +| — | — | find | `—` | `shared/models/setting/setting.service.ts:198` | `SettingService.getCustomSignUpFees` | +| — | — | find | `—` | `shared/repositories/cached.repository.ts:16` | `CachedRepository.findOneCached` | +| — | — | find | `—` | `shared/repositories/cached.repository.ts:20` | `CachedRepository.findOneCachedBy` | +| — | — | find | `—` | `shared/repositories/cached.repository.ts:24` | `CachedRepository.findCached` | +| — | — | find | `—` | `shared/repositories/cached.repository.ts:28` | `CachedRepository.findCachedBy` | +| — | — | find | `—` | `shared/services/http.service.ts:84` | `HttpService.getMockResponse` | +| — | — | find | `—` | `shared/utils/util.ts:786` | `Util.clearTimeout` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:339` | `BankTxConsumer.cutoverOwedOpeningChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:567` | `BankTxConsumer.openingLiabilityLegChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:586` | `BankTxConsumer.cutoverOpeningLiabilityChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/buy-crypto.consumer.ts:327` | `BuyCryptoConsumer.paymentLinkOpeningChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:589` | `BuyFiatConsumer.cutoverOwedOpeningChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:607` | `BuyFiatConsumer.paymentLinkOpeningChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:625` | `BuyFiatConsumer.cutoverPaymentLinkOpeningChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/ledger-watermark.helper.ts:225` | `None.None` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/payout-order.consumer.ts:325` | `PayoutOrderConsumer.cutoverOwedOpeningChf` | +| — | — | find | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:257` | `LedgerBookingService.activeTx` | +| — | — | find | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:264` | `LedgerBookingService.activeTx` | +| — | — | find | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:268` | `LedgerBookingService.activeTx` | +| — | — | find | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:274` | `LedgerBookingService.activeTx` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:335` | `LedgerBookingService.nextSeqFrom` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/core/accounting/services/ledger-cutover.service.ts:958` | `LedgerCutoverService.maxSettledId` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/core/accounting/services/ledger-cutover.service.ts:1002` | `LedgerCutoverService.idsUpToBoundary` | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:375` | `AmlHelperService.None` | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:684` | `AmlHelperService.None` | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:685` | `AmlHelperService.None` | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:686` | `AmlHelperService.None` | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:700` | `AmlHelperService.None` | +| — | — | find | `—` | `subdomains/core/aml/services/aml.service.ts:132` | `AmlService.getAmlCheckInput` | +| — | — | find | `—` | `subdomains/core/aml/services/aml.service.ts:278` | `AmlService.getBankData` | +| — | — | find | `—` | `subdomains/core/buy-crypto/process/entities/buy-crypto.entity.ts:370` | `BuyCrypto.calculateOutputReferenceAmount` | +| — | — | find | `—` | `subdomains/core/buy-crypto/process/entities/buy-crypto.entity.ts:662` | `BuyCrypto.setFeeAndFiatReference` | +| — | — | find | `—` | `subdomains/core/buy-crypto/process/services/buy-crypto-batch.service.ts:242` | `BuyCryptoBatchService.filterOutExistingBatches` | +| — | — | find | `—` | `subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts:93` | `BuyCryptoRegistrationService.findMatchingRoute` | +| — | — | find | `—` | `subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts:95` | `BuyCryptoRegistrationService.findMatchingRoute` | +| — | — | find | `—` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:297` | `BuyCryptoService.update` | +| — | — | find | `—` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1063` | `BuyCryptoService.getCryptoRoute` | +| — | — | find | `—` | `subdomains/core/custody/controllers/custody-account.controller.ts:66` | `CustodyAccountController.getCustodyAccount` | +| — | — | find | `—` | `subdomains/core/custody/controllers/custody-account.controller.ts:67` | `CustodyAccountController.getCustodyAccount` | +| — | — | raw-sql | `—` | `subdomains/core/custody/services/custody-account.service.ts:35` | `None.None` | +| — | — | query-builder (ohne-select) | `—` | `subdomains/core/custody/services/custody-account.service.ts:482` | `CustodyAccountService.lockActiveAccessGrant` | +| — | — | find | `—` | `subdomains/core/custody/services/custody-account.service.ts:504` | `CustodyAccountService.createGrant` | +| — | — | find | `—` | `subdomains/core/custody/services/custody-account.service.ts:598` | `CustodyAccountService.grantAccessForLegacy` | +| — | — | find | `CustodyOrder` | `subdomains/core/custody/services/custody-job.service.ts:65` | `CustodyJobService.executeOrder` | +| — | — | find | `—` | `subdomains/core/custody/services/custody-order.service.ts:399` | `CustodyOrderService.checkBalance` | +| — | — | find | `—` | `subdomains/core/custody/services/custody.service.ts:307` | `CustodyService.getUserCustodyHistory` | +| — | — | find | `—` | `subdomains/core/history/mappers/transaction-dto.mapper.ts:211` | `TransactionDtoMapper.feeAmountType` | +| — | — | find | `—` | `subdomains/core/history/services/history-access.service.ts:122` | `HistoryAccessService.resolveFromApiKey` | +| — | — | find | `—` | `subdomains/core/history/services/history-access.service.ts:130` | `HistoryAccessService.findOwnedUser` | +| — | — | find | `—` | `subdomains/core/history/services/history.service.ts:169` | `HistoryService.getHistoryTransactions` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/actions/base/ccxt-exchange.adapter.ts:451` | `CcxtExchangeAdapter.checkTransferCompletion` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/actions/dfx-dex.adapter.ts:228` | `DfxDexAdapter.checkWithdrawCompletion` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/actions/layerzero-bridge.adapter.ts:124` | `LayerZeroBridgeAdapter.checkDepositCompletion` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/actions/layerzero-bridge.adapter.ts:190` | `LayerZeroBridgeAdapter.checkWithdrawCompletion` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts:38` | `BankAdapter.getBalances` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts:88` | `BankAdapter.getForBank` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts:92` | `BankAdapter.getForBank` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts:134` | `BankAdapter.getForBank` | +| — | — | find | `—` | `subdomains/core/liquidity-management/adapters/balances/exchange.adapter.ts:40` | `ExchangeAdapter.hasPendingOrders` | +| — | — | find | `—` | `subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts:78` | `LiquidityManagementBalanceService.findRelevantBalance` | +| — | — | find | `—` | `subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts:197` | `LiquidityManagementRuleService.confirmOrCreateActionTree` | +| — | — | find | `LiquidityManagementRule` | `subdomains/core/liquidity-management/services/liquidity-management.service.ts:42` | `LiquidityManagementService.checkLiquidityBalances` | +| — | — | find | `—` | `subdomains/core/liquidity-management/validators/liquidity-actions-all-steps-match.validator.ts:11` | `LiquidityActionsAllStepsMatchValidator.validate` | +| — | — | find | `—` | `subdomains/core/liquidity-management/validators/liquidity-actions-all-steps-match.validator.ts:12` | `LiquidityActionsAllStepsMatchValidator.validate` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/core/monitoring/observers/bank.observer.ts:117` | `BankObserver.getDbBalance` | +| — | — | find | `—` | `subdomains/core/monitoring/observers/node-health.observer.ts:131` | `NodeHealthObserver.getPoolState` | +| — | — | find | `—` | `subdomains/core/monitoring/observers/node-health.observer.ts:139` | `NodeHealthObserver.getNodeStateInPool` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/core/monitoring/observers/payment.observer.ts:72` | `PaymentObserver.getPayment` | +| — | — | find | `—` | `subdomains/core/monitoring/observers/payment.observer.ts:157` | `PaymentObserver.getLastOutputDates` | +| — | — | find | `—` | `subdomains/core/monitoring/observers/payment.observer.ts:160` | `PaymentObserver.getLastOutputDates` | +| — | — | find | `—` | `subdomains/core/payment-link/entities/payment-quote.entity.ts:116` | `PaymentQuote.getTransferAmount` | +| — | — | find | `—` | `subdomains/core/payment-link/entities/payment-quote.entity.ts:123` | `PaymentQuote.getTransferAmountFor` | +| — | — | find | `—` | `subdomains/core/payment-link/services/ocp-sticker.service.ts:206` | `OCPStickerService.generateBitcoinFocusStickersPdf` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-activation.service.ts:118` | `PaymentActivationService.doCreateRequest` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-balance.service.ts:93` | `PaymentBalanceService.getPaymentBalances` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-balance.service.ts:108` | `PaymentBalanceService.getPaymentBalances` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:179` | `PaymentLinkPaymentService.handleBinanceWaiting` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-link-payment.service.ts:284` | `PaymentLinkPaymentService.cancelByLink` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-link.service.ts:181` | `PaymentLinkService.createInvoice` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-link.service.ts:633` | `PaymentLinkService.getPaymentLinkByAccessKey` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-link.service.ts:643` | `PaymentLinkService.getPaymentLinkByAccessKey` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-link.service.ts:663` | `PaymentLinkService.waitForPayment` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-quote.service.ts:118` | `PaymentQuoteService.getActualQuoteByPaymentId` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-quote.service.ts:503` | `PaymentQuoteService.validateEvmTx` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-quote.service.ts:504` | `PaymentQuoteService.validateEvmTx` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-quote.service.ts:552` | `PaymentQuoteService.async` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-quote.service.ts:560` | `PaymentQuoteService.async` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-quote.service.ts:704` | `PaymentQuoteService.doIcpPayment` | +| — | — | find | `—` | `subdomains/core/payment-link/services/payment-standard.service.ts:13` | `PaymentStandardService.getById` | +| — | — | find | `—` | `subdomains/core/sell-crypto/process/buy-fiat.entity.ts:367` | `BuyFiat.setFeeAndFiatReference` | +| — | — | find | `—` | `subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts:124` | `BuyFiatRegistrationService.findMatchingRoute` | +| — | — | find | `—` | `subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts:126` | `BuyFiatRegistrationService.findMatchingRoute` | +| — | — | find | `—` | `subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts:128` | `BuyFiatRegistrationService.findMatchingRoute` | +| — | — | find | `—` | `subdomains/core/sell-crypto/process/services/buy-fiat.service.ts:206` | `BuyFiatService.update` | +| — | — | raw-sql | `—` | `subdomains/generic/gs/gs.service.ts:337` | `GsService.executeDebugQuery` | +| — | — | find | `—` | `subdomains/generic/gs/gs.service.ts:739` | `GsService.getParsedJsonData` | +| — | — | find | `—` | `subdomains/generic/gs/gs.service.ts:742` | `GsService.getParsedJsonData` | +| — | — | query-builder (ohne-select) | `—` | `subdomains/generic/gs/gs.service.ts:805` | `GsService.getRawDbData` | +| — | — | query-builder (ohne-select) | `—` | `subdomains/generic/gs/gs.service.ts:868` | `GsService.getExtendedBankTxData` | +| — | — | query-builder (ohne-select) | `—` | `subdomains/generic/gs/gs.service.ts:887` | `GsService.getExtendedBankTxData` | +| — | — | query-builder (ohne-select) | `—` | `subdomains/generic/gs/gs.service.ts:906` | `GsService.getExtendedBankTxData` | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:35` | `KycInfoMapper.None` | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:36` | `KycInfoMapper.None` | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:125` | `KycInfoMapper.None` | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:126` | `KycInfoMapper.None` | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:135` | `KycInfoMapper.None` | +| — | — | find | `—` | `subdomains/generic/kyc/enums/kyc.enum.ts:19` | `None.None` | +| — | — | find | `—` | `subdomains/generic/kyc/services/integration/financial.service.ts:39` | `FinancialService.getQuestions` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc-admin.service.ts:41` | `KycAdminService.getKycSteps` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc-client.service.ts:55` | `KycClientService.getAllUserPayments` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc-client.service.ts:111` | `KycClientService.getFileFor` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:218` | `KycService.reviewIdentSteps` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:433` | `KycService.checkDfxApproval` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:436` | `KycService.checkDfxApproval` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:459` | `KycService.isKycStepUniqueViolation` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:515` | `KycService.initializeProcess` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:531` | `KycService.failContactStepForMail` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:1174` | `KycService.getOrCreateStepInternal` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:1200` | `KycService.getOrCreateStep` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:1201` | `KycService.getOrCreateStep` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:1295` | `KycService.getNext` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:1358` | `KycService.initiateStep` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:1465` | `KycService.completeReferencedSteps` | +| — | — | find | `—` | `subdomains/generic/kyc/services/kyc.service.ts:1777` | `KycService.getIdentCheckErrors` | +| — | — | find | `—` | `subdomains/generic/support/support-pdf.service.ts:332` | `SupportPdfService.createOnboardingPdf` | +| — | — | find | `—` | `subdomains/generic/support/support-pdf.service.ts:358` | `SupportPdfService.createOnboardingPdf` | +| — | — | find | `—` | `subdomains/generic/support/support-pdf.service.ts:370` | `SupportPdfService.createOnboardingPdf` | +| — | — | find | `—` | `subdomains/generic/support/support-pdf.service.ts:386` | `SupportPdfService.createOnboardingPdf` | +| — | — | find | `—` | `subdomains/generic/support/support.service.ts:1327` | `SupportService.getUniqueUserDataByKey` | +| — | — | find | `—` | `subdomains/generic/support/support.service.ts:1336` | `SupportService.getUniqueUserDataByKey` | +| — | — | find | `—` | `subdomains/generic/user/models/auth/auth.service.ts:497` | `AuthService.checkPendingRecommendation` | +| — | — | find | `—` | `subdomains/generic/user/models/auth/auth.service.ts:515` | `AuthService.confirmRecommendationCode` | +| — | — | find | `—` | `subdomains/generic/user/models/auth/auth.service.ts:530` | `AuthService.getLinkedUser` | +| — | — | find | `—` | `subdomains/generic/user/models/bank-data/bank-data.entity.ts:155` | `BankData.internalReview` | +| — | — | find | `—` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:246` | `BankDataService.updateBankDataInternal` | +| — | — | find | `—` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:338` | `BankDataService.getVerifiedBankDataWithIban` | +| — | — | find | `—` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:339` | `BankDataService.getVerifiedBankDataWithIban` | +| — | — | find | `—` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:340` | `BankDataService.getVerifiedBankDataWithIban` | +| — | — | find | `—` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:362` | `BankDataService.getAllBankDatasForUser` | +| — | — | find | `—` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:444` | `BankDataService.createIbanForUserInternal` | +| — | — | find | `Wallet` | `subdomains/generic/user/models/kyc/kyc.service.ts:58` | `KycService.transferKycData` | +| — | — | find | `—` | `subdomains/generic/user/models/kyc/kyc.service.ts:193` | `KycService.getFileFor` | +| — | — | find | `—` | `subdomains/generic/user/models/kyc/kyc.service.ts:200` | `KycService.getFileFor` | +| — | — | find | `—` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:45` | `RecommendationService.createRecommendationByRecommender` | +| — | — | find | `—` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:135` | `RecommendationService.handleRecommendationRequest` | +| — | — | find | `—` | `subdomains/generic/user/models/recommendation/recommendation.service.ts:246` | `RecommendationService.setRecommenderRefCode` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data-job.service.ts:51` | `UserDataJobService.setAccountOpener` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:621` | `UserData.addPhoneCallExternalAccountCheckValue` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:722` | `UserData.getMailLoginUser` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:761` | `UserData.getStep` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:781` | `UserData.getPendingStepWith` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:785` | `UserData.getCompletedStepWith` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:789` | `UserData.getNonFailedStepWith` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.enum.ts:75` | `None.None` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:867` | `UserDataService.checkMail` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1214` | `UserDataService.updateVolumes` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1312` | `UserDataService.mergeUserData` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1324` | `UserDataService.mergeUserData` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1332` | `UserDataService.mergeUserData` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1344` | `UserDataService.mergeUserData` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1547` | `UserDataService.mergeUserData` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1725` | `UserDataService.updateBankTxTime` | +| — | — | find | `—` | `subdomains/generic/user/models/user/dto/user-dto.mapper.ts:27` | `UserDtoMapper.None` | +| — | — | find | `—` | `subdomains/generic/user/models/user/user.repository.ts:31` | `UserRepository.getNextRef` | +| — | — | find | `—` | `subdomains/generic/user/models/user/user.service.ts:342` | `UserService.createUser` | +| — | — | find | `—` | `subdomains/generic/user/models/user/user.service.ts:496` | `UserService.updateAddress` | +| — | — | find | `—` | `subdomains/generic/user/models/user/user.service.ts:512` | `UserService.deactivateUser` | +| — | — | find | `—` | `subdomains/supporting/balance/services/balance-pdf.service.ts:105` | `BalancePdfService.getBalancesForAddress` | +| — | — | find | `—` | `subdomains/supporting/bank-tx/bank-tx/entities/bank-tx.entity.ts:323` | `BankTx.bankDataName` | +| — | — | find | `—` | `subdomains/supporting/bank-tx/bank-tx/entities/bank-tx.entity.ts:335` | `BankTx.getSenderAccount` | +| — | — | find | `—` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:172` | `BankTxService.enrichYapealTransactions` | +| — | — | find | `—` | `subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts:708` | `BankTxService.findMatchingBuy` | +| — | — | find | `—` | `subdomains/supporting/bank/bank/bank.service.ts:62` | `BankService.getBankInternal` | +| — | — | find | `—` | `subdomains/supporting/bank/bank/bank.service.ts:142` | `BankService.getMatchingBank` | +| — | — | find | `—` | `subdomains/supporting/bank/bank/bank.service.ts:143` | `BankService.getMatchingBank` | +| — | — | find | `—` | `subdomains/supporting/bank/bank/bank.service.ts:216` | `BankService.getReceiveIbanStatus` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban-frick-issuance-reconciliation.service.ts:150` | `VirtualIbanFrickIssuanceReconciliationService.runPhase1StuckIntents` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban-frick-issuance-reconciliation.service.ts:471` | `VirtualIbanFrickIssuanceReconciliationService.loadAbandonedReferences` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:118` | `VirtualIbanService.getAccountHolder` | +| — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:291` | `VirtualIbanService.withUserLevelIssuanceLock` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:295` | `VirtualIbanService.String` | +| — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:375` | `VirtualIbanService.lockUserLevelIssuanceForMerge` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:385` | `VirtualIbanService.lockUserLevelIssuanceForMerge` | +| — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:504` | `VirtualIbanService.initializeFrickIntent` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:709` | `VirtualIbanService.async` | +| — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:769` | `VirtualIbanService.hasOrderedOwnershipPath` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1030` | `VirtualIbanService.resolveVirtualIbanId` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1124` | `VirtualIbanService.getFrickIntentForUpdate` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1139` | `VirtualIbanService.getFrickIntentByIdForUpdate` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1157` | `VirtualIbanService.persistUserLevelIfMissing` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1246` | `VirtualIbanService.findActiveForUserCurrencyAndBank` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1312` | `VirtualIbanService.getVirtualIbansForAccount` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1320` | `VirtualIbanService.getFrickVirtualIbansForAccount` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1339` | `VirtualIbanService.deactivateVirtualIbanLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1379` | `VirtualIbanService.deactivateVirtualIbanLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1446` | `VirtualIbanService.resolveIssuanceIntentsForMergeLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1451` | `VirtualIbanService.resolveIssuanceIntentsForMergeLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1501` | `VirtualIbanService.resolveMergedVirtualIbanPairLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1554` | `VirtualIbanService.resolveMergedVirtualIbanPairLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1557` | `VirtualIbanService.resolveMergedVirtualIbanPairLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1565` | `VirtualIbanService.resolveMergedVirtualIbanPairLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1591` | `VirtualIbanService.resolveMergedVirtualIbanPairLocked` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1638` | `VirtualIbanService.mergeUserLevelVirtualIbans` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1669` | `VirtualIbanService.mergeUserLevelVirtualIbans` | +| — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1715` | `VirtualIbanService.getProvider` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/bitcoin-testnet4.strategy.ts:35` | `BitcoinTestnet4Strategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/bitcoin.strategy.ts:35` | `BitcoinStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/cardano.strategy.ts:36` | `CardanoStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/firo.strategy.ts:35` | `FiroStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/icp.strategy.ts:41` | `IcpStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/monero.strategy.ts:35` | `MoneroStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/solana.strategy.ts:37` | `SolanaStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/solana.strategy.ts:37` | `SolanaStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/tron.strategy.ts:37` | `TronStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/dex/strategies/supplementary/impl/zano.strategy.ts:37` | `ZanoStrategy.findTransaction` | +| — | — | find | `—` | `subdomains/supporting/fiat-output/fiat-output-job.service.ts:300` | `FiatOutputJobService.setReadyDate` | +| — | — | find | `—` | `subdomains/supporting/fiat-output/fiat-output.service.ts:55` | `FiatOutputService.selectPayoutBank` | +| — | — | find | `—` | `subdomains/supporting/fiat-output/fiat-output.service.ts:207` | `FiatOutputService.update` | +| — | — | find | `—` | `subdomains/supporting/log/log-job.service.ts:618` | `LogJobService.getAssetLog` | +| — | — | find | `—` | `subdomains/supporting/log/log-job.service.ts:625` | `LogJobService.getAssetLog` | +| — | — | find | `—` | `subdomains/supporting/log/log-job.service.ts:997` | `LogJobService.getAssetLog` | +| — | — | find | `—` | `subdomains/supporting/log/log-job.service.ts:1607` | `LogJobService.findSenderReceiverPair` | +| — | — | raw-sql | `Log` | `subdomains/supporting/log/log.repository.ts:341` | `LogRepository.getFinancialLogAssetPrices` | +| — | — | raw-sql | `Log` | `subdomains/supporting/log/log.repository.ts:511` | `LogRepository.THEN` | +| — | — | raw-sql | `Log` | `subdomains/supporting/log/log.repository.ts:664` | `LogRepository.getFinancialLogSummariesChartOnly` | +| — | — | find | `—` | `subdomains/supporting/notification/services/notification.service.ts:128` | `NotificationService.resolveMailWallet` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin-notification.service.ts:32` | `PayInNotificationService.returnedCryptoInput` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:148` | `PayInService.getCryptoInputsByTransactionIds` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/supporting/payin/services/payin.service.ts:156` | `PayInService.getCryptoInputByKeys` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:179` | `PayInService.getNewPayIns` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:192` | `PayInService.getAllUserTransactions` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:201` | `PayInService.getPendingPayIns` | +| — | — | query-builder (nur-alias) | `—` | `subdomains/supporting/payin/services/payin.service.ts:217` | `PayInService.getPayInFee` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:226` | `PayInService.acknowledgePayIn` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:261` | `PayInService.ignorePayIn` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:269` | `PayInService.retryUncertainSend` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:323` | `PayInService.updateFailedPayments` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:351` | `PayInService.forwardPayIns` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:397` | `PayInService.getUnconfirmedNextBlockPayIns` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:434` | `PayInService.checkOutputConfirmations` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:457` | `PayInService.checkReturnConfirmations` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:480` | `PayInService.returnPayIns` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:509` | `PayInService.processStrandedSendingPayIns` | +| — | — | find | `—` | `subdomains/supporting/payin/services/payin.service.ts:553` | `PayInService.checkInputConfirmations` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/base/alchemy.strategy.ts:33` | `AlchemyStrategy.pollAddress` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/base/citrea.strategy.ts:81` | `CitreaBaseStrategy.getLastCheckedBlockHeight` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/base/citrea.strategy.ts:120` | `CitreaBaseStrategy.mapCoinTransactionsToEntries` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/base/evm.strategy.ts:38` | `EvmStrategy.getTransactionAsset` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/binance-pay.strategy.ts:60` | `BinancePayStrategy.mapBinanceTransaction` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/cardano.strategy.ts:97` | `CardanoStrategy.getLastCheckedBlockHeight` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/cardano.strategy.ts:146` | `CardanoStrategy.mapToPayInEntries` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/kucoin-pay.strategy.ts:60` | `KucoinPayStrategy.mapKucoinTransaction` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/monero.strategy.ts:55` | `MoneroStrategy.getLastCheckedBlockHeight` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/solana.strategy.ts:80` | `SolanaStrategy.getPayInAddresses` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/solana.strategy.ts:119` | `SolanaStrategy.getTransactionCoin` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/tron.strategy.ts:80` | `TronStrategy.getPayInAddresses` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/tron.strategy.ts:112` | `TronStrategy.getTransactionCoin` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/tron.strategy.ts:117` | `TronStrategy.getTransactionAsset` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/zano.strategy.ts:57` | `ZanoStrategy.getLastCheckedBlockHeight` | +| — | — | find | `—` | `subdomains/supporting/payin/strategies/register/impl/zano.strategy.ts:105` | `ZanoStrategy.doMapToPayInEntries` | +| — | — | find | `—` | `subdomains/supporting/payment/repositories/transaction-specification.repository.ts:49` | `TransactionSpecificationRepository.findSpec` | +| — | — | find | `—` | `subdomains/supporting/payment/services/fee.service.ts:233` | `FeeService.getFeeBySpecialCode` | +| — | — | find | `—` | `subdomains/supporting/payment/services/fee.service.ts:338` | `FeeService.getFee` | +| — | — | find | `—` | `subdomains/supporting/payment/services/swiss-qr.service.ts:391` | `SwissQRService.formatChDate` | +| — | — | find | `—` | `subdomains/supporting/payment/services/swiss-qr.service.ts:409` | `SwissQRService.formatChDate` | +| — | — | find | `—` | `subdomains/supporting/payment/services/transaction-request.service.ts:295` | `TransactionRequestService.findAndComplete` | +| — | — | find | `—` | `subdomains/supporting/payment/services/transaction-request.service.ts:297` | `TransactionRequestService.findAndComplete` | +| — | — | find | `—` | `subdomains/supporting/payment/services/transaction.service.ts:341` | `TransactionService.getAllTransactionsForUserData` | +| — | — | find | `—` | `subdomains/supporting/pricing/services/integration/coin-gecko.service.ts:155` | `CoinGeckoService.getCurrency` | +| — | — | find | `—` | `subdomains/supporting/pricing/services/integration/pricing-deuro.service.ts:60` | `PricingDeuroService.getPrice` | +| — | — | find | `—` | `subdomains/supporting/realunit/realunit-job.service.ts:132` | `RealUnitJobService.findUnconsumedSettlement` | +| — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:339` | `RealUnitService.getHistoryEventByTxHash` | +| — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:1442` | `RealUnitService.toUserDataDtoFromUserData` | +| — | — | raw-sql | `—` | `subdomains/supporting/realunit/realunit.service.ts:1602` | `RealUnitService.forwardRegistration` | +| — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:1606` | `RealUnitService.forwardRegistration` | +| — | — | raw-sql | `—` | `subdomains/supporting/realunit/realunit.service.ts:2922` | `RealUnitService.applyRegistrationConfirmation` | +| — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:2927` | `RealUnitService.applyRegistrationConfirmation` | +| — | — | find | `—` | `subdomains/supporting/support-issue/services/support-escalation.service.ts:166` | `SupportEscalationService.bindGroupChat` | +| — | — | find | `—` | `subdomains/supporting/support-issue/services/support-issue.service.ts:92` | `SupportIssueService.getSupportIssueClerkForAccount` | +| — | — | find | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:676` | `SupportIssueService.getIssue` | +| — | — | find | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:728` | `SupportIssueService.getIssueFile` | +| — | — | find | `SupportMessage` | `subdomains/supporting/support-issue/services/support-issue.service.ts:743` | `SupportIssueService.getUserIssues` | diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index 6c3a513b83..6f192afb9b 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -1,7 +1,7 @@ # Read-path projections -Why the endpoint inventory carries a `Load` column, what we intend to do about it, and how the -result is to be tested. +What the load-site inventory shows, what we intend to do about it, and how the result is to be +tested. ## The problem @@ -43,10 +43,14 @@ history and exports — which need fields, not objects. | **Write path** | An endpoint that persists a loaded entity — it needs the complete object. | | **Read model** | A separate model optimised for reading. Introducing projections for read paths is a small step towards one. | -Note that eager relations apply to the `find*` family, **not** to `createQueryBuilder` with an -explicit field list, and not to raw SQL. That is the entire basis of the `Load` column in -[endpoints.md](endpoints.md): it records which mechanism an endpoint's load path uses — -`eager`, `projected`, or `none` for no database access at all. +Note that eager relations apply to the `find*` family, **not** to `createQueryBuilder` and not to +raw SQL. [load-sites.md](load-sites.md) records that mechanism for each of the 1114 load sites, +together with the measured column count. + +Deliberately **not** recorded per endpoint: an endpoint reaches several load sites — a permission +check, a lookup, the actual query — so a single value per endpoint would have to take the maximum +over all of them and would then call an endpoint "eager" whose actual data path is raw SQL. The +load site is the level at which the statement is unambiguous. ## What we intend to change @@ -104,13 +108,13 @@ described above proves it — a wrong value can run for weeks. ### Which endpoints these apply to -Exactly one group: the endpoints marked `projected` in [endpoints.md](endpoints.md) — currently 27. -They already select an explicit field list, and a forgotten field there silently yields an empty -value. +To any load site that carries an explicit field list — that is where a forgotten field silently +yields an empty value. -They do not apply to endpoints marked `none`, which touch no database and have no field list that -could be incomplete. And not yet to those marked `eager`: those load everything anyway, so nothing -can be missing. Each becomes subject to these tests the moment it is converted. +Today that is **exactly one site** in the whole repository (`log.repository.ts:699`). Every other +query builder either selects only the root alias or nothing at all, and therefore still loads every +column; nothing can be missing from them. Each site becomes subject to these tests the moment it is +given a field list. ### How they run From a693c0bf4abc7c831794050fa00cdbebf42a8494 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 03:28:39 +0200 Subject: [PATCH 14/19] Record API version per endpoint and correct the inventory The endpoint list identified a row by method and path, which is not unique: six paths exist twice, once on a deprecated handler and once on its replacement, and the two rows were indistinguishable. Adds a version column, sourced from @Version on the handler, the @Controller scope, or the configured default. Verified against production access logs, where /v1/kyc/admin and /v2/kyc/client each appear only under the version recorded here. Corrects seven handler names. The extraction took the next line that begins, indented, with an identifier and a parenthesis; where the decorator block spans several lines that is the guard, not the method, so seven routes were attributed to AuthGuard. Decorators are now skipped by counting parentheses, with string literals and comments respected. Removes two query builders from the load-site inventory. Both carry .update() and are write statements, which load nothing, leaving 1112 sites and 129 loading query builders. Adds a data access column summarising, per endpoint, whether it reaches any load site that fetches whole rows. Of 533 endpoints, 432 do, 97 read nothing at all, 2 read only the fields they return, and 2 project only when the caller supplies a field list. The column is the union over every reachable site and answers one question only, whether an endpoint loads more than it needs; load-sites.md remains the place that says where the work actually happens. Replaces two figures in read-path-projections.md that no longer held: a claim of 368 load sites against 24 projections, which the load-site inventory in the same PR contradicts, and a per-field ratio that treated command endpoints as read paths. --- CONTRIBUTING.md | 2 + docs/endpoints.md | 1107 +++++++++++++++++---------------- docs/load-sites.md | 20 +- docs/read-path-projections.md | 25 +- 4 files changed, 597 insertions(+), 557 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index afe78f925a..1bcd1d12e7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -519,6 +519,7 @@ Two details are easy to get wrong when editing the list by hand: - a file may declare more than one `@Controller` class, and a route belongs to the scope that **precedes** it, not to the first one in the file — `custody.controller.ts` declares both `custody` and `custody/admin` - `@Controller()` without an argument puts its routes at the root, not under a prefix +- a route's version comes from `@Version` on the handler, otherwise from the `@Controller` scope, otherwise the configured default — six paths exist twice under different versions, so method and path alone do not identify a row To verify a change, compare against the routes the framework logs at startup: every `Mapped {, }` line is one registered route. If a route you added does not appear there, it is not reachable — two routing decorators on the same handler, for instance, keep only one path. @@ -527,6 +528,7 @@ To verify a change, compare against the routes the framework logs at startup: ev - the `find` family applies eager relations and expands them recursively — a plain `findOne()` on `UserData` already selects 253 columns across 8 joins - `createQueryBuilder` does not, but still loads every column of the root entity unless `.select([...])` narrows it - `.select('alias')` is **not** a projection — the argument is the entity alias, not a field list +- a query builder carrying `.update()`, `.delete()` or `.insert()` is a write statement and loads nothing — it is not part of that inventory See [docs/read-path-projections.md](docs/read-path-projections.md) for what follows from that. diff --git a/docs/endpoints.md b/docs/endpoints.md index c78ae85a38..957f1a32c7 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -2,9 +2,42 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller files. 223 are marked `@ApiExcludeEndpoint` and do not appear in the public Swagger schema. -Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match, with no entry left over on either side. +## Columns -For where the data is actually loaded — and how much of it — see [load-sites.md](load-sites.md). That distinction matters: an endpoint does not have *one* load path, it reaches several, and a single column per endpoint cannot express that faithfully. +| Column | Meaning | +| ------ | ------- | +| **Ver** | API version in the URL. `1` is the default and needs no decorator; `2` comes from `@Controller({ version: [...] })`; `neutral` marks `@Version(VERSION_NEUTRAL)`, which is served without a version prefix. Six paths exist twice under different versions — an older, deprecated handler and its replacement — so the version is what makes a row unique. | +| **Swagger** | `public` — in the Swagger schema; `hidden` — carries `@ApiExcludeEndpoint` | +| **Data access** | What the endpoint reads, taken over **all** load sites it can reach — a permission check, a lookup and the actual query all count. `whole rows` — at least one of them fetches every column of an entity; `projected` — every read names the fields it needs; `caller-defined` — the field list comes from the request, and without one every column is loaded; `none` — no read at all (external services, in-memory caches, files, pure write paths). | +| **Max cols** | Widest single query the endpoint can trigger, measured against the real entity metadata. `—` means no measurable site, not zero. | + +## What the numbers say + +| Data access | Endpoints | Share | +| ----------- | --------: | ----: | +| `whole rows` | 432 | 81 % | +| `none` | 97 | 18 % | +| `projected` | 2 | 0 % | +| `caller-defined` | 2 | 0 % | + +Two endpoints read only what they return: `PUT /log/financial/validity`, whose query names `log.id` and `log.valid`, and `POST /gs/debug`, which assembles its select list from the request. `POST /gs/db` and `POST /gs/db/custom` project only when the caller sends a field list — `request.select(query.select)` — and load the full table otherwise. + +Among the 432 that fetch whole rows, the widest query they can trigger is **308 columns** at the median; 320 exceed 100, 90 exceed 500 and 19 exceed 1000. Postgres refuses a statement with more than 1664 columns, which is what broke every invoice and receipt in production once a single column was added elsewhere. + +### How to read this column, and how not to + +`Data access` is a statement about the **union** of everything an endpoint touches, not about one designated data path. An endpoint marked `whole rows` may well answer from raw SQL and still be marked, because a permission check on the way loads a full `UserData` row. That is deliberate: the question the column answers is *does this endpoint load more than it needs*, and for that any one offending site is enough. It does **not** say where the bulk of the work happens — [load-sites.md](load-sites.md) does, per site and with measured column counts. + +The 432 is a lower bound. Where a call could not be attributed statically — a target chosen at runtime, a method reached through inheritance — the endpoint keeps whatever was already found. Resolving more can only add endpoints to this group, never remove them. The 97 endpoints marked `none` are the opposite: for those the call graph resolved completely, or the remaining target was read in the source and recorded as a deliberate exception (external SDKs, strategy registries, in-memory price caches). + +[read-path-projections.md](read-path-projections.md) explains the background, the criteria for converting an endpoint, and how the result is tested. + +## How the values are produced + +- **Endpoints** — from the routing decorators in `src/**/*.controller.ts`, each attributed to the `@Controller` scope preceding it. Decorators between the route and the method are skipped by counting parentheses, so a multi-line `@UseGuards(` cannot be mistaken for the handler. Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match, with no entry left over on either side. +- **Ver** — from `@Version` on the handler, otherwise from the `@Controller` scope, otherwise the configured default. Verified against production access logs: `/v1/kyc/admin/…` and `/v2/kyc/client/…` each appear only under the version recorded here. +- **Data access** — the union over the call graph, following injected fields, locally constructed repositories and multi-line call chains. `find*` pulls in eager relations, `createQueryBuilder` does not, `.select([...])` is the only form that narrows the column list, and `.update()/.delete()/.insert()` are writes that load nothing. +- **Max cols** — the query is built from the real entity metadata and its SELECT list counted. Not an estimate. ## Known discrepancy @@ -12,540 +45,540 @@ For where the data is actually loaded — and how much of it — see [load-sites ## Endpoints -| Method | Path | Swagger | Handler | File | -| ------ | ---- | ------- | ------- | ---- | -| GET | `/` | public | `AppController.home` | `app.controller.ts` | -| POST | `/CustodyProvider` | public | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| PUT | `/CustodyProvider/:id` | hidden | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| POST | `/admin/lightning/rotate-webhook-secrets` | hidden | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/mail` | public | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/payout` | hidden | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/admin/sendLetter` | hidden | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | `/alchemy/addressWebhook` | public | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/alchemy/addresses/:webhookId` | public | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | `/app` | public | `AppController.createRefNew` | `app.controller.ts` | -| GET | `/app/:app` | hidden | `AppController.redirectToStore` | `app.controller.ts` | -| GET | `/app/advertisements` | hidden | `AppController.getAds` | `app.controller.ts` | -| GET | `/app/announcements` | public | `AppController.getAnnouncements` | `app.controller.ts` | -| GET | `/app/settings/flags` | hidden | `AppController.getFlags` | `app.controller.ts` | -| GET | `/asset` | public | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | -| PUT | `/asset/:id` | public | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | -| POST | `/auth` | public | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/2fa` | hidden | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa` | public | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/2fa/verify` | public | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby` | hidden | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/alby/redirect/:id` | hidden | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/challenge` | hidden | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/mail` | hidden | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/mail/confirm` | public | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/mail/redirect` | hidden | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signIn` | hidden | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/signMessage` | public | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | `/auth/signUp` | public | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/auth/verifySignature` | public | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | `/balance/pdf` | public | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | `/balance/pdf/blockchains` | public | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | `/bank` | public | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| PUT | `/bank/receiveIban` | public | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| POST | `/bank/yapeal/webhook` | public | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | -| GET | `/bankAccount` | public | `BankAccountController.AuthGuard` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount` | public | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | `/bankAccount/:id` | public | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/bic` | hidden | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | `/bankAccount/iban` | public | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | `/bankData/:id` | public | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| PUT | `/bankData/:id/nameCheck` | hidden | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| POST | `/bankTx` | public | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTx/:id` | hidden | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| DELETE | `/bankTx/:id/buyCrypto` | hidden | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | `/bankTxRepeat/:id` | public | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | -| PUT | `/bankTxReturn/:id` | public | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | `/bankTxReturn/:id/refund` | hidden | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | `/blockchain/balances` | public | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | `/blockchain/broadcast` | public | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | `/blockchain/transaction` | public | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| GET | `/buy` | public | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | `/buy` | hidden | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/:id` | hidden | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/:id` | public | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/:id/history` | hidden | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos` | public | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos/:id/confirm` | public | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/paymentInfos/:id/invoice` | public | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | `/buy/personalIban` | public | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | `/buy/personalIban` | public | `BuyController.AuthGuard` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buy/quote` | hidden | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | `/buyCrypto/:id` | hidden | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/:id/amlCheck` | hidden | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| DELETE | `/buyCrypto/:id/amlCheck` | hidden | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/refund` | hidden | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/scorechain` | hidden | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | `/buyCrypto/:id/webhook` | public | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/refVolumes` | hidden | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyCrypto/volumes` | hidden | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | `/buyFiat/:id` | hidden | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/:id/amlCheck` | hidden | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| DELETE | `/buyFiat/:id/amlCheck` | hidden | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/refund` | hidden | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/scorechain` | hidden | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | `/buyFiat/:id/webhook` | public | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/refVolumes` | hidden | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | `/buyFiat/volumes` | hidden | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| GET | `/country` | public | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | -| GET | `/cryptoRoute` | public | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| POST | `/cryptoRoute` | hidden | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id` | hidden | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| PUT | `/cryptoRoute/:id` | hidden | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/cryptoRoute/:id/history` | hidden | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | `/custody` | public | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody` | public | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/account` | public | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/account` | public | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id` | public | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | `/custody/account/:id` | public | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/access` | public | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/account/:id/access` | public | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | `/custody/account/:id/access/:accessId` | public | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| DELETE | `/custody/account/:id/access/:accessId` | public | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/balance` | public | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/history` | public | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/order` | public | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | `/custody/account/:id/pdf` | public | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | `/custody/admin/order/:id/approve` | public | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/admin/orders` | public | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| PUT | `/custody/admin/user/:id/balance` | public | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/history` | public | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/order` | public | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody/order` | public | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | `/custody/order/:id/confirm` | public | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/custody/pdf` | public | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | `/dashboard/accounting/ledger/accounts` | public | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/equity-comparison` | hidden | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/margin` | hidden | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/reconciliation` | hidden | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/accounting/ledger/suspense` | hidden | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | `/dashboard/financial/changes` | hidden | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/changes/latest` | hidden | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/latest` | hidden | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/log` | public | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | `/dashboard/financial/reconciliation` | public | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | `/dashboard/financial/reconciliation/overview` | hidden | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | `/dashboard/financial/ref-recipients` | hidden | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| POST | `/deposit` | public | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| PUT | `/deposit/lightningWebhook` | hidden | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| GET | `/deuro/info` | public | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | -| GET | `/dex/check-liquidity` | public | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| PUT | `/dex/complete-orders` | hidden | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/liquidity-after-purchase` | hidden | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/purchase-liquidity` | hidden | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/reserve-liquidity` | hidden | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/dex/transfer-completion` | hidden | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | `/dex/transfer-liquidity` | hidden | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | `/exchange/:exchange/balances` | public | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/price` | hidden | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | -| PUT | `/exchange/:exchange/sync` | hidden | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade` | hidden | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/trade` | hidden | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/trade/history` | hidden | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/exchange/:exchange/withdraw` | hidden | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/:exchange/withdraw/:id` | public | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | `/exchange/trade/:id` | hidden | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | `/faucet` | public | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | -| POST | `/fee` | public | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | -| GET | `/fiat` | public | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | -| POST | `/fiatOutput` | public | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| PUT | `/fiatOutput/:id` | hidden | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| GET | `/frankencoin/info` | public | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | `/gs/db` | public | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/db/custom` | hidden | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/debug` | hidden | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | -| POST | `/gs/evm/bridgeApproval` | hidden | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/coinTransaction` | hidden | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractApproval` | hidden | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/contractTransaction` | hidden | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/rawTransaction` | public | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | `/gs/evm/tokenTransaction` | hidden | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| GET | `/gs/support` | hidden | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | -| GET | `/health` | public | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/banking` | public | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/external` | public | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/liquidity` | public | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/nodes` | public | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/health/payment` | public | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | `/history` | public | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/history/:exportType` | hidden | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/history/csv` | hidden | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| POST | `/history/csv` | public | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | `/ikna/bfs/:id` | hidden | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | -| POST | `/ikna/bfs/address` | public | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | `/ikna/tag` | hidden | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | `/juice/info` | public | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | -| GET | `/kyc` | public | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc` | public | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc` | public | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| PUT | `/kyc` | public | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/2fa` | public | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa` | public | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/2fa/verify` | public | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/:code` | public | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | `/kyc/:code` | public | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:code/countries` | public | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:id/documents` | public | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:id/documents/:type` | public | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/kyc/:step` | public | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/admin/blacklist/ip` | hidden | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| DELETE | `/kyc/admin/blacklist/ip` | hidden | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/ident/file/sync` | hidden | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/log` | hidden | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/log/:id` | hidden | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/nameCheck/:id` | public | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | `/kyc/admin/step/:id` | hidden | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | `/kyc/admin/webhook` | hidden | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| GET | `/kyc/client/payments` | public | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users` | public | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents` | public | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/documents/:type` | public | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/client/users/:id/payments` | public | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | `/kyc/countries` | public | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/countries` | public | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/data/:type/:id` | hidden | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/additional/:id` | public | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/address/:id` | public | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/authority/:id` | public | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/beneficial/:id` | public | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/confirmation/:id` | public | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/contact/:id` | hidden | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/data/financial/:id` | public | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/financial/:id` | public | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/legal/:id` | public | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/name/:id` | public | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/nationality/:id` | public | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/operational/:id` | public | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/owner/:id` | public | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/payment/:id` | public | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/personal/:id` | public | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/phone/:id` | public | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recall/:id` | public | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/recommendation/:id` | public | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/residence/:id` | public | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/signatory/:id` | public | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/data/statutes/:id` | public | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/file/:id` | hidden | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/ident/manual/:id` | hidden | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/ident/sumsub` | public | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | `/kyc/transfer` | hidden | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | `/kyc/transfer` | public | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| DELETE | `/kyc/transfer` | hidden | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | `/kyc/users` | public | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | `/language` | public | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | -| PUT | `/limitRequest/:id` | public | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | -| GET | `/liquidityManagement/balance` | public | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | -| PUT | `/liquidityManagement/order/:id/resolveUncertain` | hidden | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/order/in-progress` | public | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | `/liquidityManagement/pipeline/:id/status` | hidden | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/buy` | public | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/in-progress` | hidden | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/pipeline/sell` | hidden | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | `/liquidityManagement/pipeline/stopped` | hidden | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | `/liquidityManagement/rule` | public | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | `/liquidityManagement/rule/:id` | hidden | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PUT | `/liquidityManagement/rule/:id` | hidden | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/deactivate` | hidden | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/reactivate` | hidden | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | `/liquidityManagement/rule/:id/settings` | hidden | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | `/lnurla` | public | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| POST | `/lnurla` | public | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | `/lnurla/status` | public | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | `/lnurld/:id` | public | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurld/cb/:id/:var` | public | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | `/lnurlp/:id` | public | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| POST | `/lnurlp/:id` | public | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| DELETE | `/lnurlp/cancel/:id` | public | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/cb/:id` | public | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/tx/:id` | public | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlp/wait/:id` | public | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | `/lnurlw/:id` | public | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| GET | `/lnurlw/cb/:id` | public | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | `/log` | public | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/:id` | hidden | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | -| PUT | `/log/financial/validity` | hidden | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | -| GET | `/monitoring/data` | public | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | -| POST | `/monitoring/data` | hidden | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | -| GET | `/mros` | hidden | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/mros` | public | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | -| GET | `/mros/:id` | hidden | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | -| PUT | `/mros/:id` | hidden | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | `/node/:node/:mode/cmd` | hidden | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/:mode/rpc` | hidden | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/:mode/tx/:txId` | hidden | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/cmd` | hidden | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/node/:node/rpc` | public | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | `/node/:node/tx/:txId` | hidden | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | `/notification/send-mail` | public | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | `/payIn` | public | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/lnurlpDeposit/:uniqueId` | public | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/lnurlpPayment/:uniqueId` | hidden | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | `/payIn/poll` | hidden | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | `/payIn/retry` | hidden | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| GET | `/paymentLink` | public | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink` | public | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink` | public | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id` | hidden | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | `/paymentLink/:id` | hidden | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/:id/pos` | hidden | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/assign` | public | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/config` | public | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/config` | public | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/history` | public | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/activate/:id` | public | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/binance/webhook` | hidden | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integration/kucoin/activate/:id` | public | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | `/paymentLink/integrations/kucoin/webhook/success` | hidden | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| GET | `/paymentLink/locations` | public | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/merchant` | public | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/payment` | hidden | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | `/paymentLink/payment` | public | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | `/paymentLink/payment` | public | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/payment/:id` | public | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/payment/confirm` | public | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/payment/wait` | public | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | `/paymentLink/pos` | public | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/recipient` | public | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/standard` | public | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/standard/:id` | public | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | `/paymentLink/stickers` | hidden | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/paymentLink/walletApp` | public | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | `/paymentLink/walletApp/:id` | public | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | `/paymentLink/walletApp/recommended` | public | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | `/payout` | public | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/payout/completion` | hidden | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/retry` | hidden | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | `/payout/speedup` | hidden | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | `/pl` | public | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | -| GET | `/plp` | public | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | `/pricing` | hidden | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| PUT | `/pricing` | hidden | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | `/pricing/price` | public | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | `/realunit/account/:address` | public | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/account/:address/history` | public | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/quotes` | public | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/quotes/:id/confirm-payment` | hidden | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/admin/registration/:id/forward` | hidden | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/admin/transactions` | hidden | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/balance/pdf` | public | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/buyPrice` | public | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/buyShares` | public | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/info` | public | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/price` | public | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellPrice` | public | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/brokerbot/sellShares` | public | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/buy` | public | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/buy/:id/confirm` | public | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/compliance/customers` | public | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id` | hidden | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/dossier` | hidden | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/files` | hidden | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/compliance/customers/:id/files/:uid` | hidden | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | `/realunit/confirm-aktionariat` | public | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/holders` | public | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/legal` | public | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| PUT | `/realunit/legal` | public | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| GET | `/realunit/pay/:id/status` | public | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/submit` | public | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/pay/unsigned-transaction` | public | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/price` | public | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/price/history` | public | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/buyPrice` | public | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/buyShares` | public | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/info` | public | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/price` | public | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellPrice` | public | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/quote/sellShares` | public | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/complete` | public | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/date` | public | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/email` | public | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/register/status` | public | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/register/wallet` | public | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/registration` | public | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell` | public | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/broadcast` | public | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/confirm` | public | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/sell/:id/unsigned-transactions` | public | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/support/:id` | hidden | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/data` | hidden | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| POST | `/realunit/support/:id/message` | hidden | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/message/:messageId/file` | hidden | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/:id/messages` | hidden | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/activity` | hidden | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/clerks` | hidden | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/counts` | hidden | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/list` | public | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | `/realunit/support/statistics` | hidden | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| PUT | `/realunit/swap` | public | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/swap/:id/broadcast` | public | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/swap/:id/unsigned-transaction` | public | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/tokenInfo` | public | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/multi` | public | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | `/realunit/transactions/receipt/single` | public | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/transfer` | public | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | `/realunit/transfer/:id/confirm` | public | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/realunit/wallet/status` | public | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | `/recall` | hidden | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | `/recall` | public | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | `/recall/:id` | hidden | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | -| PUT | `/recall/:id` | hidden | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | `/recommendation` | public | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| POST | `/recommendation` | hidden | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/confirm` | hidden | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | `/recommendation/:id/reject` | hidden | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| GET | `/ref` | public | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | -| POST | `/reward/ref` | hidden | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/:id` | hidden | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| POST | `/reward/ref/manual` | hidden | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | `/reward/ref/volumes` | public | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| GET | `/route` | public | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | -| PUT | `/route/:id` | hidden | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | -| POST | `/scorechain/screening` | public | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | -| GET | `/sell` | public | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| POST | `/sell` | hidden | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/:id` | hidden | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/:id` | public | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/:id/history` | hidden | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/paymentInfos` | public | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/paymentInfos/:id/confirm` | public | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/sell/paymentInfos/:id/tx` | public | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | `/sell/quote` | hidden | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | `/setting` | public | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/:key` | hidden | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/customSignUpFees` | hidden | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | -| PUT | `/setting/disabledProcesses` | hidden | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | -| GET | `/setting/infoBanner` | public | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | -| POST | `/specialExternalAccount` | public | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | -| GET | `/statistic` | public | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/statistic/status` | public | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/statistic/transactions` | public | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | `/support` | public | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id` | hidden | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/ip-log-pdf` | hidden | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/:id/onboarding-pdf` | hidden | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/scorechain` | hidden | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/:id/transaction-pdf` | hidden | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues` | hidden | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/:queue/items` | hidden | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/call-queues/clerks` | hidden | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/issue` | public | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue` | public | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id` | hidden | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | `/support/issue/:id` | public | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | `/support/issue/:id/close` | public | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id/data` | hidden | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/:id/message` | hidden | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/:id/message/:messageId/file` | public | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/activity` | hidden | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/clerk` | hidden | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/clerks` | hidden | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/counts` | hidden | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/escalation/telegram-bind` | hidden | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/escalation/telegram-chats` | hidden | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/escalation/telegram-test` | hidden | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/list` | public | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/issue/statistics` | hidden | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | `/support/issue/support` | public | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | `/support/kycFileList` | hidden | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/kycFileStats` | hidden | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/note` | hidden | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/note` | hidden | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/note/:id` | hidden | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/note/:id` | hidden | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/note/users` | hidden | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews` | hidden | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-reviews/items` | hidden | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/pending-transactions` | hidden | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/recommendation-graph/:id/neighbors` | hidden | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/template` | hidden | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | -| POST | `/support/template` | hidden | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/template/:id` | hidden | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | -| DELETE | `/support/template/:id` | hidden | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transaction/:id/refund` | hidden | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| PUT | `/support/transaction/:id/refund` | hidden | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| GET | `/support/transactionList` | hidden | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | -| GET | `/swap` | public | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/swap` | hidden | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/:id` | hidden | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/:id` | public | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/:id/history` | hidden | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/paymentInfos` | public | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/paymentInfos/:id/confirm` | public | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | `/swap/paymentInfos/:id/tx` | public | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | `/swap/quote` | hidden | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | `/tatum/addressWebhook` | public | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | -| PUT | `/trading/rule/:id` | public | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | -| GET | `/transaction` | public | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/invoice` | public | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/receipt` | public | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/:id/refund` | public | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/refund` | public | `TransactionController.AuthGuard` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/:id/target` | hidden | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/ChainReport` | hidden | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/CoinTracking` | public | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/admin/:id` | public | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:id/stop` | hidden | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | `/transaction/admin/:txId/riskAssessment` | hidden | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| PUT | `/transaction/admin/:txId/riskAssessment/:id` | hidden | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| GET | `/transaction/csv` | public | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/csv` | public | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/detail` | hidden | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | `/transaction/detail/csv` | public | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/detail/single` | public | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/single` | public | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/target` | hidden | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/transaction/unassigned` | public | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | `/user` | public | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user` | public | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user` | public | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user` | public | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | `UserController.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user` | public | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/:id` | hidden | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/account` | public | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/addresses/:address` | public | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/addresses/:address` | public | `UserV2Controller.AuthGuard` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/apiFilter/CT` | public | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/apiKey/CT` | public | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | `/user/apiKey/CT` | public | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/change` | public | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/data` | hidden | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/detail` | public | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/discountCodes` | public | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/mail` | public | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | `/user/mail/verify` | public | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/name` | public | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/profile` | public | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/ref` | public | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/ref` | public | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/ref` | public | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | `/user/specialCodes` | public | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/user/volumes` | hidden | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | `/userData` | public | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData` | hidden | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| GET | `/userData/:id` | public | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id` | hidden | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/bankDatas` | hidden | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/fee` | hidden | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| DELETE | `/userData/:id/fee` | hidden | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/:id/kycFile` | hidden | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/merge` | hidden | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/:id/volumes` | hidden | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | `/userData/auditPeriodNumbers` | hidden | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userData/download` | public | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | `/userDataRelation` | public | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| PUT | `/userDataRelation/:id` | public | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| DELETE | `/userDataRelation/:id` | public | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| GET | `/version` | hidden | `AppController.getVersion` | `app.controller.ts` | -| POST | `/wallet` | public | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | -| PUT | `/wallet/:id` | hidden | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| Method | Ver | Path | Swagger | Data access | Max cols | Handler | File | +| ------ | --- | ---- | ------- | ----------- | -------: | ------- | ---- | +| GET | neutral | `/` | public | none | — | `AppController.home` | `app.controller.ts` | +| POST | 1 | `/CustodyProvider` | public | none | — | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| PUT | 1 | `/CustodyProvider/:id` | hidden | whole rows | 6 | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | 1 | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | `/admin/mail` | public | whole rows | 13 | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | `/admin/payout` | hidden | whole rows | 156 | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | `/admin/sendLetter` | hidden | none | — | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | `/alchemy/addressWebhook` | public | none | — | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | `/alchemy/addresses/:webhookId` | public | none | — | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | `/app` | public | whole rows | 6 | `AppController.createRefNew` | `app.controller.ts` | +| GET | 1 | `/app/:app` | hidden | whole rows | 6 | `AppController.redirectToStore` | `app.controller.ts` | +| GET | 1 | `/app/advertisements` | hidden | none | — | `AppController.getAds` | `app.controller.ts` | +| GET | 1 | `/app/announcements` | public | none | — | `AppController.getAnnouncements` | `app.controller.ts` | +| GET | 1 | `/app/settings/flags` | hidden | none | — | `AppController.getFlags` | `app.controller.ts` | +| GET | 1 | `/asset` | public | whole rows | 33 | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | 1 | `/asset/:id` | public | whole rows | 33 | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| POST | 1 | `/auth` | public | whole rows | 643 | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/2fa` | hidden | whole rows | 253 | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | `/auth/2fa` | public | whole rows | 253 | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | `/auth/2fa/verify` | public | whole rows | 253 | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/alby` | hidden | none | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/alby/redirect/:id` | hidden | whole rows | 643 | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/challenge` | hidden | whole rows | 20 | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | `/auth/mail` | hidden | whole rows | 643 | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/mail/confirm` | public | whole rows | 470 | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/mail/redirect` | hidden | whole rows | 643 | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | `/auth/signIn` | hidden | whole rows | 643 | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/signMessage` | public | none | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | `/auth/signUp` | public | whole rows | 643 | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/auth/verifySignature` | public | whole rows | 6 | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | `/balance/pdf` | public | whole rows | 40 | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | 1 | `/balance/pdf/blockchains` | public | none | — | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | 1 | `/bank` | public | whole rows | 46 | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| PUT | 1 | `/bank/receiveIban` | public | whole rows | 101 | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| POST | 1 | `/bank/yapeal/webhook` | public | none | — | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| GET | 1 | `/bankAccount` | public | whole rows | 261 | `BankAccountController.getAllUserBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | `/bankAccount` | public | whole rows | 261 | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | 1 | `/bankAccount/:id` | public | whole rows | 261 | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | `/bankAccount/bic` | hidden | whole rows | 26 | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | `/bankAccount/iban` | public | whole rows | 26 | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | 1 | `/bankData/:id` | public | whole rows | 31 | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| PUT | 1 | `/bankData/:id/nameCheck` | hidden | whole rows | 276 | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | 1 | `/bankTx` | public | whole rows | 61 | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | 1 | `/bankTx/:id` | hidden | whole rows | 1051 | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| DELETE | 1 | `/bankTx/:id/buyCrypto` | hidden | whole rows | 247 | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | 1 | `/bankTxRepeat/:id` | public | whole rows | 308 | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | 1 | `/bankTxReturn/:id` | public | whole rows | 438 | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | 1 | `/bankTxReturn/:id/refund` | hidden | whole rows | 727 | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | 1 | `/blockchain/balances` | public | whole rows | 33 | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | 1 | `/blockchain/broadcast` | public | none | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | 1 | `/blockchain/transaction` | public | whole rows | 33 | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| GET | 1 | `/buy` | public | whole rows | 308 | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | 1 | `/buy` | hidden | whole rows | 364 | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | `/buy/:id` | hidden | whole rows | 308 | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | `/buy/:id` | public | whole rows | 308 | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | `/buy/:id/history` | hidden | whole rows | 497 | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | `/buy/paymentInfos` | public | whole rows | 364 | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | `/buy/paymentInfos/:id/confirm` | public | whole rows | 504 | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | `/buy/paymentInfos/:id/invoice` | public | whole rows | 504 | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | `/buy/personalIban` | public | whole rows | 331 | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | 1 | `/buy/personalIban` | public | whole rows | 253 | `BuyController.createPersonalIban` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | `/buy/quote` | hidden | whole rows | 143 | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | `/buyCrypto/:id` | hidden | whole rows | 1090 | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| DELETE | 1 | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 422 | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 1090 | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | `/buyCrypto/:id/refund` | hidden | whole rows | 1051 | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | `/buyCrypto/:id/scorechain` | hidden | whole rows | 717 | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | `/buyCrypto/:id/webhook` | public | whole rows | 844 | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | `/buyCrypto/refVolumes` | hidden | whole rows | 77 | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | `/buyCrypto/volumes` | hidden | whole rows | 487 | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | `/buyFiat/:id` | hidden | whole rows | 1033 | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| DELETE | 1 | `/buyFiat/:id/amlCheck` | hidden | whole rows | 490 | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | `/buyFiat/:id/amlCheck` | hidden | whole rows | 1033 | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | `/buyFiat/:id/refund` | hidden | whole rows | 803 | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | `/buyFiat/:id/scorechain` | hidden | whole rows | 517 | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | `/buyFiat/:id/webhook` | public | whole rows | 644 | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | `/buyFiat/refVolumes` | hidden | whole rows | 77 | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | `/buyFiat/volumes` | hidden | whole rows | 308 | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| GET | 1 | `/country` | public | whole rows | 23 | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | +| GET | 1 | `/cryptoRoute` | public | none | — | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| POST | 1 | `/cryptoRoute` | hidden | none | — | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| PUT | 1 | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | `/cryptoRoute/:id/history` | hidden | none | — | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | `/custody` | public | whole rows | 253 | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | `/custody` | public | whole rows | 364 | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | 1 | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | `/custody/account/:id/access` | public | whole rows | 238 | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | `/custody/account/:id/access` | public | whole rows | 253 | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| DELETE | 1 | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | 1 | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | `/custody/account/:id/balance` | public | whole rows | 253 | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | `/custody/account/:id/history` | public | whole rows | 253 | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | `/custody/account/:id/order` | public | whole rows | 253 | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | `/custody/account/:id/pdf` | public | whole rows | 253 | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | `/custody/admin/order/:id/approve` | public | whole rows | 217 | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | `/custody/admin/orders` | public | whole rows | 525 | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| PUT | 1 | `/custody/admin/user/:id/balance` | public | whole rows | 308 | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | `/custody/history` | public | whole rows | 253 | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | `/custody/order` | public | whole rows | 19 | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | `/custody/order` | public | whole rows | 364 | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | `/custody/order/:id/confirm` | public | whole rows | 525 | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | `/custody/pdf` | public | whole rows | 253 | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | `/dashboard/accounting/ledger/accounts` | public | whole rows | 54 | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | whole rows | 30 | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | `/dashboard/accounting/ledger/equity-comparison` | hidden | whole rows | 54 | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | `/dashboard/accounting/ledger/margin` | hidden | whole rows | 11 | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | `/dashboard/accounting/ledger/reconciliation` | hidden | whole rows | 54 | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | `/dashboard/accounting/ledger/suspense` | hidden | whole rows | 11 | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | `/dashboard/financial/changes` | hidden | whole rows | 11 | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | `/dashboard/financial/changes/latest` | hidden | whole rows | 11 | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | `/dashboard/financial/latest` | hidden | none | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | `/dashboard/financial/log` | public | whole rows | 33 | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | `/dashboard/financial/reconciliation` | public | whole rows | 229 | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | 1 | `/dashboard/financial/reconciliation/overview` | hidden | whole rows | 229 | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | 1 | `/dashboard/financial/ref-recipients` | hidden | whole rows | 25 | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| POST | 1 | `/deposit` | public | whole rows | 6 | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| PUT | 1 | `/deposit/lightningWebhook` | hidden | none | — | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| GET | 1 | `/deuro/info` | public | whole rows | 11 | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | +| GET | 1 | `/dex/check-liquidity` | public | none | — | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| PUT | 1 | `/dex/complete-orders` | hidden | whole rows | 156 | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | `/dex/liquidity-after-purchase` | hidden | whole rows | 156 | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | `/dex/purchase-liquidity` | hidden | none | — | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | `/dex/reserve-liquidity` | hidden | none | — | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | `/dex/transfer-completion` | hidden | none | — | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | `/dex/transfer-liquidity` | hidden | none | — | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | `/exchange/:exchange/balances` | public | none | — | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | `/exchange/:exchange/price` | hidden | none | — | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | +| PUT | 1 | `/exchange/:exchange/sync` | hidden | whole rows | 40 | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | `/exchange/:exchange/trade/history` | hidden | none | — | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | `/exchange/:exchange/withdraw` | hidden | none | — | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | `/exchange/:exchange/withdraw/:id` | public | none | — | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | `/exchange/trade/:id` | hidden | none | — | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | `/faucet` | public | whole rows | 308 | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | 1 | `/fee` | public | whole rows | 65 | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| GET | 1 | `/fiat` | public | whole rows | 23 | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | +| POST | 1 | `/fiatOutput` | public | whole rows | 377 | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| PUT | 1 | `/fiatOutput/:id` | hidden | whole rows | 59 | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| GET | 1 | `/frankencoin/info` | public | whole rows | 11 | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | +| POST | 1 | `/gs/db` | public | caller-defined | 13 | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | `/gs/db/custom` | hidden | caller-defined | — | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | `/gs/debug` | hidden | projected | — | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | `/gs/evm/bridgeApproval` | hidden | whole rows | 33 | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | `/gs/evm/coinTransaction` | hidden | whole rows | 6 | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | `/gs/evm/contractApproval` | hidden | whole rows | 33 | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | `/gs/evm/contractTransaction` | hidden | none | — | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | `/gs/evm/rawTransaction` | public | whole rows | 6 | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | `/gs/evm/tokenTransaction` | hidden | whole rows | 33 | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| GET | 1 | `/gs/support` | hidden | whole rows | 907 | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | +| GET | neutral | `/health` | public | none | — | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | `/health/banking` | public | none | — | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | `/health/external` | public | none | — | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | `/health/liquidity` | public | none | — | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | `/health/nodes` | public | none | — | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | `/health/payment` | public | none | — | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | 1 | `/history` | public | whole rows | 1363 | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | `/history/:exportType` | hidden | whole rows | 1363 | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | `/history/csv` | hidden | none | — | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | 1 | `/history/csv` | public | whole rows | 1363 | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | `/ikna/bfs/:id` | hidden | none | — | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | 1 | `/ikna/bfs/address` | public | none | — | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | 1 | `/ikna/tag` | hidden | none | — | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | 1 | `/juice/info` | public | whole rows | 11 | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | +| GET | 1 | `/kyc` | public | whole rows | 351 | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | `/kyc` | public | whole rows | 351 | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 1 | `/kyc` | public | whole rows | 351 | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| PUT | 2 | `/kyc` | public | whole rows | 364 | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | `/kyc/2fa` | public | whole rows | 253 | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | `/kyc/2fa` | public | whole rows | 253 | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | `/kyc/2fa/verify` | public | whole rows | 253 | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 1 | `/kyc/:code` | public | whole rows | 351 | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | 1 | `/kyc/:code` | public | whole rows | 351 | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | `/kyc/:code/countries` | public | whole rows | 351 | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | `/kyc/:id/documents` | public | whole rows | 328 | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | `/kyc/:id/documents/:type` | public | whole rows | 328 | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | `/kyc/:step` | public | whole rows | 364 | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 1 | `/kyc/admin/blacklist/ip` | hidden | none | — | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | `/kyc/admin/blacklist/ip` | hidden | whole rows | 12 | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | `/kyc/admin/ident/file/sync` | hidden | whole rows | 243 | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | `/kyc/admin/log` | hidden | whole rows | 253 | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | `/kyc/admin/log/:id` | hidden | whole rows | 17 | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | `/kyc/admin/nameCheck/:id` | public | whole rows | 245 | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | `/kyc/admin/step/:id` | hidden | whole rows | 385 | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | `/kyc/admin/webhook` | hidden | whole rows | 364 | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| GET | 2 | `/kyc/client/payments` | public | whole rows | 1092 | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | `/kyc/client/users` | public | whole rows | 20 | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | `/kyc/client/users/:id/documents` | public | whole rows | 78 | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | `/kyc/client/users/:id/documents/:type` | public | whole rows | 78 | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | `/kyc/client/users/:id/payments` | public | whole rows | 1092 | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 1 | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 2 | `/kyc/data/:type/:id` | hidden | whole rows | 351 | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/additional/:id` | public | whole rows | 364 | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/address/:id` | public | whole rows | 364 | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/authority/:id` | public | whole rows | 364 | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/beneficial/:id` | public | whole rows | 364 | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/confirmation/:id` | public | whole rows | 364 | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/contact/:id` | hidden | whole rows | 364 | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | `/kyc/data/financial/:id` | public | whole rows | 351 | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/financial/:id` | public | whole rows | 364 | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/legal/:id` | public | whole rows | 364 | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/name/:id` | public | whole rows | 364 | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/nationality/:id` | public | whole rows | 364 | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/operational/:id` | public | whole rows | 364 | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/owner/:id` | public | whole rows | 364 | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/payment/:id` | public | whole rows | 364 | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/personal/:id` | public | whole rows | 364 | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/phone/:id` | public | whole rows | 364 | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/recall/:id` | public | whole rows | 364 | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/recommendation/:id` | public | whole rows | 643 | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/residence/:id` | public | whole rows | 364 | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/signatory/:id` | public | whole rows | 364 | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/data/statutes/:id` | public | whole rows | 364 | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | `/kyc/file/:id` | hidden | whole rows | 264 | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | `/kyc/ident/manual/:id` | hidden | whole rows | 364 | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | `/kyc/ident/sumsub` | public | whole rows | 364 | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 2 | `/kyc/transfer` | hidden | whole rows | 351 | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | `/kyc/transfer` | hidden | whole rows | 364 | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 1 | `/kyc/transfer` | public | whole rows | 364 | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | `/kyc/users` | public | whole rows | 328 | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | `/language` | public | whole rows | 7 | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | +| PUT | 1 | `/limitRequest/:id` | public | whole rows | 434 | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | 1 | `/liquidityManagement/balance` | public | whole rows | 40 | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | 1 | `/liquidityManagement/order/:id/resolveUncertain` | hidden | whole rows | 139 | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | 1 | `/liquidityManagement/order/in-progress` | public | whole rows | 139 | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | 1 | `/liquidityManagement/pipeline/:id/status` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | `/liquidityManagement/pipeline/buy` | public | whole rows | 112 | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | 1 | `/liquidityManagement/pipeline/in-progress` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | `/liquidityManagement/pipeline/sell` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | 1 | `/liquidityManagement/pipeline/stopped` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | `/liquidityManagement/rule` | public | whole rows | 83 | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | 1 | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PUT | 1 | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | `/liquidityManagement/rule/:id/deactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | `/liquidityManagement/rule/:id/reactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | `/liquidityManagement/rule/:id/settings` | hidden | whole rows | 83 | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | 1 | `/lnurla` | public | whole rows | 643 | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| POST | 1 | `/lnurla` | public | none | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | 1 | `/lnurla/status` | public | none | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | 1 | `/lnurld/:id` | public | none | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | 1 | `/lnurld/cb/:id/:var` | public | none | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | 1 | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| POST | 1 | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| DELETE | 1 | `/lnurlp/cancel/:id` | public | whole rows | 545 | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | `/lnurlp/cb/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | `/lnurlp/tx/:id` | public | whole rows | 545 | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | `/lnurlp/wait/:id` | public | whole rows | 545 | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | `/lnurlw/:id` | public | none | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| GET | 1 | `/lnurlw/cb/:id` | public | none | — | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| POST | 1 | `/log` | public | whole rows | 11 | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| PUT | 1 | `/log/:id` | hidden | whole rows | 11 | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| PUT | 1 | `/log/financial/validity` | hidden | projected | 11 | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | +| GET | 1 | `/monitoring/data` | public | none | — | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| POST | 1 | `/monitoring/data` | hidden | none | — | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | 1 | `/mros` | hidden | whole rows | 243 | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | 1 | `/mros` | public | whole rows | 253 | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| GET | 1 | `/mros/:id` | hidden | whole rows | 243 | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | +| PUT | 1 | `/mros/:id` | hidden | whole rows | 98 | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | 1 | `/node/:node/:mode/cmd` | hidden | none | — | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | `/node/:node/:mode/rpc` | hidden | none | — | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | 1 | `/node/:node/:mode/tx/:txId` | hidden | none | — | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | `/node/:node/cmd` | hidden | none | — | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | `/node/:node/rpc` | public | none | — | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | 1 | `/node/:node/tx/:txId` | hidden | none | — | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | `/notification/send-mail` | public | whole rows | 13 | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | 1 | `/payIn` | public | whole rows | 545 | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | 1 | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | 1 | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | 1 | `/payIn/poll` | hidden | none | — | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | 1 | `/payIn/retry` | hidden | whole rows | — | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | 1 | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | `/paymentLink` | public | whole rows | 545 | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | 1 | `/paymentLink/:id` | hidden | whole rows | 195 | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink/:id` | hidden | whole rows | 513 | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink/:id/pos` | hidden | whole rows | 513 | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink/assign` | public | whole rows | 513 | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/paymentLink/history` | public | whole rows | 545 | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | `/paymentLink/integration/binance/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | `/paymentLink/integration/binance/webhook` | hidden | whole rows | 545 | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | `/paymentLink/integration/kucoin/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| GET | 1 | `/paymentLink/locations` | public | whole rows | 513 | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | `/paymentLink/merchant` | public | whole rows | 253 | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | 1 | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/paymentLink/payment` | hidden | whole rows | 545 | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink/payment/:id` | public | whole rows | 545 | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink/payment/confirm` | public | whole rows | 513 | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/paymentLink/payment/wait` | public | whole rows | 513 | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | `/paymentLink/pos` | public | whole rows | 513 | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/paymentLink/recipient` | public | whole rows | 472 | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/paymentLink/standard` | public | none | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | 1 | `/paymentLink/standard/:id` | public | none | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | 1 | `/paymentLink/stickers` | hidden | whole rows | 513 | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/paymentLink/walletApp` | public | whole rows | 33 | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | 1 | `/paymentLink/walletApp/:id` | public | whole rows | 33 | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | 1 | `/paymentLink/walletApp/recommended` | public | whole rows | 33 | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| POST | 1 | `/payout` | public | none | — | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | 1 | `/payout/completion` | hidden | whole rows | 123 | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | 1 | `/payout/retry` | hidden | whole rows | 123 | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | 1 | `/payout/speedup` | hidden | whole rows | 123 | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | neutral | `/pl` | public | whole rows | 545 | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | 1 | `/plp` | public | whole rows | 545 | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | `/pricing` | hidden | none | — | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| PUT | 1 | `/pricing` | hidden | whole rows | 53 | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | 1 | `/pricing/price` | public | whole rows | 33 | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | 1 | `/realunit/account/:address` | public | whole rows | 40 | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/account/:address/history` | public | none | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/admin/quotes` | public | whole rows | 112 | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/admin/quotes/:id/confirm-payment` | hidden | whole rows | 1051 | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/admin/registration/:id/forward` | hidden | whole rows | 493 | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/admin/transactions` | hidden | whole rows | 362 | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | `/realunit/balance/pdf` | public | whole rows | 308 | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/brokerbot/buyPrice` | public | none | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/brokerbot/buyShares` | public | none | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/brokerbot/info` | public | whole rows | 33 | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/brokerbot/price` | public | none | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/brokerbot/sellPrice` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/brokerbot/sellShares` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/buy` | public | whole rows | 364 | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/buy/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/compliance/customers` | public | whole rows | 308 | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | `/realunit/compliance/customers/:id` | hidden | whole rows | 826 | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | `/realunit/compliance/customers/:id/dossier` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | `/realunit/compliance/customers/:id/files` | hidden | whole rows | 264 | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | `/realunit/compliance/customers/:id/files/:uid` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | `/realunit/confirm-aktionariat` | public | whole rows | 15 | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/holders` | public | none | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| PUT | 1 | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| GET | 1 | `/realunit/pay/:id/status` | public | whole rows | 32 | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/pay/submit` | public | whole rows | 545 | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/pay/unsigned-transaction` | public | whole rows | 545 | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/price` | public | whole rows | 33 | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/price/history` | public | whole rows | 40 | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/quote/buyPrice` | public | none | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/quote/buyShares` | public | none | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/quote/info` | public | whole rows | 33 | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/quote/price` | public | none | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/quote/sellPrice` | public | whole rows | 308 | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/quote/sellShares` | public | whole rows | 308 | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | `/realunit/register/complete` | public | whole rows | 493 | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/register/date` | public | none | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | `/realunit/register/email` | public | whole rows | 364 | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/register/status` | public | whole rows | 308 | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | `/realunit/register/wallet` | public | whole rows | 493 | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/registration` | public | whole rows | 308 | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/sell` | public | whole rows | 308 | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/sell/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/sell/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/sell/:id/unsigned-transactions` | public | whole rows | 504 | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/support/:id` | hidden | whole rows | 421 | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/:id/data` | hidden | whole rows | 951 | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| POST | 1 | `/realunit/support/:id/message` | hidden | whole rows | 441 | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/:id/message/:messageId/file` | hidden | whole rows | 421 | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/:id/messages` | hidden | whole rows | 428 | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/activity` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/clerks` | hidden | none | — | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/counts` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/list` | public | whole rows | 99 | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | `/realunit/support/statistics` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| PUT | 1 | `/realunit/swap` | public | whole rows | 308 | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/swap/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/swap/:id/unsigned-transaction` | public | whole rows | 504 | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/tokenInfo` | public | none | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | `/realunit/transactions/receipt/multi` | public | whole rows | 308 | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | `/realunit/transactions/receipt/single` | public | whole rows | 308 | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/transfer` | public | whole rows | 308 | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | `/realunit/transfer/:id/confirm` | public | whole rows | 87 | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/realunit/wallet/status` | public | whole rows | 308 | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | `/recall` | hidden | whole rows | 174 | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | 1 | `/recall` | public | whole rows | 308 | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | 1 | `/recall/:id` | hidden | whole rows | 174 | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | 1 | `/recall/:id` | hidden | whole rows | 308 | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | 1 | `/recommendation` | public | whole rows | 474 | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| POST | 1 | `/recommendation` | hidden | whole rows | 364 | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | 1 | `/recommendation/:id/confirm` | hidden | whole rows | 643 | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | 1 | `/recommendation/:id/reject` | hidden | whole rows | 643 | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | 1 | `/ref` | public | none | — | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| POST | 1 | `/reward/ref` | hidden | whole rows | 156 | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | 1 | `/reward/ref/:id` | hidden | whole rows | 234 | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | 1 | `/reward/ref/manual` | hidden | whole rows | 308 | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | 1 | `/reward/ref/volumes` | public | whole rows | 308 | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| GET | 1 | `/route` | public | whole rows | 308 | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | +| PUT | 1 | `/route/:id` | hidden | whole rows | 174 | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | +| POST | 1 | `/scorechain/screening` | public | whole rows | 14 | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| GET | 1 | `/sell` | public | whole rows | 308 | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| POST | 1 | `/sell` | hidden | whole rows | 308 | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | `/sell/:id` | hidden | whole rows | 377 | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | `/sell/:id` | public | whole rows | 308 | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | `/sell/:id/history` | hidden | whole rows | 470 | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | `/sell/paymentInfos` | public | whole rows | 308 | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | `/sell/paymentInfos/:id/confirm` | public | whole rows | 545 | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | `/sell/paymentInfos/:id/tx` | public | whole rows | 504 | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | `/sell/quote` | hidden | whole rows | 143 | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | `/setting` | public | whole rows | 5 | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | `/setting/:key` | hidden | whole rows | 5 | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | `/setting/customSignUpFees` | hidden | none | — | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | `/setting/disabledProcesses` | hidden | none | — | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | +| GET | 1 | `/setting/infoBanner` | public | none | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | +| POST | 1 | `/specialExternalAccount` | public | whole rows | 7 | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| GET | 1 | `/statistic` | public | none | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | `/statistic/status` | public | whole rows | 5 | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | `/statistic/transactions` | public | whole rows | 419 | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | `/support` | public | whole rows | 593 | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/:id` | hidden | whole rows | 826 | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/:id/ip-log-pdf` | hidden | whole rows | 12 | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | `/support/:id/onboarding-pdf` | hidden | whole rows | 264 | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/:id/scorechain` | hidden | whole rows | 14 | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/:id/transaction-pdf` | hidden | whole rows | 826 | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/call-queues` | hidden | none | — | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/call-queues/:queue/items` | hidden | whole rows | 672 | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/call-queues/clerks` | hidden | none | — | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/issue` | public | whole rows | 450 | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | `/support/issue` | public | whole rows | 493 | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/:id` | hidden | whole rows | 450 | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | 1 | `/support/issue/:id` | public | whole rows | 421 | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | 1 | `/support/issue/:id/close` | public | whole rows | 450 | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/:id/data` | hidden | whole rows | 951 | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | `/support/issue/:id/message` | hidden | whole rows | 441 | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/:id/message/:messageId/file` | public | whole rows | — | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/activity` | hidden | whole rows | 7 | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/clerk` | hidden | none | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/clerks` | hidden | none | — | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/counts` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | `/support/issue/escalation/telegram-bind` | hidden | whole rows | 5 | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/escalation/telegram-chats` | hidden | none | — | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | `/support/issue/escalation/telegram-test` | hidden | whole rows | 5 | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/list` | public | whole rows | 16 | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/issue/statistics` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | `/support/issue/support` | public | whole rows | 493 | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | `/support/kycFileList` | hidden | whole rows | 253 | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/kycFileStats` | hidden | whole rows | 99 | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/note` | hidden | whole rows | 9 | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | `/support/note` | hidden | whole rows | 253 | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | +| DELETE | 1 | `/support/note/:id` | hidden | whole rows | 9 | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | `/support/note/:id` | hidden | whole rows | 239 | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/note/users` | hidden | whole rows | 9 | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/pending-reviews` | hidden | whole rows | 15 | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/pending-reviews/items` | hidden | whole rows | 261 | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/pending-transactions` | hidden | whole rows | 672 | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/recommendation-graph/:id/neighbors` | hidden | whole rows | 474 | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/template` | hidden | whole rows | 8 | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | `/support/template` | hidden | whole rows | 253 | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | +| DELETE | 1 | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/transaction/:id/refund` | hidden | whole rows | 143 | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | `/support/transaction/:id/refund` | hidden | whole rows | 415 | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/support/transactionList` | hidden | whole rows | 20 | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | `/swap` | public | whole rows | 308 | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | 1 | `/swap` | hidden | whole rows | 308 | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | `/swap/:id` | hidden | whole rows | 308 | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | `/swap/:id` | public | whole rows | 396 | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | `/swap/:id/history` | hidden | whole rows | 509 | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | `/swap/paymentInfos` | public | whole rows | 308 | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | `/swap/paymentInfos/:id/confirm` | public | whole rows | 545 | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | `/swap/paymentInfos/:id/tx` | public | whole rows | 504 | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | `/swap/quote` | hidden | whole rows | 143 | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | 1 | `/tatum/addressWebhook` | public | none | — | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | 1 | `/trading/rule/:id` | public | whole rows | 87 | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| GET | 1 | `/transaction` | public | whole rows | 1363 | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | `/transaction/:id/invoice` | public | whole rows | 331 | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | `/transaction/:id/receipt` | public | whole rows | 331 | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/:id/refund` | public | whole rows | 331 | `TransactionController.getTransactionRefund` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | `/transaction/:id/refund` | public | whole rows | 487 | `TransactionController.setTransactionRefundTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | `/transaction/:id/target` | hidden | whole rows | 1051 | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/ChainReport` | hidden | whole rows | 1363 | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/CoinTracking` | public | whole rows | 1363 | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | `/transaction/admin/:id` | public | whole rows | 276 | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | 1 | `/transaction/admin/:id/stop` | hidden | whole rows | 98 | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | 1 | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| PUT | 1 | `/transaction/admin/:txId/riskAssessment/:id` | hidden | whole rows | 13 | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | 1 | `/transaction/csv` | public | none | — | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | `/transaction/csv` | public | whole rows | 1363 | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/detail` | hidden | whole rows | 1363 | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | `/transaction/detail/csv` | public | whole rows | 1363 | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/detail/single` | public | whole rows | 487 | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/single` | public | whole rows | 487 | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/target` | hidden | whole rows | 134 | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | `/transaction/unassigned` | public | whole rows | 356 | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| DELETE | 1 | `/user` | public | whole rows | 344 | `UserController.deleteUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 2 | `/user` | public | whole rows | 344 | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | `/user` | public | whole rows | 328 | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | `/user` | public | whole rows | 351 | `UserV2Controller.getUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | `/user` | public | whole rows | 406 | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | `/user` | public | whole rows | 351 | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | `/user/:id` | hidden | whole rows | 364 | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 1 | `/user/account` | public | whole rows | 344 | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 2 | `/user/addresses/:address` | public | whole rows | 344 | `UserV2Controller.deleteAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | `/user/addresses/:address` | public | whole rows | 351 | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | `/user/apiFilter/CT` | public | whole rows | 331 | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 1 | `/user/apiKey/CT` | public | none | — | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | `/user/apiKey/CT` | public | whole rows | 253 | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | `/user/change` | public | whole rows | 643 | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | `/user/data` | hidden | whole rows | 406 | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | `/user/detail` | public | whole rows | 328 | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | `/user/discountCodes` | public | whole rows | 308 | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | `/user/mail` | public | whole rows | 364 | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 2 | `/user/mail/verify` | public | whole rows | 364 | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | `/user/name` | public | whole rows | 386 | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | `/user/profile` | public | whole rows | 253 | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | `/user/ref` | public | whole rows | 45 | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | `/user/ref` | public | whole rows | 98 | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | `/user/ref` | public | whole rows | 98 | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | `/user/specialCodes` | public | whole rows | 308 | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | `/user/volumes` | hidden | whole rows | 45 | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | `/userData` | public | whole rows | 253 | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | `/userData` | hidden | whole rows | 253 | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | 1 | `/userData/:id` | public | whole rows | 253 | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | `/userData/:id` | hidden | whole rows | 384 | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | `/userData/:id/bankDatas` | hidden | whole rows | 284 | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| DELETE | 1 | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | `/userData/:id/kycFile` | hidden | whole rows | 253 | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | `/userData/:id/merge` | hidden | whole rows | 364 | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | `/userData/:id/volumes` | hidden | whole rows | — | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | `/userData/auditPeriodNumbers` | hidden | whole rows | 40 | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | `/userData/download` | public | whole rows | 253 | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | `/userDataRelation` | public | whole rows | 253 | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | 1 | `/userDataRelation/:id` | public | none | — | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| PUT | 1 | `/userDataRelation/:id` | public | whole rows | 7 | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| GET | neutral | `/version` | hidden | none | — | `AppController.getVersion` | `app.controller.ts` | +| POST | 1 | `/wallet` | public | none | — | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | 1 | `/wallet/:id` | hidden | whole rows | 20 | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. diff --git a/docs/load-sites.md b/docs/load-sites.md index ed677b93de..fa8b80ddb9 100644 --- a/docs/load-sites.md +++ b/docs/load-sites.md @@ -1,36 +1,38 @@ # Database load sites -Every place in the code that reads from the database: **1114 load sites** across 241 files. +Every place in the code that reads from the database: **1112 load sites** across 241 files. -This is the level at which the statement is unambiguous. An endpoint reaches several load sites — a permission check, a lookup, the actual query — so asking whether *an endpoint* loads efficiently has no single answer. Asking it of a load site does. +This is the level at which the statement is unambiguous. An endpoint reaches several load sites — a permission check, a lookup, the actual query — so asking whether *an endpoint* loads efficiently has no single answer. Asking it of a load site does. [endpoints.md](endpoints.md) carries the per-endpoint summary derived from these sites. ## What the mechanism means | Mechanism | Sites | Eager relations | Columns selected | | --------- | ----: | --------------- | ---------------- | | `find` family | 971 | **applied** — expanded recursively | all columns of the entity plus every eager relation | -| `createQueryBuilder` | 131 | not applied | all columns of the root entity, unless `.select([...])` narrows it | +| `createQueryBuilder` | 129 | not applied | all columns of the root entity, unless `.select([...])` narrows it | | raw SQL | 12 | not applied | whatever the statement lists | +A further 2 `createQueryBuilder` calls are not listed: they carry `.update()` and are write statements, which load nothing. + Among the query builders, the field list is what decides whether anything is actually saved: | | Sites | | --- | ---: | | `.select([...])` — an explicit field list | **1** | | `.select('alias')` — selects the root alias, **loads every column** | 105 | -| no `select` at all — loads every column | 25 | +| no `select` at all — loads every column | 23 | `.select('alias')` is the trap: it reads like a projection but the argument is the entity alias, not a field list. Such a query still loads every column of the root entity — it merely avoids the eager relations. ## Measurements -Columns were measured against the real entity metadata by building the query and counting its SELECT list — 784 of 1114 sites. +Columns were measured against the real entity metadata by building the query and counting its SELECT list — 782 of 1112 sites. -- **349 are exact**: the `relations` tree is written at the call site. -- **435 are lower bounds**: the tree arrives as a parameter, so only the base query is visible here. `transaction.service.ts` is the clearest case — its callers pass trees reaching well over a thousand columns. +- **348 are exact**: the `relations` tree is written at the call site. +- **434 are lower bounds**: the tree arrives as a parameter, so only the base query is visible here. `transaction.service.ts` is the clearest case — its callers pass trees reaching well over a thousand columns. - 330 could not be measured: no resolvable target entity, or raw SQL. -Median across measured sites: **118 columns**. 14 sites exceed 1000, 77 exceed 500, 409 exceed 100. +Median across measured sites: **123 columns**. 14 sites exceed 1000, 77 exceed 500, 409 exceed 100. Postgres refuses a statement with more than 1664 columns. That limit is what broke every invoice and receipt in production once a single new column was added elsewhere. @@ -696,7 +698,6 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | 15 | 0 | find | `WalletApp` | `subdomains/core/payment-link/services/wallet-app.service.ts:24` | `WalletAppService.getRecommendedWalletApps` | | 15 | 0 | find | `WalletApp` | `subdomains/core/payment-link/services/wallet-app.service.ts:28` | `WalletAppService.getWalletAppById` | | 15 | 0 | query-builder (nur-alias) | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:284` | `BankDataService.getBankDataByKey` | -| 15 | 0 | query-builder (ohne-select) | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:385` | `BankDataService.updateUserBankData` | | 15 | 0 | query-builder (nur-alias) | `BankData` | `subdomains/generic/user/models/bank-data/bank-data.service.ts:493` | `BankDataService.getPendingReviewSummary` | | 15 | 0 | find | `AktionariatRegistration` | `subdomains/supporting/realunit/realunit.service.ts:2830` | `RealUnitService.getRegisteredWalletAddresses` | | 14 | 0 | find | `ScorechainScreening` | `integration/scorechain/repositories/scorechain-screening.repository.ts:18` | `ScorechainScreeningRepository.getByObjectIds` | @@ -765,7 +766,6 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:244` | `LogRepository.getFinancialLogs` | | 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:688` | `LogRepository.assertEmptyResultIsEndOfData` | | 11 | 0 | query-builder (feldliste) | `Log` | `subdomains/supporting/log/log.repository.ts:699` | `LogRepository.getFinancialLogValidityChangeSet` | -| 11 | 0 | query-builder (ohne-select) | `Log` | `subdomains/supporting/log/log.repository.ts:722` | `LogRepository.async` | | 11 | 0 | find | `Log` | `subdomains/supporting/log/log.service.ts:51` | `LogService.update` | | 11 | 0 | find | `Log` | `subdomains/supporting/log/log.service.ts:131` | `LogService.getLog` | | 11 | 0 | find | `Log` | `subdomains/supporting/log/log.service.ts:135` | `LogService.maxEntity` | diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index 6f192afb9b..e3f28daf39 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -12,8 +12,9 @@ This service loads far more data than it returns. Measured against the real enti render a PDF containing a handful of values. That query sat exactly on Postgres' limit of 1,664 columns per statement, which is why a single new column added elsewhere (`settlementEventId` on `transaction_request`) broke every invoice and receipt in production until it was fixed. -- Across the endpoints where both sides can be measured, the median endpoint loads **16 columns - per field it returns**; fourteen exceed 100×. +- Of the 533 endpoints, **432 reach at least one load site that fetches whole rows**; 97 read + nothing at all, and **2 read only the fields they return**. The widest query a fetching endpoint + can trigger is 308 columns at the median, and 19 of them exceed 1,000. The column limit was the symptom, not the cause. Loading a thousand columns to return one is equally wasteful under a limit of 4,096 — it simply would not have failed yet. @@ -28,9 +29,11 @@ and one on `LimitRequest` **434 across 15** — before any `relations` option is decision what to load therefore lives in the entity definition, not at the call site, and no call site can see what it triggers. -**No read model.** 368 load sites request whole object graphs; 24 use a `select` projection. The -same entities serve persistence, business logic and pure output paths such as invoices, receipts, -history and exports — which need fields, not objects. +**No read model.** Of the 1,112 load sites in this repository, **exactly one** names the columns +it needs. The rest request whole rows: 971 through the `find` family, and of the 129 query +builders, 105 pass the root alias to `.select(...)` — which reads like a projection but is not — +while 24 pass no select at all. The same entities serve persistence, business logic and pure +output paths such as invoices, receipts, history and exports — which need fields, not objects. ## Vocabulary @@ -44,13 +47,15 @@ history and exports — which need fields, not objects. | **Read model** | A separate model optimised for reading. Introducing projections for read paths is a small step towards one. | Note that eager relations apply to the `find*` family, **not** to `createQueryBuilder` and not to -raw SQL. [load-sites.md](load-sites.md) records that mechanism for each of the 1114 load sites, +raw SQL. [load-sites.md](load-sites.md) records that mechanism for each of the 1,112 load sites, together with the measured column count. -Deliberately **not** recorded per endpoint: an endpoint reaches several load sites — a permission -check, a lookup, the actual query — so a single value per endpoint would have to take the maximum -over all of them and would then call an endpoint "eager" whose actual data path is raw SQL. The -load site is the level at which the statement is unambiguous. +[endpoints.md](endpoints.md) summarises this per endpoint, as the union over every load site the +endpoint can reach. That column answers one question only — *does this endpoint load more than it +needs* — and any single offending site is enough to answer yes. It deliberately says nothing about +where the bulk of the work happens: an endpoint whose own query is raw SQL is still marked when a +permission check on the way loads a full row. For that question the load site is the level at +which the statement is unambiguous, which is why both documents exist. ## What we intend to change From 1f921f306990ff966545ff2f976535a0b02d3013 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 03:51:03 +0200 Subject: [PATCH 15/19] Record deprecation, name the judgement calls, exclude non-reading statements Completes the inventory of the current state. Adds a deprecation column. 24 handlers carry @ApiOperation({ deprecated: true }), 21 of which fetch whole rows. This is what the duplicated paths are about, and it does not follow the version: GET /kyc/countries is marked on both the v1 and the v2 handler. Lists the 27 endpoints whose classification rests on reading the source rather than on the call graph, each with its reason. Their call chains end at a target chosen at runtime - a strategy registry, an exchange client, an in-memory cache - so the judgement was made by hand. Recording it makes it checkable instead of invisible. States the limits of the classification in numbers rather than in prose: 435 of 533 endpoints rest on a call graph that is not fully resolved, which is why 432 is a lower bound and not an exact figure; all 97 endpoints marked as reading nothing are fully resolved; 3 endpoints have no measured column width. Notes that KycController, KycClientController and KycService each exist twice, so a row is identified by its file and not by the handler name alone. Excludes statements that load nothing from the load-site inventory: 2 query builders carrying .update(), 6 advisory locks and 1 raw INSERT. 1105 sites remain. Corrects two entries in the load-site table. SQL keywords inside template literals were read as method signatures, which put THEN in the method column; template contents are now blanked before the signature scan. Sites with no enclosing method printed None and now print a dash. Corrects the count of reads that name their columns. It is six, not one: the query builder with an explicit field list plus the five raw statements, each of which lists its columns. The test definition applies to five of them - the sixth takes its field list from the request. --- CONTRIBUTING.md | 2 +- docs/endpoints.md | 1124 +++++++++++++++++---------------- docs/load-sites.md | 51 +- docs/read-path-projections.md | 34 +- 4 files changed, 634 insertions(+), 577 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1bcd1d12e7..18b78bfb84 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -528,7 +528,7 @@ To verify a change, compare against the routes the framework logs at startup: ev - the `find` family applies eager relations and expands them recursively — a plain `findOne()` on `UserData` already selects 253 columns across 8 joins - `createQueryBuilder` does not, but still loads every column of the root entity unless `.select([...])` narrows it - `.select('alias')` is **not** a projection — the argument is the entity alias, not a field list -- a query builder carrying `.update()`, `.delete()` or `.insert()` is a write statement and loads nothing — it is not part of that inventory +- a query builder carrying `.update()`, `.delete()` or `.insert()` is a write statement and loads nothing — the same goes for a raw `SELECT pg_advisory_xact_lock(...)`, which returns no rows; neither is part of that inventory See [docs/read-path-projections.md](docs/read-path-projections.md) for what follows from that. diff --git a/docs/endpoints.md b/docs/endpoints.md index 957f1a32c7..5def97e752 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -7,6 +7,7 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller | Column | Meaning | | ------ | ------- | | **Ver** | API version in the URL. `1` is the default and needs no decorator; `2` comes from `@Controller({ version: [...] })`; `neutral` marks `@Version(VERSION_NEUTRAL)`, which is served without a version prefix. Six paths exist twice under different versions — an older, deprecated handler and its replacement — so the version is what makes a row unique. | +| **Dep** | `yes` when the handler carries `@ApiOperation({ deprecated: true })` | | **Swagger** | `public` — in the Swagger schema; `hidden` — carries `@ApiExcludeEndpoint` | | **Data access** | What the endpoint reads, taken over **all** load sites it can reach — a permission check, a lookup and the actual query all count. `whole rows` — at least one of them fetches every column of an entity; `projected` — every read names the fields it needs; `caller-defined` — the field list comes from the request, and without one every column is loaded; `none` — no read at all (external services, in-memory caches, files, pure write paths). | | **Max cols** | Widest single query the endpoint can trigger, measured against the real entity metadata. `—` means no measurable site, not zero. | @@ -28,14 +29,63 @@ Among the 432 that fetch whole rows, the widest query they can trigger is **308 `Data access` is a statement about the **union** of everything an endpoint touches, not about one designated data path. An endpoint marked `whole rows` may well answer from raw SQL and still be marked, because a permission check on the way loads a full `UserData` row. That is deliberate: the question the column answers is *does this endpoint load more than it needs*, and for that any one offending site is enough. It does **not** say where the bulk of the work happens — [load-sites.md](load-sites.md) does, per site and with measured column counts. -The 432 is a lower bound. Where a call could not be attributed statically — a target chosen at runtime, a method reached through inheritance — the endpoint keeps whatever was already found. Resolving more can only add endpoints to this group, never remove them. The 97 endpoints marked `none` are the opposite: for those the call graph resolved completely, or the remaining target was read in the source and recorded as a deliberate exception (external SDKs, strategy registries, in-memory price caches). +### Deprecation + +24 handlers carry `@ApiOperation({ deprecated: true })`: 21 of them fetch whole rows, 3 read nothing. They are what the duplicated paths are about — an older handler and its replacement served side by side under different versions. Note that deprecation does not follow the version: `GET /kyc/countries` is marked on **both** the v1 and the v2 handler. + +### Limits of this classification + +Stated exactly, so the numbers can be checked rather than believed: + +- **435 of 533 endpoints rest on a call graph that is not fully resolved** — a target chosen at runtime, a method reached through inheritance, an entity manager handed into a transaction callback. This does not weaken the `whole rows` group: an unresolved edge can only add load sites, never remove one, so 432 is a lower bound. +- All 97 endpoints marked `none` are the opposite case: their graph resolved completely, or the remaining target was read in the source (27 of them, listed below). None of them rests on an unresolved edge. +- The 2 `projected` and 2 `caller-defined` endpoints do each carry an unresolved edge — a call through the entity manager inside a transaction callback. Their reads were read in the source, but the classification is not proven exhaustive the way the `none` group is. +- 3 endpoints in the `whole rows` group have no measured column count and show `—`: `POST /payIn/retry`, `GET /support/issue/:id/message/:messageId/file`, `PUT /userData/:id/volumes`. The classification holds; only the width is unknown. + +### Two controller classes may share a name + +`KycController`, `KycClientController` and `KycService` each exist twice, in different subdomains: the deprecated v1 generation under `generic/user/models/kyc/` and the current one under `generic/kyc/`. Rows are therefore not identified by the handler column alone — the file column is what separates them. The same holds for the 57 strategy classes that repeat a name once per family (`BitcoinStrategy` exists eight times), though none of those serves a route. + +### Endpoints resolved by reading the source + +For 27 endpoints the call graph ends at a target chosen at runtime. Each was read in the source and recorded here rather than left unknown, so the judgement is visible and can be challenged: + +| Endpoint | Why it reads nothing | +| -------- | -------------------- | +| `POST /alchemy/addressWebhook` | HMAC check against a key held in memory | +| `GET /alchemy/addresses/:webhookId` | third-party SDK (`alchemy.notify`), no table of ours | +| `GET /auth/alby` | builds an OAuth URL; the pending state lives in memory | +| `POST /bank/yapeal/webhook` | hands off through an rxjs subject — the loading happens in the subscriber, not in the request path | +| `GET /dex/check-liquidity` | strategy registry; no strategy under `dex/strategies/{check,purchase,sell}-liquidity` contains a load site | +| `POST /dex/purchase-liquidity` | same registry as `GET /dex/check-liquidity` | +| `POST /dex/reserve-liquidity` | same registry as `GET /dex/check-liquidity` | +| `GET /dex/transfer-completion` | same registry as `GET /dex/check-liquidity` | +| `POST /dex/transfer-liquidity` | same registry as `GET /dex/check-liquidity` | +| `GET /exchange/:exchange/balances` | callback onto an exchange client, no entity involved | +| `GET /exchange/:exchange/price` | same callback as `GET /exchange/:exchange/balances` | +| `GET /exchange/:exchange/trade` | same callback as `GET /exchange/:exchange/balances` | +| `POST /exchange/:exchange/trade` | same callback as `GET /exchange/:exchange/balances` | +| `GET /exchange/:exchange/trade/history` | same callback as `GET /exchange/:exchange/balances` | +| `POST /exchange/:exchange/withdraw` | same callback as `GET /exchange/:exchange/balances` | +| `GET /exchange/:exchange/withdraw/:id` | same callback as `GET /exchange/:exchange/balances` | +| `POST /paymentLink/integrations/kucoin/webhook/cancel` | signature check; the services it reaches contain no load site | +| `POST /paymentLink/integrations/kucoin/webhook/success` | signature check; the services it reaches contain no load site | +| `POST /payout` | a factory builds the entity, then `save()` — a pure write path | +| `GET /realunit/brokerbot/buyPrice` | price from an in-memory cache, otherwise from the chain | +| `GET /realunit/brokerbot/buyShares` | same cache as `GET /realunit/brokerbot/buyPrice` | +| `GET /realunit/brokerbot/price` | same cache as `GET /realunit/brokerbot/buyPrice` | +| `GET /realunit/quote/buyPrice` | same cache as `GET /realunit/brokerbot/buyPrice` | +| `GET /realunit/quote/buyShares` | same cache as `GET /realunit/brokerbot/buyPrice` | +| `GET /realunit/quote/price` | same cache as `GET /realunit/brokerbot/buyPrice` | +| `POST /tatum/addressWebhook` | signature check, then a third-party SDK | +| `GET /version` | reads `dist/version.txt` from disk | [read-path-projections.md](read-path-projections.md) explains the background, the criteria for converting an endpoint, and how the result is tested. ## How the values are produced - **Endpoints** — from the routing decorators in `src/**/*.controller.ts`, each attributed to the `@Controller` scope preceding it. Decorators between the route and the method are skipped by counting parentheses, so a multi-line `@UseGuards(` cannot be mistaken for the handler. Cross-checked in both directions against the routes the framework registers at startup: all 526 distinct method/path pairs match, with no entry left over on either side. -- **Ver** — from `@Version` on the handler, otherwise from the `@Controller` scope, otherwise the configured default. Verified against production access logs: `/v1/kyc/admin/…` and `/v2/kyc/client/…` each appear only under the version recorded here. +- **Ver** — from `@Version` on the handler, otherwise from the `@Controller` scope, otherwise the configured default. Note that the version follows the class, not the folder: the controllers under `generic/kyc/` are not uniformly v2 — `KycAdminController` carries no version decorator and is therefore served under the default. - **Data access** — the union over the call graph, following injected fields, locally constructed repositories and multi-line call chains. `find*` pulls in eager relations, `createQueryBuilder` does not, `.select([...])` is the only form that narrows the column list, and `.update()/.delete()/.insert()` are writes that load nothing. - **Max cols** — the query is built from the real entity metadata and its SELECT list counted. Not an estimate. @@ -45,540 +95,540 @@ The 432 is a lower bound. Where a call could not be attributed statically — a ## Endpoints -| Method | Ver | Path | Swagger | Data access | Max cols | Handler | File | -| ------ | --- | ---- | ------- | ----------- | -------: | ------- | ---- | -| GET | neutral | `/` | public | none | — | `AppController.home` | `app.controller.ts` | -| POST | 1 | `/CustodyProvider` | public | none | — | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| PUT | 1 | `/CustodyProvider/:id` | hidden | whole rows | 6 | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| POST | 1 | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | `/admin/mail` | public | whole rows | 13 | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | `/admin/payout` | hidden | whole rows | 156 | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | `/admin/sendLetter` | hidden | none | — | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | `/alchemy/addressWebhook` | public | none | — | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | 1 | `/alchemy/addresses/:webhookId` | public | none | — | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | 1 | `/app` | public | whole rows | 6 | `AppController.createRefNew` | `app.controller.ts` | -| GET | 1 | `/app/:app` | hidden | whole rows | 6 | `AppController.redirectToStore` | `app.controller.ts` | -| GET | 1 | `/app/advertisements` | hidden | none | — | `AppController.getAds` | `app.controller.ts` | -| GET | 1 | `/app/announcements` | public | none | — | `AppController.getAnnouncements` | `app.controller.ts` | -| GET | 1 | `/app/settings/flags` | hidden | none | — | `AppController.getFlags` | `app.controller.ts` | -| GET | 1 | `/asset` | public | whole rows | 33 | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | -| PUT | 1 | `/asset/:id` | public | whole rows | 33 | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | -| POST | 1 | `/auth` | public | whole rows | 643 | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/2fa` | hidden | whole rows | 253 | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | `/auth/2fa` | public | whole rows | 253 | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | `/auth/2fa/verify` | public | whole rows | 253 | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/alby` | hidden | none | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/alby/redirect/:id` | hidden | whole rows | 643 | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/challenge` | hidden | whole rows | 20 | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | `/auth/mail` | hidden | whole rows | 643 | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/mail/confirm` | public | whole rows | 470 | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/mail/redirect` | hidden | whole rows | 643 | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | `/auth/signIn` | hidden | whole rows | 643 | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/signMessage` | public | none | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | `/auth/signUp` | public | whole rows | 643 | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/auth/verifySignature` | public | whole rows | 6 | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | `/balance/pdf` | public | whole rows | 40 | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | 1 | `/balance/pdf/blockchains` | public | none | — | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | 1 | `/bank` | public | whole rows | 46 | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| PUT | 1 | `/bank/receiveIban` | public | whole rows | 101 | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| POST | 1 | `/bank/yapeal/webhook` | public | none | — | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | -| GET | 1 | `/bankAccount` | public | whole rows | 261 | `BankAccountController.getAllUserBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | 1 | `/bankAccount` | public | whole rows | 261 | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | 1 | `/bankAccount/:id` | public | whole rows | 261 | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | 1 | `/bankAccount/bic` | hidden | whole rows | 26 | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | 1 | `/bankAccount/iban` | public | whole rows | 26 | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | 1 | `/bankData/:id` | public | whole rows | 31 | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| PUT | 1 | `/bankData/:id/nameCheck` | hidden | whole rows | 276 | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| POST | 1 | `/bankTx` | public | whole rows | 61 | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | 1 | `/bankTx/:id` | hidden | whole rows | 1051 | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| DELETE | 1 | `/bankTx/:id/buyCrypto` | hidden | whole rows | 247 | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | 1 | `/bankTxRepeat/:id` | public | whole rows | 308 | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | -| PUT | 1 | `/bankTxReturn/:id` | public | whole rows | 438 | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | 1 | `/bankTxReturn/:id/refund` | hidden | whole rows | 727 | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | 1 | `/blockchain/balances` | public | whole rows | 33 | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | 1 | `/blockchain/broadcast` | public | none | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | 1 | `/blockchain/transaction` | public | whole rows | 33 | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| GET | 1 | `/buy` | public | whole rows | 308 | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | 1 | `/buy` | hidden | whole rows | 364 | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | 1 | `/buy/:id` | hidden | whole rows | 308 | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | `/buy/:id` | public | whole rows | 308 | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | 1 | `/buy/:id/history` | hidden | whole rows | 497 | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | `/buy/paymentInfos` | public | whole rows | 364 | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | `/buy/paymentInfos/:id/confirm` | public | whole rows | 504 | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | `/buy/paymentInfos/:id/invoice` | public | whole rows | 504 | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | 1 | `/buy/personalIban` | public | whole rows | 331 | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | 1 | `/buy/personalIban` | public | whole rows | 253 | `BuyController.createPersonalIban` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | `/buy/quote` | hidden | whole rows | 143 | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | `/buyCrypto/:id` | hidden | whole rows | 1090 | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| DELETE | 1 | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 422 | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 1090 | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | 1 | `/buyCrypto/:id/refund` | hidden | whole rows | 1051 | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | 1 | `/buyCrypto/:id/scorechain` | hidden | whole rows | 717 | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | 1 | `/buyCrypto/:id/webhook` | public | whole rows | 844 | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | `/buyCrypto/refVolumes` | hidden | whole rows | 77 | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | `/buyCrypto/volumes` | hidden | whole rows | 487 | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | `/buyFiat/:id` | hidden | whole rows | 1033 | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| DELETE | 1 | `/buyFiat/:id/amlCheck` | hidden | whole rows | 490 | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | 1 | `/buyFiat/:id/amlCheck` | hidden | whole rows | 1033 | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | 1 | `/buyFiat/:id/refund` | hidden | whole rows | 803 | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | 1 | `/buyFiat/:id/scorechain` | hidden | whole rows | 517 | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | 1 | `/buyFiat/:id/webhook` | public | whole rows | 644 | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | 1 | `/buyFiat/refVolumes` | hidden | whole rows | 77 | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | 1 | `/buyFiat/volumes` | hidden | whole rows | 308 | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| GET | 1 | `/country` | public | whole rows | 23 | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | -| GET | 1 | `/cryptoRoute` | public | none | — | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| POST | 1 | `/cryptoRoute` | hidden | none | — | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | 1 | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| PUT | 1 | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | 1 | `/cryptoRoute/:id/history` | hidden | none | — | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | 1 | `/custody` | public | whole rows | 253 | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | 1 | `/custody` | public | whole rows | 364 | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | 1 | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | 1 | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | `/custody/account/:id/access` | public | whole rows | 238 | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | 1 | `/custody/account/:id/access` | public | whole rows | 253 | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| DELETE | 1 | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | 1 | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | `/custody/account/:id/balance` | public | whole rows | 253 | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | `/custody/account/:id/history` | public | whole rows | 253 | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | `/custody/account/:id/order` | public | whole rows | 253 | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | `/custody/account/:id/pdf` | public | whole rows | 253 | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | 1 | `/custody/admin/order/:id/approve` | public | whole rows | 217 | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | `/custody/admin/orders` | public | whole rows | 525 | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| PUT | 1 | `/custody/admin/user/:id/balance` | public | whole rows | 308 | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | `/custody/history` | public | whole rows | 253 | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | `/custody/order` | public | whole rows | 19 | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | 1 | `/custody/order` | public | whole rows | 364 | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | 1 | `/custody/order/:id/confirm` | public | whole rows | 525 | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | `/custody/pdf` | public | whole rows | 253 | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | `/dashboard/accounting/ledger/accounts` | public | whole rows | 54 | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | whole rows | 30 | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | `/dashboard/accounting/ledger/equity-comparison` | hidden | whole rows | 54 | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | `/dashboard/accounting/ledger/margin` | hidden | whole rows | 11 | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | `/dashboard/accounting/ledger/reconciliation` | hidden | whole rows | 54 | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | `/dashboard/accounting/ledger/suspense` | hidden | whole rows | 11 | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | `/dashboard/financial/changes` | hidden | whole rows | 11 | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | `/dashboard/financial/changes/latest` | hidden | whole rows | 11 | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | `/dashboard/financial/latest` | hidden | none | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | `/dashboard/financial/log` | public | whole rows | 33 | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | `/dashboard/financial/reconciliation` | public | whole rows | 229 | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | 1 | `/dashboard/financial/reconciliation/overview` | hidden | whole rows | 229 | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | 1 | `/dashboard/financial/ref-recipients` | hidden | whole rows | 25 | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| POST | 1 | `/deposit` | public | whole rows | 6 | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| PUT | 1 | `/deposit/lightningWebhook` | hidden | none | — | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| GET | 1 | `/deuro/info` | public | whole rows | 11 | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | -| GET | 1 | `/dex/check-liquidity` | public | none | — | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| PUT | 1 | `/dex/complete-orders` | hidden | whole rows | 156 | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | 1 | `/dex/liquidity-after-purchase` | hidden | whole rows | 156 | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | 1 | `/dex/purchase-liquidity` | hidden | none | — | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | 1 | `/dex/reserve-liquidity` | hidden | none | — | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | 1 | `/dex/transfer-completion` | hidden | none | — | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | 1 | `/dex/transfer-liquidity` | hidden | none | — | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | 1 | `/exchange/:exchange/balances` | public | none | — | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | `/exchange/:exchange/price` | hidden | none | — | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | -| PUT | 1 | `/exchange/:exchange/sync` | hidden | whole rows | 40 | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | 1 | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | `/exchange/:exchange/trade/history` | hidden | none | — | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | 1 | `/exchange/:exchange/withdraw` | hidden | none | — | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | `/exchange/:exchange/withdraw/:id` | public | none | — | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | `/exchange/trade/:id` | hidden | none | — | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | 1 | `/faucet` | public | whole rows | 308 | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | -| POST | 1 | `/fee` | public | whole rows | 65 | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | -| GET | 1 | `/fiat` | public | whole rows | 23 | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | -| POST | 1 | `/fiatOutput` | public | whole rows | 377 | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| PUT | 1 | `/fiatOutput/:id` | hidden | whole rows | 59 | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| GET | 1 | `/frankencoin/info` | public | whole rows | 11 | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | 1 | `/gs/db` | public | caller-defined | 13 | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | 1 | `/gs/db/custom` | hidden | caller-defined | — | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | 1 | `/gs/debug` | hidden | projected | — | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | -| POST | 1 | `/gs/evm/bridgeApproval` | hidden | whole rows | 33 | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | `/gs/evm/coinTransaction` | hidden | whole rows | 6 | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | `/gs/evm/contractApproval` | hidden | whole rows | 33 | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | `/gs/evm/contractTransaction` | hidden | none | — | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | `/gs/evm/rawTransaction` | public | whole rows | 6 | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | `/gs/evm/tokenTransaction` | hidden | whole rows | 33 | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| GET | 1 | `/gs/support` | hidden | whole rows | 907 | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | -| GET | neutral | `/health` | public | none | — | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | `/health/banking` | public | none | — | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | `/health/external` | public | none | — | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | `/health/liquidity` | public | none | — | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | `/health/nodes` | public | none | — | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | `/health/payment` | public | none | — | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | 1 | `/history` | public | whole rows | 1363 | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | 1 | `/history/:exportType` | hidden | whole rows | 1363 | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | 1 | `/history/csv` | hidden | none | — | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| POST | 1 | `/history/csv` | public | whole rows | 1363 | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | 1 | `/ikna/bfs/:id` | hidden | none | — | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | -| POST | 1 | `/ikna/bfs/address` | public | none | — | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | 1 | `/ikna/tag` | hidden | none | — | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | 1 | `/juice/info` | public | whole rows | 11 | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | -| GET | 1 | `/kyc` | public | whole rows | 351 | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 2 | `/kyc` | public | whole rows | 351 | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 1 | `/kyc` | public | whole rows | 351 | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| PUT | 2 | `/kyc` | public | whole rows | 364 | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 2 | `/kyc/2fa` | public | whole rows | 253 | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | `/kyc/2fa` | public | whole rows | 253 | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | `/kyc/2fa/verify` | public | whole rows | 253 | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 1 | `/kyc/:code` | public | whole rows | 351 | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | 1 | `/kyc/:code` | public | whole rows | 351 | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | `/kyc/:code/countries` | public | whole rows | 351 | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | `/kyc/:id/documents` | public | whole rows | 328 | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | `/kyc/:id/documents/:type` | public | whole rows | 328 | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 2 | `/kyc/:step` | public | whole rows | 364 | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| DELETE | 1 | `/kyc/admin/blacklist/ip` | hidden | none | — | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | `/kyc/admin/blacklist/ip` | hidden | whole rows | 12 | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | 1 | `/kyc/admin/ident/file/sync` | hidden | whole rows | 243 | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | 1 | `/kyc/admin/log` | hidden | whole rows | 253 | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | `/kyc/admin/log/:id` | hidden | whole rows | 17 | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | `/kyc/admin/nameCheck/:id` | public | whole rows | 245 | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | `/kyc/admin/step/:id` | hidden | whole rows | 385 | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | 1 | `/kyc/admin/webhook` | hidden | whole rows | 364 | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| GET | 2 | `/kyc/client/payments` | public | whole rows | 1092 | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | `/kyc/client/users` | public | whole rows | 20 | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | `/kyc/client/users/:id/documents` | public | whole rows | 78 | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | `/kyc/client/users/:id/documents/:type` | public | whole rows | 78 | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | `/kyc/client/users/:id/payments` | public | whole rows | 1092 | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 1 | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 2 | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| DELETE | 2 | `/kyc/data/:type/:id` | hidden | whole rows | 351 | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/additional/:id` | public | whole rows | 364 | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/address/:id` | public | whole rows | 364 | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/authority/:id` | public | whole rows | 364 | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/beneficial/:id` | public | whole rows | 364 | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/confirmation/:id` | public | whole rows | 364 | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/contact/:id` | hidden | whole rows | 364 | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 2 | `/kyc/data/financial/:id` | public | whole rows | 351 | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/financial/:id` | public | whole rows | 364 | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/legal/:id` | public | whole rows | 364 | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/name/:id` | public | whole rows | 364 | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/nationality/:id` | public | whole rows | 364 | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/operational/:id` | public | whole rows | 364 | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/owner/:id` | public | whole rows | 364 | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/payment/:id` | public | whole rows | 364 | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/personal/:id` | public | whole rows | 364 | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/phone/:id` | public | whole rows | 364 | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/recall/:id` | public | whole rows | 364 | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/recommendation/:id` | public | whole rows | 643 | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/residence/:id` | public | whole rows | 364 | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/signatory/:id` | public | whole rows | 364 | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/data/statutes/:id` | public | whole rows | 364 | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 2 | `/kyc/file/:id` | hidden | whole rows | 264 | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | `/kyc/ident/manual/:id` | hidden | whole rows | 364 | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | `/kyc/ident/sumsub` | public | whole rows | 364 | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| DELETE | 2 | `/kyc/transfer` | hidden | whole rows | 351 | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | `/kyc/transfer` | hidden | whole rows | 364 | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 1 | `/kyc/transfer` | public | whole rows | 364 | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | `/kyc/users` | public | whole rows | 328 | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | `/language` | public | whole rows | 7 | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | -| PUT | 1 | `/limitRequest/:id` | public | whole rows | 434 | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | -| GET | 1 | `/liquidityManagement/balance` | public | whole rows | 40 | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | -| PUT | 1 | `/liquidityManagement/order/:id/resolveUncertain` | hidden | whole rows | 139 | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | 1 | `/liquidityManagement/order/in-progress` | public | whole rows | 139 | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | 1 | `/liquidityManagement/pipeline/:id/status` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | `/liquidityManagement/pipeline/buy` | public | whole rows | 112 | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | 1 | `/liquidityManagement/pipeline/in-progress` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | `/liquidityManagement/pipeline/sell` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | 1 | `/liquidityManagement/pipeline/stopped` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | `/liquidityManagement/rule` | public | whole rows | 83 | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | 1 | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PUT | 1 | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | 1 | `/liquidityManagement/rule/:id/deactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | 1 | `/liquidityManagement/rule/:id/reactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | 1 | `/liquidityManagement/rule/:id/settings` | hidden | whole rows | 83 | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | 1 | `/lnurla` | public | whole rows | 643 | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| POST | 1 | `/lnurla` | public | none | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | 1 | `/lnurla/status` | public | none | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | 1 | `/lnurld/:id` | public | none | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | 1 | `/lnurld/cb/:id/:var` | public | none | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | 1 | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| POST | 1 | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| DELETE | 1 | `/lnurlp/cancel/:id` | public | whole rows | 545 | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | `/lnurlp/cb/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | `/lnurlp/tx/:id` | public | whole rows | 545 | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | `/lnurlp/wait/:id` | public | whole rows | 545 | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | `/lnurlw/:id` | public | none | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| GET | 1 | `/lnurlw/cb/:id` | public | none | — | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | 1 | `/log` | public | whole rows | 11 | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | -| PUT | 1 | `/log/:id` | hidden | whole rows | 11 | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | -| PUT | 1 | `/log/financial/validity` | hidden | projected | 11 | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | -| GET | 1 | `/monitoring/data` | public | none | — | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | -| POST | 1 | `/monitoring/data` | hidden | none | — | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | -| GET | 1 | `/mros` | hidden | whole rows | 243 | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | 1 | `/mros` | public | whole rows | 253 | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | -| GET | 1 | `/mros/:id` | hidden | whole rows | 243 | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | -| PUT | 1 | `/mros/:id` | hidden | whole rows | 98 | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | 1 | `/node/:node/:mode/cmd` | hidden | none | — | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | `/node/:node/:mode/rpc` | hidden | none | — | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | 1 | `/node/:node/:mode/tx/:txId` | hidden | none | — | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | `/node/:node/cmd` | hidden | none | — | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | `/node/:node/rpc` | public | none | — | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | 1 | `/node/:node/tx/:txId` | hidden | none | — | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | `/notification/send-mail` | public | whole rows | 13 | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | 1 | `/payIn` | public | whole rows | 545 | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | 1 | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | 1 | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | 1 | `/payIn/poll` | hidden | none | — | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | 1 | `/payIn/retry` | hidden | whole rows | — | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| GET | 1 | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | `/paymentLink` | public | whole rows | 545 | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | 1 | `/paymentLink/:id` | hidden | whole rows | 195 | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink/:id` | hidden | whole rows | 513 | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink/:id/pos` | hidden | whole rows | 513 | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink/assign` | public | whole rows | 513 | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/paymentLink/history` | public | whole rows | 545 | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | `/paymentLink/integration/binance/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | `/paymentLink/integration/binance/webhook` | hidden | whole rows | 545 | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | `/paymentLink/integration/kucoin/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| GET | 1 | `/paymentLink/locations` | public | whole rows | 513 | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | `/paymentLink/merchant` | public | whole rows | 253 | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | 1 | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/paymentLink/payment` | hidden | whole rows | 545 | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink/payment/:id` | public | whole rows | 545 | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink/payment/confirm` | public | whole rows | 513 | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/paymentLink/payment/wait` | public | whole rows | 513 | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | `/paymentLink/pos` | public | whole rows | 513 | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/paymentLink/recipient` | public | whole rows | 472 | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/paymentLink/standard` | public | none | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | 1 | `/paymentLink/standard/:id` | public | none | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | 1 | `/paymentLink/stickers` | hidden | whole rows | 513 | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/paymentLink/walletApp` | public | whole rows | 33 | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | 1 | `/paymentLink/walletApp/:id` | public | whole rows | 33 | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | 1 | `/paymentLink/walletApp/recommended` | public | whole rows | 33 | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | 1 | `/payout` | public | none | — | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | 1 | `/payout/completion` | hidden | whole rows | 123 | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | 1 | `/payout/retry` | hidden | whole rows | 123 | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | 1 | `/payout/speedup` | hidden | whole rows | 123 | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | neutral | `/pl` | public | whole rows | 545 | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | -| GET | 1 | `/plp` | public | whole rows | 545 | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | `/pricing` | hidden | none | — | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| PUT | 1 | `/pricing` | hidden | whole rows | 53 | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | 1 | `/pricing/price` | public | whole rows | 33 | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | 1 | `/realunit/account/:address` | public | whole rows | 40 | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/account/:address/history` | public | none | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/admin/quotes` | public | whole rows | 112 | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/admin/quotes/:id/confirm-payment` | hidden | whole rows | 1051 | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/admin/registration/:id/forward` | hidden | whole rows | 493 | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/admin/transactions` | hidden | whole rows | 362 | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | `/realunit/balance/pdf` | public | whole rows | 308 | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/brokerbot/buyPrice` | public | none | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/brokerbot/buyShares` | public | none | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/brokerbot/info` | public | whole rows | 33 | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/brokerbot/price` | public | none | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/brokerbot/sellPrice` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/brokerbot/sellShares` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/buy` | public | whole rows | 364 | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/buy/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/compliance/customers` | public | whole rows | 308 | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | `/realunit/compliance/customers/:id` | hidden | whole rows | 826 | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | `/realunit/compliance/customers/:id/dossier` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | `/realunit/compliance/customers/:id/files` | hidden | whole rows | 264 | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | `/realunit/compliance/customers/:id/files/:uid` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | `/realunit/confirm-aktionariat` | public | whole rows | 15 | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/holders` | public | none | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| PUT | 1 | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| GET | 1 | `/realunit/pay/:id/status` | public | whole rows | 32 | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/pay/submit` | public | whole rows | 545 | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/pay/unsigned-transaction` | public | whole rows | 545 | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/price` | public | whole rows | 33 | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/price/history` | public | whole rows | 40 | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/quote/buyPrice` | public | none | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/quote/buyShares` | public | none | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/quote/info` | public | whole rows | 33 | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/quote/price` | public | none | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/quote/sellPrice` | public | whole rows | 308 | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/quote/sellShares` | public | whole rows | 308 | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | `/realunit/register/complete` | public | whole rows | 493 | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/register/date` | public | none | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | `/realunit/register/email` | public | whole rows | 364 | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/register/status` | public | whole rows | 308 | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | `/realunit/register/wallet` | public | whole rows | 493 | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/registration` | public | whole rows | 308 | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/sell` | public | whole rows | 308 | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/sell/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/sell/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/sell/:id/unsigned-transactions` | public | whole rows | 504 | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/support/:id` | hidden | whole rows | 421 | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/:id/data` | hidden | whole rows | 951 | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| POST | 1 | `/realunit/support/:id/message` | hidden | whole rows | 441 | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/:id/message/:messageId/file` | hidden | whole rows | 421 | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/:id/messages` | hidden | whole rows | 428 | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/activity` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/clerks` | hidden | none | — | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/counts` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/list` | public | whole rows | 99 | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | `/realunit/support/statistics` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| PUT | 1 | `/realunit/swap` | public | whole rows | 308 | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/swap/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/swap/:id/unsigned-transaction` | public | whole rows | 504 | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/tokenInfo` | public | none | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | `/realunit/transactions/receipt/multi` | public | whole rows | 308 | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | `/realunit/transactions/receipt/single` | public | whole rows | 308 | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/transfer` | public | whole rows | 308 | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | `/realunit/transfer/:id/confirm` | public | whole rows | 87 | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/realunit/wallet/status` | public | whole rows | 308 | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | `/recall` | hidden | whole rows | 174 | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | 1 | `/recall` | public | whole rows | 308 | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | 1 | `/recall/:id` | hidden | whole rows | 174 | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | -| PUT | 1 | `/recall/:id` | hidden | whole rows | 308 | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | 1 | `/recommendation` | public | whole rows | 474 | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| POST | 1 | `/recommendation` | hidden | whole rows | 364 | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | 1 | `/recommendation/:id/confirm` | hidden | whole rows | 643 | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | 1 | `/recommendation/:id/reject` | hidden | whole rows | 643 | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| GET | 1 | `/ref` | public | none | — | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | -| POST | 1 | `/reward/ref` | hidden | whole rows | 156 | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | 1 | `/reward/ref/:id` | hidden | whole rows | 234 | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| POST | 1 | `/reward/ref/manual` | hidden | whole rows | 308 | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | 1 | `/reward/ref/volumes` | public | whole rows | 308 | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| GET | 1 | `/route` | public | whole rows | 308 | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | -| PUT | 1 | `/route/:id` | hidden | whole rows | 174 | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | -| POST | 1 | `/scorechain/screening` | public | whole rows | 14 | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | -| GET | 1 | `/sell` | public | whole rows | 308 | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| POST | 1 | `/sell` | hidden | whole rows | 308 | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | `/sell/:id` | hidden | whole rows | 377 | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | `/sell/:id` | public | whole rows | 308 | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | `/sell/:id/history` | hidden | whole rows | 470 | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | `/sell/paymentInfos` | public | whole rows | 308 | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | `/sell/paymentInfos/:id/confirm` | public | whole rows | 545 | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | `/sell/paymentInfos/:id/tx` | public | whole rows | 504 | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | `/sell/quote` | hidden | whole rows | 143 | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | `/setting` | public | whole rows | 5 | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | -| PUT | 1 | `/setting/:key` | hidden | whole rows | 5 | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | -| PUT | 1 | `/setting/customSignUpFees` | hidden | none | — | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | -| PUT | 1 | `/setting/disabledProcesses` | hidden | none | — | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | -| GET | 1 | `/setting/infoBanner` | public | none | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | -| POST | 1 | `/specialExternalAccount` | public | whole rows | 7 | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | -| GET | 1 | `/statistic` | public | none | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | 1 | `/statistic/status` | public | whole rows | 5 | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | 1 | `/statistic/transactions` | public | whole rows | 419 | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | 1 | `/support` | public | whole rows | 593 | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/:id` | hidden | whole rows | 826 | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/:id/ip-log-pdf` | hidden | whole rows | 12 | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | -| POST | 1 | `/support/:id/onboarding-pdf` | hidden | whole rows | 264 | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/:id/scorechain` | hidden | whole rows | 14 | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/:id/transaction-pdf` | hidden | whole rows | 826 | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/call-queues` | hidden | none | — | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/call-queues/:queue/items` | hidden | whole rows | 672 | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/call-queues/clerks` | hidden | none | — | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/issue` | public | whole rows | 450 | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | `/support/issue` | public | whole rows | 493 | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/:id` | hidden | whole rows | 450 | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | 1 | `/support/issue/:id` | public | whole rows | 421 | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | 1 | `/support/issue/:id/close` | public | whole rows | 450 | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/:id/data` | hidden | whole rows | 951 | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | `/support/issue/:id/message` | hidden | whole rows | 441 | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/:id/message/:messageId/file` | public | whole rows | — | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/activity` | hidden | whole rows | 7 | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/clerk` | hidden | none | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/clerks` | hidden | none | — | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/counts` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | `/support/issue/escalation/telegram-bind` | hidden | whole rows | 5 | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/escalation/telegram-chats` | hidden | none | — | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | `/support/issue/escalation/telegram-test` | hidden | whole rows | 5 | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/list` | public | whole rows | 16 | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/issue/statistics` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | `/support/issue/support` | public | whole rows | 493 | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | `/support/kycFileList` | hidden | whole rows | 253 | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/kycFileStats` | hidden | whole rows | 99 | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/note` | hidden | whole rows | 9 | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | -| POST | 1 | `/support/note` | hidden | whole rows | 253 | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | -| DELETE | 1 | `/support/note/:id` | hidden | whole rows | 9 | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | -| PUT | 1 | `/support/note/:id` | hidden | whole rows | 239 | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/note/users` | hidden | whole rows | 9 | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/pending-reviews` | hidden | whole rows | 15 | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/pending-reviews/items` | hidden | whole rows | 261 | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/pending-transactions` | hidden | whole rows | 672 | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/recommendation-graph/:id/neighbors` | hidden | whole rows | 474 | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/template` | hidden | whole rows | 8 | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | -| POST | 1 | `/support/template` | hidden | whole rows | 253 | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | -| DELETE | 1 | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | -| PUT | 1 | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/transaction/:id/refund` | hidden | whole rows | 143 | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| PUT | 1 | `/support/transaction/:id/refund` | hidden | whole rows | 415 | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/support/transactionList` | hidden | whole rows | 20 | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | `/swap` | public | whole rows | 308 | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | 1 | `/swap` | hidden | whole rows | 308 | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | 1 | `/swap/:id` | hidden | whole rows | 308 | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | `/swap/:id` | public | whole rows | 396 | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | 1 | `/swap/:id/history` | hidden | whole rows | 509 | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | `/swap/paymentInfos` | public | whole rows | 308 | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | `/swap/paymentInfos/:id/confirm` | public | whole rows | 545 | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | 1 | `/swap/paymentInfos/:id/tx` | public | whole rows | 504 | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | `/swap/quote` | hidden | whole rows | 143 | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | 1 | `/tatum/addressWebhook` | public | none | — | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | -| PUT | 1 | `/trading/rule/:id` | public | whole rows | 87 | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | -| GET | 1 | `/transaction` | public | whole rows | 1363 | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | `/transaction/:id/invoice` | public | whole rows | 331 | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | `/transaction/:id/receipt` | public | whole rows | 331 | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/:id/refund` | public | whole rows | 331 | `TransactionController.getTransactionRefund` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | `/transaction/:id/refund` | public | whole rows | 487 | `TransactionController.setTransactionRefundTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | `/transaction/:id/target` | hidden | whole rows | 1051 | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/ChainReport` | hidden | whole rows | 1363 | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/CoinTracking` | public | whole rows | 1363 | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | `/transaction/admin/:id` | public | whole rows | 276 | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | 1 | `/transaction/admin/:id/stop` | hidden | whole rows | 98 | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | 1 | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| PUT | 1 | `/transaction/admin/:txId/riskAssessment/:id` | hidden | whole rows | 13 | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| GET | 1 | `/transaction/csv` | public | none | — | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | `/transaction/csv` | public | whole rows | 1363 | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/detail` | hidden | whole rows | 1363 | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | `/transaction/detail/csv` | public | whole rows | 1363 | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/detail/single` | public | whole rows | 487 | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/single` | public | whole rows | 487 | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/target` | hidden | whole rows | 134 | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | `/transaction/unassigned` | public | whole rows | 356 | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| DELETE | 1 | `/user` | public | whole rows | 344 | `UserController.deleteUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 2 | `/user` | public | whole rows | 344 | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | `/user` | public | whole rows | 328 | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 2 | `/user` | public | whole rows | 351 | `UserV2Controller.getUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | `/user` | public | whole rows | 406 | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | `/user` | public | whole rows | 351 | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | `/user/:id` | hidden | whole rows | 364 | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 1 | `/user/account` | public | whole rows | 344 | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 2 | `/user/addresses/:address` | public | whole rows | 344 | `UserV2Controller.deleteAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | `/user/addresses/:address` | public | whole rows | 351 | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | `/user/apiFilter/CT` | public | whole rows | 331 | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 1 | `/user/apiKey/CT` | public | none | — | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 1 | `/user/apiKey/CT` | public | whole rows | 253 | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 1 | `/user/change` | public | whole rows | 643 | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 1 | `/user/data` | hidden | whole rows | 406 | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | `/user/detail` | public | whole rows | 328 | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | `/user/discountCodes` | public | whole rows | 308 | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | `/user/mail` | public | whole rows | 364 | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 2 | `/user/mail/verify` | public | whole rows | 364 | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | `/user/name` | public | whole rows | 386 | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 2 | `/user/profile` | public | whole rows | 253 | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | `/user/ref` | public | whole rows | 45 | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 2 | `/user/ref` | public | whole rows | 98 | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | `/user/ref` | public | whole rows | 98 | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | `/user/specialCodes` | public | whole rows | 308 | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | `/user/volumes` | hidden | whole rows | 45 | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | `/userData` | public | whole rows | 253 | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | `/userData` | hidden | whole rows | 253 | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| GET | 1 | `/userData/:id` | public | whole rows | 253 | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | `/userData/:id` | hidden | whole rows | 384 | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | `/userData/:id/bankDatas` | hidden | whole rows | 284 | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| DELETE | 1 | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | `/userData/:id/kycFile` | hidden | whole rows | 253 | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | `/userData/:id/merge` | hidden | whole rows | 364 | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | `/userData/:id/volumes` | hidden | whole rows | — | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | `/userData/auditPeriodNumbers` | hidden | whole rows | 40 | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | `/userData/download` | public | whole rows | 253 | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | `/userDataRelation` | public | whole rows | 253 | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| DELETE | 1 | `/userDataRelation/:id` | public | none | — | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| PUT | 1 | `/userDataRelation/:id` | public | whole rows | 7 | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| GET | neutral | `/version` | hidden | none | — | `AppController.getVersion` | `app.controller.ts` | -| POST | 1 | `/wallet` | public | none | — | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | -| PUT | 1 | `/wallet/:id` | hidden | whole rows | 20 | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| Method | Ver | Dep | Path | Swagger | Data access | Max cols | Handler | File | +| ------ | --- | --- | ---- | ------- | ----------- | -------: | ------- | ---- | +| GET | neutral | | `/` | public | none | — | `AppController.home` | `app.controller.ts` | +| POST | 1 | | `/CustodyProvider` | public | none | — | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| PUT | 1 | | `/CustodyProvider/:id` | hidden | whole rows | 6 | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | 1 | | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/admin/mail` | public | whole rows | 13 | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/admin/payout` | hidden | whole rows | 156 | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/admin/sendLetter` | hidden | none | — | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/alchemy/addressWebhook` | public | none | — | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | | `/alchemy/addresses/:webhookId` | public | none | — | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | | `/app` | public | whole rows | 6 | `AppController.createRefNew` | `app.controller.ts` | +| GET | 1 | | `/app/:app` | hidden | whole rows | 6 | `AppController.redirectToStore` | `app.controller.ts` | +| GET | 1 | | `/app/advertisements` | hidden | none | — | `AppController.getAds` | `app.controller.ts` | +| GET | 1 | | `/app/announcements` | public | none | — | `AppController.getAnnouncements` | `app.controller.ts` | +| GET | 1 | | `/app/settings/flags` | hidden | none | — | `AppController.getFlags` | `app.controller.ts` | +| GET | 1 | | `/asset` | public | whole rows | 33 | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | 1 | | `/asset/:id` | public | whole rows | 33 | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| POST | 1 | | `/auth` | public | whole rows | 643 | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/2fa` | hidden | whole rows | 253 | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/2fa` | public | whole rows | 253 | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/2fa/verify` | public | whole rows | 253 | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/alby` | hidden | none | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/alby/redirect/:id` | hidden | whole rows | 643 | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/challenge` | hidden | whole rows | 20 | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/mail` | hidden | whole rows | 643 | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/mail/confirm` | public | whole rows | 470 | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/mail/redirect` | hidden | whole rows | 643 | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/signIn` | hidden | whole rows | 643 | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/signMessage` | public | none | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/signUp` | public | whole rows | 643 | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/verifySignature` | public | whole rows | 6 | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/balance/pdf` | public | whole rows | 40 | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | 1 | | `/balance/pdf/blockchains` | public | none | — | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | 1 | | `/bank` | public | whole rows | 46 | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| PUT | 1 | | `/bank/receiveIban` | public | whole rows | 101 | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| POST | 1 | | `/bank/yapeal/webhook` | public | none | — | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| GET | 1 | | `/bankAccount` | public | whole rows | 261 | `BankAccountController.getAllUserBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | | `/bankAccount` | public | whole rows | 261 | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | 1 | | `/bankAccount/:id` | public | whole rows | 261 | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | | `/bankAccount/bic` | hidden | whole rows | 26 | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | | `/bankAccount/iban` | public | whole rows | 26 | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | 1 | | `/bankData/:id` | public | whole rows | 31 | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| PUT | 1 | | `/bankData/:id/nameCheck` | hidden | whole rows | 276 | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | 1 | | `/bankTx` | public | whole rows | 61 | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | 1 | | `/bankTx/:id` | hidden | whole rows | 1051 | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| DELETE | 1 | | `/bankTx/:id/buyCrypto` | hidden | whole rows | 247 | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | 1 | | `/bankTxRepeat/:id` | public | whole rows | 308 | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | 1 | | `/bankTxReturn/:id` | public | whole rows | 438 | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | 1 | | `/bankTxReturn/:id/refund` | hidden | whole rows | 727 | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | 1 | | `/blockchain/balances` | public | whole rows | 33 | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | 1 | | `/blockchain/broadcast` | public | none | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | 1 | | `/blockchain/transaction` | public | whole rows | 33 | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| GET | 1 | | `/buy` | public | whole rows | 308 | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | 1 | | `/buy` | hidden | whole rows | 364 | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy/:id` | hidden | whole rows | 308 | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/:id` | public | whole rows | 308 | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy/:id/history` | hidden | whole rows | 497 | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/paymentInfos` | public | whole rows | 364 | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/paymentInfos/:id/confirm` | public | whole rows | 504 | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/paymentInfos/:id/invoice` | public | whole rows | 504 | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy/personalIban` | public | whole rows | 331 | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | 1 | | `/buy/personalIban` | public | whole rows | 253 | `BuyController.createPersonalIban` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/quote` | hidden | whole rows | 143 | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buyCrypto/:id` | hidden | whole rows | 1090 | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| DELETE | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 422 | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 1090 | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | | `/buyCrypto/:id/refund` | hidden | whole rows | 1051 | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | | `/buyCrypto/:id/scorechain` | hidden | whole rows | 717 | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | | `/buyCrypto/:id/webhook` | public | whole rows | 844 | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyCrypto/refVolumes` | hidden | whole rows | 77 | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyCrypto/volumes` | hidden | whole rows | 487 | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyFiat/:id` | hidden | whole rows | 1033 | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| DELETE | 1 | | `/buyFiat/:id/amlCheck` | hidden | whole rows | 490 | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | | `/buyFiat/:id/amlCheck` | hidden | whole rows | 1033 | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | | `/buyFiat/:id/refund` | hidden | whole rows | 803 | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | | `/buyFiat/:id/scorechain` | hidden | whole rows | 517 | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | | `/buyFiat/:id/webhook` | public | whole rows | 644 | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | | `/buyFiat/refVolumes` | hidden | whole rows | 77 | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | | `/buyFiat/volumes` | hidden | whole rows | 308 | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| GET | 1 | | `/country` | public | whole rows | 23 | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | +| GET | 1 | | `/cryptoRoute` | public | none | — | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| POST | 1 | | `/cryptoRoute` | hidden | none | — | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| PUT | 1 | | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | | `/cryptoRoute/:id/history` | hidden | none | — | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | | `/custody` | public | whole rows | 253 | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | | `/custody` | public | whole rows | 364 | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | 1 | | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/access` | public | whole rows | 238 | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | | `/custody/account/:id/access` | public | whole rows | 253 | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| DELETE | 1 | | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | 1 | | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/balance` | public | whole rows | 253 | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/history` | public | whole rows | 253 | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/order` | public | whole rows | 253 | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/pdf` | public | whole rows | 253 | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | | `/custody/admin/order/:id/approve` | public | whole rows | 217 | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/admin/orders` | public | whole rows | 525 | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| PUT | 1 | | `/custody/admin/user/:id/balance` | public | whole rows | 308 | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/history` | public | whole rows | 253 | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/order` | public | whole rows | 19 | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | | `/custody/order` | public | whole rows | 364 | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | | `/custody/order/:id/confirm` | public | whole rows | 525 | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/pdf` | public | whole rows | 253 | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/accounts` | public | whole rows | 54 | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | whole rows | 30 | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/equity-comparison` | hidden | whole rows | 54 | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/margin` | hidden | whole rows | 11 | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/reconciliation` | hidden | whole rows | 54 | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/suspense` | hidden | whole rows | 11 | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/financial/changes` | hidden | whole rows | 11 | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/changes/latest` | hidden | whole rows | 11 | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/latest` | hidden | none | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/log` | public | whole rows | 33 | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/reconciliation` | public | whole rows | 229 | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | 1 | | `/dashboard/financial/reconciliation/overview` | hidden | whole rows | 229 | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | 1 | | `/dashboard/financial/ref-recipients` | hidden | whole rows | 25 | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| POST | 1 | | `/deposit` | public | whole rows | 6 | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| PUT | 1 | | `/deposit/lightningWebhook` | hidden | none | — | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| GET | 1 | | `/deuro/info` | public | whole rows | 11 | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | +| GET | 1 | | `/dex/check-liquidity` | public | none | — | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| PUT | 1 | | `/dex/complete-orders` | hidden | whole rows | 156 | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | | `/dex/liquidity-after-purchase` | hidden | whole rows | 156 | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | | `/dex/purchase-liquidity` | hidden | none | — | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | | `/dex/reserve-liquidity` | hidden | none | — | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | | `/dex/transfer-completion` | hidden | none | — | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | | `/dex/transfer-liquidity` | hidden | none | — | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | | `/exchange/:exchange/balances` | public | none | — | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/price` | hidden | none | — | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | +| PUT | 1 | | `/exchange/:exchange/sync` | hidden | whole rows | 40 | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/trade/history` | hidden | none | — | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | | `/exchange/:exchange/withdraw` | hidden | none | — | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/withdraw/:id` | public | none | — | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/trade/:id` | hidden | none | — | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | | `/faucet` | public | whole rows | 308 | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | 1 | | `/fee` | public | whole rows | 65 | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| GET | 1 | | `/fiat` | public | whole rows | 23 | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | +| POST | 1 | | `/fiatOutput` | public | whole rows | 377 | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| PUT | 1 | | `/fiatOutput/:id` | hidden | whole rows | 59 | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| GET | 1 | | `/frankencoin/info` | public | whole rows | 11 | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | +| POST | 1 | | `/gs/db` | public | caller-defined | 13 | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | | `/gs/db/custom` | hidden | caller-defined | — | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | | `/gs/debug` | hidden | projected | — | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | | `/gs/evm/bridgeApproval` | hidden | whole rows | 33 | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/coinTransaction` | hidden | whole rows | 6 | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/contractApproval` | hidden | whole rows | 33 | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/contractTransaction` | hidden | none | — | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/rawTransaction` | public | whole rows | 6 | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/tokenTransaction` | hidden | whole rows | 33 | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| GET | 1 | | `/gs/support` | hidden | whole rows | 907 | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | +| GET | neutral | | `/health` | public | none | — | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/banking` | public | none | — | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/external` | public | none | — | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/liquidity` | public | none | — | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/nodes` | public | none | — | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/payment` | public | none | — | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | 1 | | `/history` | public | whole rows | 1363 | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | | `/history/:exportType` | hidden | whole rows | 1363 | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | | `/history/csv` | hidden | none | — | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | 1 | | `/history/csv` | public | whole rows | 1363 | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | | `/ikna/bfs/:id` | hidden | none | — | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | 1 | | `/ikna/bfs/address` | public | none | — | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | 1 | | `/ikna/tag` | hidden | none | — | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | 1 | | `/juice/info` | public | whole rows | 11 | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | +| GET | 1 | yes | `/kyc` | public | whole rows | 351 | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | | `/kyc` | public | whole rows | 351 | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 1 | yes | `/kyc` | public | whole rows | 351 | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| PUT | 2 | | `/kyc` | public | whole rows | 364 | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/2fa` | public | whole rows | 253 | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/2fa` | public | whole rows | 253 | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/2fa/verify` | public | whole rows | 253 | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:code` | public | whole rows | 351 | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | 1 | yes | `/kyc/:code` | public | whole rows | 351 | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:code/countries` | public | whole rows | 351 | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:id/documents` | public | whole rows | 328 | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:id/documents/:type` | public | whole rows | 328 | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | | `/kyc/:step` | public | whole rows | 364 | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 1 | | `/kyc/admin/blacklist/ip` | hidden | none | — | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/blacklist/ip` | hidden | whole rows | 12 | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | | `/kyc/admin/ident/file/sync` | hidden | whole rows | 243 | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | | `/kyc/admin/log` | hidden | whole rows | 253 | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/log/:id` | hidden | whole rows | 17 | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/nameCheck/:id` | public | whole rows | 245 | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/step/:id` | hidden | whole rows | 385 | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | | `/kyc/admin/webhook` | hidden | whole rows | 364 | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| GET | 2 | | `/kyc/client/payments` | public | whole rows | 1092 | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users` | public | whole rows | 20 | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users/:id/documents` | public | whole rows | 78 | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users/:id/documents/:type` | public | whole rows | 78 | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users/:id/payments` | public | whole rows | 1092 | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 1 | yes | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | yes | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 2 | | `/kyc/data/:type/:id` | hidden | whole rows | 351 | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/additional/:id` | public | whole rows | 364 | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/address/:id` | public | whole rows | 364 | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/authority/:id` | public | whole rows | 364 | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/beneficial/:id` | public | whole rows | 364 | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/confirmation/:id` | public | whole rows | 364 | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/contact/:id` | hidden | whole rows | 364 | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/data/financial/:id` | public | whole rows | 351 | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/financial/:id` | public | whole rows | 364 | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/legal/:id` | public | whole rows | 364 | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/name/:id` | public | whole rows | 364 | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/nationality/:id` | public | whole rows | 364 | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/operational/:id` | public | whole rows | 364 | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/owner/:id` | public | whole rows | 364 | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/payment/:id` | public | whole rows | 364 | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/personal/:id` | public | whole rows | 364 | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/phone/:id` | public | whole rows | 364 | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/recall/:id` | public | whole rows | 364 | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/recommendation/:id` | public | whole rows | 643 | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/residence/:id` | public | whole rows | 364 | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/signatory/:id` | public | whole rows | 364 | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/statutes/:id` | public | whole rows | 364 | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/file/:id` | hidden | whole rows | 264 | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/ident/manual/:id` | hidden | whole rows | 364 | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/ident/sumsub` | public | whole rows | 364 | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 2 | | `/kyc/transfer` | hidden | whole rows | 351 | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/transfer` | hidden | whole rows | 364 | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 1 | yes | `/kyc/transfer` | public | whole rows | 364 | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/users` | public | whole rows | 328 | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | | `/language` | public | whole rows | 7 | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | +| PUT | 1 | | `/limitRequest/:id` | public | whole rows | 434 | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | 1 | | `/liquidityManagement/balance` | public | whole rows | 40 | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | 1 | | `/liquidityManagement/order/:id/resolveUncertain` | hidden | whole rows | 139 | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | 1 | | `/liquidityManagement/order/in-progress` | public | whole rows | 139 | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | 1 | | `/liquidityManagement/pipeline/:id/status` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | | `/liquidityManagement/pipeline/buy` | public | whole rows | 112 | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | 1 | | `/liquidityManagement/pipeline/in-progress` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | | `/liquidityManagement/pipeline/sell` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | 1 | | `/liquidityManagement/pipeline/stopped` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | | `/liquidityManagement/rule` | public | whole rows | 83 | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PUT | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | | `/liquidityManagement/rule/:id/deactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | | `/liquidityManagement/rule/:id/reactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | | `/liquidityManagement/rule/:id/settings` | hidden | whole rows | 83 | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | 1 | | `/lnurla` | public | whole rows | 643 | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| POST | 1 | | `/lnurla` | public | none | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | 1 | | `/lnurla/status` | public | none | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | 1 | | `/lnurld/:id` | public | none | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | 1 | | `/lnurld/cb/:id/:var` | public | none | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | 1 | | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| POST | 1 | | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| DELETE | 1 | | `/lnurlp/cancel/:id` | public | whole rows | 545 | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlp/cb/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlp/tx/:id` | public | whole rows | 545 | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlp/wait/:id` | public | whole rows | 545 | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlw/:id` | public | none | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| GET | 1 | | `/lnurlw/cb/:id` | public | none | — | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| POST | 1 | | `/log` | public | whole rows | 11 | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| PUT | 1 | | `/log/:id` | hidden | whole rows | 11 | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| PUT | 1 | | `/log/financial/validity` | hidden | projected | 11 | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | +| GET | 1 | | `/monitoring/data` | public | none | — | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| POST | 1 | | `/monitoring/data` | hidden | none | — | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | 1 | | `/mros` | hidden | whole rows | 243 | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | 1 | | `/mros` | public | whole rows | 253 | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| GET | 1 | | `/mros/:id` | hidden | whole rows | 243 | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | +| PUT | 1 | | `/mros/:id` | hidden | whole rows | 98 | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | 1 | | `/node/:node/:mode/cmd` | hidden | none | — | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/node/:node/:mode/rpc` | hidden | none | — | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | 1 | | `/node/:node/:mode/tx/:txId` | hidden | none | — | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/node/:node/cmd` | hidden | none | — | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/node/:node/rpc` | public | none | — | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | 1 | | `/node/:node/tx/:txId` | hidden | none | — | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/notification/send-mail` | public | whole rows | 13 | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | 1 | | `/payIn` | public | whole rows | 545 | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | 1 | | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | 1 | | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | 1 | | `/payIn/poll` | hidden | none | — | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | 1 | | `/payIn/retry` | hidden | whole rows | — | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | 1 | | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink` | public | whole rows | 545 | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | 1 | | `/paymentLink/:id` | hidden | whole rows | 195 | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/:id` | hidden | whole rows | 513 | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/:id/pos` | hidden | whole rows | 513 | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/assign` | public | whole rows | 513 | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/history` | public | whole rows | 545 | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/binance/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/binance/webhook` | hidden | whole rows | 545 | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/kucoin/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/locations` | public | whole rows | 513 | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/merchant` | public | whole rows | 253 | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | 1 | | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/payment` | hidden | whole rows | 545 | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/payment/:id` | public | whole rows | 545 | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/payment/confirm` | public | whole rows | 513 | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/payment/wait` | public | whole rows | 513 | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/pos` | public | whole rows | 513 | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/recipient` | public | whole rows | 472 | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/standard` | public | none | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | 1 | | `/paymentLink/standard/:id` | public | none | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | 1 | | `/paymentLink/stickers` | hidden | whole rows | 513 | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/walletApp` | public | whole rows | 33 | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | 1 | | `/paymentLink/walletApp/:id` | public | whole rows | 33 | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | 1 | | `/paymentLink/walletApp/recommended` | public | whole rows | 33 | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| POST | 1 | | `/payout` | public | none | — | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | 1 | | `/payout/completion` | hidden | whole rows | 123 | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | 1 | | `/payout/retry` | hidden | whole rows | 123 | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | 1 | | `/payout/speedup` | hidden | whole rows | 123 | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | neutral | | `/pl` | public | whole rows | 545 | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | 1 | | `/plp` | public | whole rows | 545 | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/pricing` | hidden | none | — | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| PUT | 1 | | `/pricing` | hidden | whole rows | 53 | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | 1 | | `/pricing/price` | public | whole rows | 33 | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | 1 | | `/realunit/account/:address` | public | whole rows | 40 | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/account/:address/history` | public | none | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/admin/quotes` | public | whole rows | 112 | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/admin/quotes/:id/confirm-payment` | hidden | whole rows | 1051 | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/admin/registration/:id/forward` | hidden | whole rows | 493 | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/admin/transactions` | hidden | whole rows | 362 | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/balance/pdf` | public | whole rows | 308 | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/buyPrice` | public | none | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/buyShares` | public | none | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/info` | public | whole rows | 33 | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/price` | public | none | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/sellPrice` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/sellShares` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/buy` | public | whole rows | 364 | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/buy/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers` | public | whole rows | 308 | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id` | hidden | whole rows | 826 | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id/dossier` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id/files` | hidden | whole rows | 264 | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id/files/:uid` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/confirm-aktionariat` | public | whole rows | 15 | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/holders` | public | none | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| PUT | 1 | | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| GET | 1 | | `/realunit/pay/:id/status` | public | whole rows | 32 | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/pay/submit` | public | whole rows | 545 | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/pay/unsigned-transaction` | public | whole rows | 545 | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/price` | public | whole rows | 33 | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/price/history` | public | whole rows | 40 | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/buyPrice` | public | none | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/buyShares` | public | none | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/info` | public | whole rows | 33 | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/price` | public | none | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/sellPrice` | public | whole rows | 308 | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/sellShares` | public | whole rows | 308 | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/register/complete` | public | whole rows | 493 | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/register/date` | public | none | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/register/email` | public | whole rows | 364 | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/register/status` | public | whole rows | 308 | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/register/wallet` | public | whole rows | 493 | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/registration` | public | whole rows | 308 | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell` | public | whole rows | 308 | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell/:id/unsigned-transactions` | public | whole rows | 504 | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/support/:id` | hidden | whole rows | 421 | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/:id/data` | hidden | whole rows | 951 | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| POST | 1 | | `/realunit/support/:id/message` | hidden | whole rows | 441 | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/:id/message/:messageId/file` | hidden | whole rows | 421 | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/:id/messages` | hidden | whole rows | 428 | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/activity` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/clerks` | hidden | none | — | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/counts` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/list` | public | whole rows | 99 | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/statistics` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| PUT | 1 | | `/realunit/swap` | public | whole rows | 308 | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/swap/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/swap/:id/unsigned-transaction` | public | whole rows | 504 | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/tokenInfo` | public | none | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/transactions/receipt/multi` | public | whole rows | 308 | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/transactions/receipt/single` | public | whole rows | 308 | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/transfer` | public | whole rows | 308 | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/transfer/:id/confirm` | public | whole rows | 87 | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/wallet/status` | public | whole rows | 308 | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/recall` | hidden | whole rows | 174 | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | 1 | | `/recall` | public | whole rows | 308 | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | 1 | | `/recall/:id` | hidden | whole rows | 174 | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | 1 | | `/recall/:id` | hidden | whole rows | 308 | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | 1 | | `/recommendation` | public | whole rows | 474 | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| POST | 1 | | `/recommendation` | hidden | whole rows | 364 | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | 1 | | `/recommendation/:id/confirm` | hidden | whole rows | 643 | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | 1 | | `/recommendation/:id/reject` | hidden | whole rows | 643 | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | 1 | | `/ref` | public | none | — | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| POST | 1 | | `/reward/ref` | hidden | whole rows | 156 | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | 1 | | `/reward/ref/:id` | hidden | whole rows | 234 | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | 1 | | `/reward/ref/manual` | hidden | whole rows | 308 | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | 1 | | `/reward/ref/volumes` | public | whole rows | 308 | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| GET | 1 | | `/route` | public | whole rows | 308 | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | +| PUT | 1 | | `/route/:id` | hidden | whole rows | 174 | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | +| POST | 1 | | `/scorechain/screening` | public | whole rows | 14 | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| GET | 1 | | `/sell` | public | whole rows | 308 | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| POST | 1 | | `/sell` | hidden | whole rows | 308 | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/sell/:id` | hidden | whole rows | 377 | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/:id` | public | whole rows | 308 | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/sell/:id/history` | hidden | whole rows | 470 | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/paymentInfos` | public | whole rows | 308 | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/paymentInfos/:id/confirm` | public | whole rows | 545 | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/sell/paymentInfos/:id/tx` | public | whole rows | 504 | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/quote` | hidden | whole rows | 143 | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/setting` | public | whole rows | 5 | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | | `/setting/:key` | hidden | whole rows | 5 | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | | `/setting/customSignUpFees` | hidden | none | — | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | | `/setting/disabledProcesses` | hidden | none | — | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | +| GET | 1 | | `/setting/infoBanner` | public | none | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | +| POST | 1 | | `/specialExternalAccount` | public | whole rows | 7 | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| GET | 1 | | `/statistic` | public | none | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | | `/statistic/status` | public | whole rows | 5 | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | | `/statistic/transactions` | public | whole rows | 419 | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | | `/support` | public | whole rows | 593 | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id` | hidden | whole rows | 826 | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id/ip-log-pdf` | hidden | whole rows | 12 | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | | `/support/:id/onboarding-pdf` | hidden | whole rows | 264 | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id/scorechain` | hidden | whole rows | 14 | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id/transaction-pdf` | hidden | whole rows | 826 | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/call-queues` | hidden | none | — | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/call-queues/:queue/items` | hidden | whole rows | 672 | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/call-queues/clerks` | hidden | none | — | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/issue` | public | whole rows | 450 | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue` | public | whole rows | 493 | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/:id` | hidden | whole rows | 450 | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | 1 | | `/support/issue/:id` | public | whole rows | 421 | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | 1 | | `/support/issue/:id/close` | public | whole rows | 450 | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/:id/data` | hidden | whole rows | 951 | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/:id/message` | hidden | whole rows | 441 | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/:id/message/:messageId/file` | public | whole rows | — | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/activity` | hidden | whole rows | 7 | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/clerk` | hidden | none | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/clerks` | hidden | none | — | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/counts` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/escalation/telegram-bind` | hidden | whole rows | 5 | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/escalation/telegram-chats` | hidden | none | — | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/escalation/telegram-test` | hidden | whole rows | 5 | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/list` | public | whole rows | 16 | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/statistics` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/support` | public | whole rows | 493 | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/kycFileList` | hidden | whole rows | 253 | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/kycFileStats` | hidden | whole rows | 99 | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/note` | hidden | whole rows | 9 | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | | `/support/note` | hidden | whole rows | 253 | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | +| DELETE | 1 | | `/support/note/:id` | hidden | whole rows | 9 | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | | `/support/note/:id` | hidden | whole rows | 239 | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/note/users` | hidden | whole rows | 9 | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/pending-reviews` | hidden | whole rows | 15 | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/pending-reviews/items` | hidden | whole rows | 261 | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/pending-transactions` | hidden | whole rows | 672 | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/recommendation-graph/:id/neighbors` | hidden | whole rows | 474 | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/template` | hidden | whole rows | 8 | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | | `/support/template` | hidden | whole rows | 253 | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | +| DELETE | 1 | | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 143 | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 415 | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/transactionList` | hidden | whole rows | 20 | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/swap` | public | whole rows | 308 | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | 1 | | `/swap` | hidden | whole rows | 308 | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap/:id` | hidden | whole rows | 308 | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/:id` | public | whole rows | 396 | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap/:id/history` | hidden | whole rows | 509 | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/paymentInfos` | public | whole rows | 308 | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/paymentInfos/:id/confirm` | public | whole rows | 545 | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap/paymentInfos/:id/tx` | public | whole rows | 504 | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/quote` | hidden | whole rows | 143 | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | 1 | | `/tatum/addressWebhook` | public | none | — | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | 1 | | `/trading/rule/:id` | public | whole rows | 87 | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| GET | 1 | | `/transaction` | public | whole rows | 1363 | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/invoice` | public | whole rows | 331 | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/receipt` | public | whole rows | 331 | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/:id/refund` | public | whole rows | 331 | `TransactionController.getTransactionRefund` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/refund` | public | whole rows | 487 | `TransactionController.setTransactionRefundTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/target` | hidden | whole rows | 1051 | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/ChainReport` | hidden | whole rows | 1363 | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/CoinTracking` | public | whole rows | 1363 | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/admin/:id` | public | whole rows | 276 | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | 1 | | `/transaction/admin/:id/stop` | hidden | whole rows | 98 | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | 1 | | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| PUT | 1 | | `/transaction/admin/:txId/riskAssessment/:id` | hidden | whole rows | 13 | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | 1 | | `/transaction/csv` | public | none | — | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/csv` | public | whole rows | 1363 | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/detail` | hidden | whole rows | 1363 | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/detail/csv` | public | whole rows | 1363 | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/detail/single` | public | whole rows | 487 | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/single` | public | whole rows | 487 | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/target` | hidden | whole rows | 134 | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/unassigned` | public | whole rows | 356 | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| DELETE | 1 | yes | `/user` | public | whole rows | 344 | `UserController.deleteUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 2 | | `/user` | public | whole rows | 344 | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | yes | `/user` | public | whole rows | 328 | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | | `/user` | public | whole rows | 351 | `UserV2Controller.getUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | yes | `/user` | public | whole rows | 406 | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user` | public | whole rows | 351 | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/:id` | hidden | whole rows | 364 | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 1 | yes | `/user/account` | public | whole rows | 344 | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 2 | | `/user/addresses/:address` | public | whole rows | 344 | `UserV2Controller.deleteAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user/addresses/:address` | public | whole rows | 351 | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/apiFilter/CT` | public | whole rows | 331 | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 1 | | `/user/apiKey/CT` | public | none | — | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | | `/user/apiKey/CT` | public | whole rows | 253 | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | | `/user/change` | public | whole rows | 643 | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | | `/user/data` | hidden | whole rows | 406 | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | yes | `/user/detail` | public | whole rows | 328 | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | yes | `/user/discountCodes` | public | whole rows | 308 | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user/mail` | public | whole rows | 364 | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 2 | | `/user/mail/verify` | public | whole rows | 364 | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/name` | public | whole rows | 386 | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | | `/user/profile` | public | whole rows | 253 | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | | `/user/ref` | public | whole rows | 45 | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | | `/user/ref` | public | whole rows | 98 | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user/ref` | public | whole rows | 98 | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/specialCodes` | public | whole rows | 308 | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | | `/user/volumes` | hidden | whole rows | 45 | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | | `/userData` | public | whole rows | 253 | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userData` | hidden | whole rows | 253 | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | 1 | | `/userData/:id` | public | whole rows | 253 | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id` | hidden | whole rows | 384 | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/bankDatas` | hidden | whole rows | 284 | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| DELETE | 1 | | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userData/:id/kycFile` | hidden | whole rows | 253 | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/merge` | hidden | whole rows | 364 | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/volumes` | hidden | whole rows | — | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/auditPeriodNumbers` | hidden | whole rows | 40 | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userData/download` | public | whole rows | 253 | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userDataRelation` | public | whole rows | 253 | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | 1 | | `/userDataRelation/:id` | public | none | — | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| PUT | 1 | | `/userDataRelation/:id` | public | whole rows | 7 | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| GET | neutral | | `/version` | hidden | none | — | `AppController.getVersion` | `app.controller.ts` | +| POST | 1 | | `/wallet` | public | none | — | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | 1 | | `/wallet/:id` | hidden | whole rows | 20 | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. diff --git a/docs/load-sites.md b/docs/load-sites.md index fa8b80ddb9..00ec1108c6 100644 --- a/docs/load-sites.md +++ b/docs/load-sites.md @@ -1,6 +1,6 @@ # Database load sites -Every place in the code that reads from the database: **1112 load sites** across 241 files. +Every place in the code that reads from the database: **1105 load sites** across 241 files. This is the level at which the statement is unambiguous. An endpoint reaches several load sites — a permission check, a lookup, the actual query — so asking whether *an endpoint* loads efficiently has no single answer. Asking it of a load site does. [endpoints.md](endpoints.md) carries the per-endpoint summary derived from these sites. @@ -10,9 +10,9 @@ This is the level at which the statement is unambiguous. An endpoint reaches sev | --------- | ----: | --------------- | ---------------- | | `find` family | 971 | **applied** — expanded recursively | all columns of the entity plus every eager relation | | `createQueryBuilder` | 129 | not applied | all columns of the root entity, unless `.select([...])` narrows it | -| raw SQL | 12 | not applied | whatever the statement lists | +| raw SQL | 5 | not applied | whatever the statement lists | -A further 2 `createQueryBuilder` calls are not listed: they carry `.update()` and are write statements, which load nothing. +Statements that load nothing are excluded from the count: 2 `createQueryBuilder` calls carrying `.update()`, 6 advisory locks (`SELECT pg_advisory_xact_lock(...)`, which return no rows) and 1 raw `INSERT`. Each of the 5 raw reads that remain names its columns — together with the one query builder below, raw SQL is the only place in this repository where a read states which columns it wants. Among the query builders, the field list is what decides whether anything is actually saved: @@ -26,11 +26,11 @@ Among the query builders, the field list is what decides whether anything is act ## Measurements -Columns were measured against the real entity metadata by building the query and counting its SELECT list — 782 of 1112 sites. +Columns were measured against the real entity metadata by building the query and counting its SELECT list — 782 of 1105 sites. - **348 are exact**: the `relations` tree is written at the call site. - **434 are lower bounds**: the tree arrives as a parameter, so only the base query is visible here. `transaction.service.ts` is the clearest case — its callers pass trees reaching well over a thousand columns. -- 330 could not be measured: no resolvable target entity, or raw SQL. +- 323 could not be measured: no resolvable target entity, or raw SQL. Median across measured sites: **123 columns**. 14 sites exceed 1000, 77 exceed 500, 409 exceed 100. @@ -861,7 +861,7 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:895` | `ScryptService.editOrder` | | — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:914` | `ScryptService.getTradePair` | | — | — | find | `—` | `integration/exchange/services/scrypt.service.ts:930` | `ScryptService.getSecurity` | -| — | — | find | `—` | `integration/lightning/lightning-helper.ts:134` | `LightningHelper.None` | +| — | — | find | `—` | `integration/lightning/lightning-helper.ts:134` | — | | — | — | find | `—` | `integration/lightning/services/lightning.service.ts:196` | `LightningService.findPayment` | | — | — | find | `—` | `shared/models/asset/asset.controller.ts:39` | `AssetController.getAllAsset` | | — | — | find | `—` | `shared/models/asset/asset.service.ts:153` | `AssetService.getByQuerySync` | @@ -869,7 +869,6 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `shared/models/fiat/fiat.controller.ts:27` | `FiatController.getAllFiat` | | — | — | find | `—` | `shared/models/fiat/fiat.service.ts:32` | `FiatService.getFiatByName` | | — | — | find | `—` | `shared/models/ip-log/ip-log.service.ts:143` | `IpLogService.checkIpCountry` | -| — | — | raw-sql | `—` | `shared/models/setting/setting.repository.ts:18` | `SettingRepository.setDateMax` | | — | — | find | `—` | `shared/models/setting/setting.repository.ts:20` | `SettingRepository.setDateMax` | | — | — | find | `—` | `shared/models/setting/setting.service.ts:169` | `SettingService.updateCustomSignUpFees` | | — | — | find | `—` | `shared/models/setting/setting.service.ts:198` | `SettingService.getCustomSignUpFees` | @@ -878,7 +877,7 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `shared/repositories/cached.repository.ts:24` | `CachedRepository.findCached` | | — | — | find | `—` | `shared/repositories/cached.repository.ts:28` | `CachedRepository.findCachedBy` | | — | — | find | `—` | `shared/services/http.service.ts:84` | `HttpService.getMockResponse` | -| — | — | find | `—` | `shared/utils/util.ts:786` | `Util.clearTimeout` | +| — | — | find | `—` | `shared/utils/util.ts:786` | — | | — | — | find | `—` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:339` | `BankTxConsumer.cutoverOwedOpeningChf` | | — | — | find | `—` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:567` | `BankTxConsumer.openingLiabilityLegChf` | | — | — | find | `—` | `subdomains/core/accounting/services/consumers/bank-tx.consumer.ts:586` | `BankTxConsumer.cutoverOpeningLiabilityChf` | @@ -886,7 +885,7 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:589` | `BuyFiatConsumer.cutoverOwedOpeningChf` | | — | — | find | `—` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:607` | `BuyFiatConsumer.paymentLinkOpeningChf` | | — | — | find | `—` | `subdomains/core/accounting/services/consumers/buy-fiat.consumer.ts:625` | `BuyFiatConsumer.cutoverPaymentLinkOpeningChf` | -| — | — | find | `—` | `subdomains/core/accounting/services/consumers/ledger-watermark.helper.ts:225` | `None.None` | +| — | — | find | `—` | `subdomains/core/accounting/services/consumers/ledger-watermark.helper.ts:225` | — | | — | — | find | `—` | `subdomains/core/accounting/services/consumers/payout-order.consumer.ts:325` | `PayoutOrderConsumer.cutoverOwedOpeningChf` | | — | — | find | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:257` | `LedgerBookingService.activeTx` | | — | — | find | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:264` | `LedgerBookingService.activeTx` | @@ -895,11 +894,11 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | query-builder (nur-alias) | `—` | `subdomains/core/accounting/services/ledger-booking.service.ts:335` | `LedgerBookingService.nextSeqFrom` | | — | — | query-builder (nur-alias) | `—` | `subdomains/core/accounting/services/ledger-cutover.service.ts:958` | `LedgerCutoverService.maxSettledId` | | — | — | query-builder (nur-alias) | `—` | `subdomains/core/accounting/services/ledger-cutover.service.ts:1002` | `LedgerCutoverService.idsUpToBoundary` | -| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:375` | `AmlHelperService.None` | -| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:684` | `AmlHelperService.None` | -| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:685` | `AmlHelperService.None` | -| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:686` | `AmlHelperService.None` | -| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:700` | `AmlHelperService.None` | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:375` | — | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:684` | — | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:685` | — | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:686` | — | +| — | — | find | `—` | `subdomains/core/aml/services/aml-helper.service.ts:700` | — | | — | — | find | `—` | `subdomains/core/aml/services/aml.service.ts:132` | `AmlService.getAmlCheckInput` | | — | — | find | `—` | `subdomains/core/aml/services/aml.service.ts:278` | `AmlService.getBankData` | | — | — | find | `—` | `subdomains/core/buy-crypto/process/entities/buy-crypto.entity.ts:370` | `BuyCrypto.calculateOutputReferenceAmount` | @@ -911,7 +910,6 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `subdomains/core/buy-crypto/process/services/buy-crypto.service.ts:1063` | `BuyCryptoService.getCryptoRoute` | | — | — | find | `—` | `subdomains/core/custody/controllers/custody-account.controller.ts:66` | `CustodyAccountController.getCustodyAccount` | | — | — | find | `—` | `subdomains/core/custody/controllers/custody-account.controller.ts:67` | `CustodyAccountController.getCustodyAccount` | -| — | — | raw-sql | `—` | `subdomains/core/custody/services/custody-account.service.ts:35` | `None.None` | | — | — | query-builder (ohne-select) | `—` | `subdomains/core/custody/services/custody-account.service.ts:482` | `CustodyAccountService.lockActiveAccessGrant` | | — | — | find | `—` | `subdomains/core/custody/services/custody-account.service.ts:504` | `CustodyAccountService.createGrant` | | — | — | find | `—` | `subdomains/core/custody/services/custody-account.service.ts:598` | `CustodyAccountService.grantAccessForLegacy` | @@ -973,12 +971,12 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | query-builder (ohne-select) | `—` | `subdomains/generic/gs/gs.service.ts:868` | `GsService.getExtendedBankTxData` | | — | — | query-builder (ohne-select) | `—` | `subdomains/generic/gs/gs.service.ts:887` | `GsService.getExtendedBankTxData` | | — | — | query-builder (ohne-select) | `—` | `subdomains/generic/gs/gs.service.ts:906` | `GsService.getExtendedBankTxData` | -| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:35` | `KycInfoMapper.None` | -| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:36` | `KycInfoMapper.None` | -| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:125` | `KycInfoMapper.None` | -| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:126` | `KycInfoMapper.None` | -| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:135` | `KycInfoMapper.None` | -| — | — | find | `—` | `subdomains/generic/kyc/enums/kyc.enum.ts:19` | `None.None` | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:35` | — | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:36` | — | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:125` | — | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:126` | — | +| — | — | find | `—` | `subdomains/generic/kyc/dto/mapper/kyc-info.mapper.ts:135` | — | +| — | — | find | `—` | `subdomains/generic/kyc/enums/kyc.enum.ts:19` | — | | — | — | find | `—` | `subdomains/generic/kyc/services/integration/financial.service.ts:39` | `FinancialService.getQuestions` | | — | — | find | `—` | `subdomains/generic/kyc/services/kyc-admin.service.ts:41` | `KycAdminService.getKycSteps` | | — | — | find | `—` | `subdomains/generic/kyc/services/kyc-client.service.ts:55` | `KycClientService.getAllUserPayments` | @@ -1025,7 +1023,7 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:781` | `UserData.getPendingStepWith` | | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:785` | `UserData.getCompletedStepWith` | | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.entity.ts:789` | `UserData.getNonFailedStepWith` | -| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.enum.ts:75` | `None.None` | +| — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.enum.ts:75` | — | | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:867` | `UserDataService.checkMail` | | — | — | query-builder (nur-alias) | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1214` | `UserDataService.updateVolumes` | | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1312` | `UserDataService.mergeUserData` | @@ -1034,7 +1032,7 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1344` | `UserDataService.mergeUserData` | | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1547` | `UserDataService.mergeUserData` | | — | — | find | `—` | `subdomains/generic/user/models/user-data/user-data.service.ts:1725` | `UserDataService.updateBankTxTime` | -| — | — | find | `—` | `subdomains/generic/user/models/user/dto/user-dto.mapper.ts:27` | `UserDtoMapper.None` | +| — | — | find | `—` | `subdomains/generic/user/models/user/dto/user-dto.mapper.ts:27` | — | | — | — | find | `—` | `subdomains/generic/user/models/user/user.repository.ts:31` | `UserRepository.getNextRef` | | — | — | find | `—` | `subdomains/generic/user/models/user/user.service.ts:342` | `UserService.createUser` | | — | — | find | `—` | `subdomains/generic/user/models/user/user.service.ts:496` | `UserService.updateAddress` | @@ -1051,11 +1049,8 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban-frick-issuance-reconciliation.service.ts:150` | `VirtualIbanFrickIssuanceReconciliationService.runPhase1StuckIntents` | | — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban-frick-issuance-reconciliation.service.ts:471` | `VirtualIbanFrickIssuanceReconciliationService.loadAbandonedReferences` | | — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:118` | `VirtualIbanService.getAccountHolder` | -| — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:291` | `VirtualIbanService.withUserLevelIssuanceLock` | | — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:295` | `VirtualIbanService.String` | -| — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:375` | `VirtualIbanService.lockUserLevelIssuanceForMerge` | | — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:385` | `VirtualIbanService.lockUserLevelIssuanceForMerge` | -| — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:504` | `VirtualIbanService.initializeFrickIntent` | | — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:709` | `VirtualIbanService.async` | | — | — | raw-sql | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:769` | `VirtualIbanService.hasOrderedOwnershipPath` | | — | — | find | `—` | `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:1030` | `VirtualIbanService.resolveVirtualIbanId` | @@ -1095,7 +1090,7 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `subdomains/supporting/log/log-job.service.ts:997` | `LogJobService.getAssetLog` | | — | — | find | `—` | `subdomains/supporting/log/log-job.service.ts:1607` | `LogJobService.findSenderReceiverPair` | | — | — | raw-sql | `Log` | `subdomains/supporting/log/log.repository.ts:341` | `LogRepository.getFinancialLogAssetPrices` | -| — | — | raw-sql | `Log` | `subdomains/supporting/log/log.repository.ts:511` | `LogRepository.THEN` | +| — | — | raw-sql | `Log` | `subdomains/supporting/log/log.repository.ts:511` | `LogRepository.getFinancialLogSummariesFull` | | — | — | raw-sql | `Log` | `subdomains/supporting/log/log.repository.ts:664` | `LogRepository.getFinancialLogSummariesChartOnly` | | — | — | find | `—` | `subdomains/supporting/notification/services/notification.service.ts:128` | `NotificationService.resolveMailWallet` | | — | — | find | `—` | `subdomains/supporting/payin/services/payin-notification.service.ts:32` | `PayInNotificationService.returnedCryptoInput` | @@ -1145,9 +1140,7 @@ Sorted by measured columns, largest first. `—` means not measurable, not zero. | — | — | find | `—` | `subdomains/supporting/realunit/realunit-job.service.ts:132` | `RealUnitJobService.findUnconsumedSettlement` | | — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:339` | `RealUnitService.getHistoryEventByTxHash` | | — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:1442` | `RealUnitService.toUserDataDtoFromUserData` | -| — | — | raw-sql | `—` | `subdomains/supporting/realunit/realunit.service.ts:1602` | `RealUnitService.forwardRegistration` | | — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:1606` | `RealUnitService.forwardRegistration` | -| — | — | raw-sql | `—` | `subdomains/supporting/realunit/realunit.service.ts:2922` | `RealUnitService.applyRegistrationConfirmation` | | — | — | find | `—` | `subdomains/supporting/realunit/realunit.service.ts:2927` | `RealUnitService.applyRegistrationConfirmation` | | — | — | find | `—` | `subdomains/supporting/support-issue/services/support-escalation.service.ts:166` | `SupportEscalationService.bindGroupChat` | | — | — | find | `—` | `subdomains/supporting/support-issue/services/support-issue.service.ts:92` | `SupportIssueService.getSupportIssueClerkForAccount` | diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index e3f28daf39..654a3d7ad5 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -29,11 +29,12 @@ and one on `LimitRequest` **434 across 15** — before any `relations` option is decision what to load therefore lives in the entity definition, not at the call site, and no call site can see what it triggers. -**No read model.** Of the 1,112 load sites in this repository, **exactly one** names the columns -it needs. The rest request whole rows: 971 through the `find` family, and of the 129 query -builders, 105 pass the root alias to `.select(...)` — which reads like a projection but is not — -while 24 pass no select at all. The same entities serve persistence, business logic and pure -output paths such as invoices, receipts, history and exports — which need fields, not objects. +**No read model.** Of the 1,105 load sites in this repository, **six** name the columns they need: +one query builder and the five raw statements. The other 1,099 request whole rows — 971 through the +`find` family, and of the 129 query builders, 105 pass the root alias to `.select(...)`, which reads +like a projection but is not, while 23 pass no select at all. The same entities serve persistence, +business logic and pure output paths such as invoices, receipts, history and exports — which need +fields, not objects. ## Vocabulary @@ -47,7 +48,7 @@ output paths such as invoices, receipts, history and exports — which need fiel | **Read model** | A separate model optimised for reading. Introducing projections for read paths is a small step towards one. | Note that eager relations apply to the `find*` family, **not** to `createQueryBuilder` and not to -raw SQL. [load-sites.md](load-sites.md) records that mechanism for each of the 1,112 load sites, +raw SQL. [load-sites.md](load-sites.md) records that mechanism for each of the 1,105 load sites, together with the measured column count. [endpoints.md](endpoints.md) summarises this per endpoint, as the union over every load site the @@ -116,10 +117,23 @@ described above proves it — a wrong value can run for weeks. To any load site that carries an explicit field list — that is where a forgotten field silently yields an empty value. -Today that is **exactly one site** in the whole repository (`log.repository.ts:699`). Every other -query builder either selects only the root alias or nothing at all, and therefore still loads every -column; nothing can be missing from them. Each site becomes subject to these tests the moment it is -given a field list. +Today that is **six sites**: + +| Site | Form | +| ---- | ---- | +| `subdomains/supporting/log/log.repository.ts:699` | `.select(['log.id', 'log.valid'])` | +| `subdomains/supporting/log/log.repository.ts:341` | raw SQL, columns listed | +| `subdomains/supporting/log/log.repository.ts:511` | raw SQL, columns listed | +| `subdomains/supporting/log/log.repository.ts:664` | raw SQL, columns listed | +| `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:769` | raw SQL, columns listed | +| `subdomains/generic/gs/gs.service.ts:337` | raw SQL, column list supplied by the caller | + +The last one is a different case: its field list comes from the request, so an incomplete result is +the caller's doing rather than a defect here. The other five carry the risk described above. + +Every other read either selects only the root alias or nothing at all and therefore still loads +every column; nothing can be missing from those. Each becomes subject to these tests the moment it +is given a field list. ### How they run From 58141ea46062cbf36e6797920246bb4510351049 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 04:03:31 +0200 Subject: [PATCH 16/19] Record what the suite covers of the six reads that name their columns The test definition names the risk a projection carries, but nothing recorded how far the existing suite already answers it. Adds that per site. Three of the six reads are never executed. getFinancialLogValidityChangeSet is replaced by a spy at all nine of its appearances, so the projection line itself never runs. getFinancialLogAssetPrices is stood in for by a hand-written fake that reimplements the filtering in TypeScript. hasOrderedOwnershipPath appears in no spec at all. Three do run and assert their generated statement, one expectation per projected column, including one that message never appears in the chart-only path. Dropping a column there turns the suite red. None of the six runs against a database. Every spec stubs the boundary, and a mock cannot observe which columns were requested, so the completeness level is satisfied nowhere - not even where the statement is asserted. Asserting that a column appears in a statement is not the same as proving the statement returns every field the response needs. That leaves one narrow gap: log.repository.ts:699 carries the projection risk, serves PUT /log/financial/validity, and is not exercised at all. What surrounds it is well covered - batching, the audit trail, rejection of fabricated audit records, the block on changing validity through the generic update path. --- docs/endpoints.md | 2 +- docs/read-path-projections.md | 62 +++++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/docs/endpoints.md b/docs/endpoints.md index 5def97e752..e232720d78 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -21,7 +21,7 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller | `projected` | 2 | 0 % | | `caller-defined` | 2 | 0 % | -Two endpoints read only what they return: `PUT /log/financial/validity`, whose query names `log.id` and `log.valid`, and `POST /gs/debug`, which assembles its select list from the request. `POST /gs/db` and `POST /gs/db/custom` project only when the caller sends a field list — `request.select(query.select)` — and load the full table otherwise. +Two endpoints read only what they return: `PUT /log/financial/validity`, whose query names `log.id` and `log.valid`, and `POST /gs/debug`, which assembles its select list from the request. `POST /gs/db` and `POST /gs/db/custom` project only when the caller sends a field list — `request.select(query.select)` — and load the full table otherwise. How far the test suite actually covers those reads is recorded per site in [read-path-projections.md](read-path-projections.md#which-endpoints-these-apply-to); the short answer is that the projection behind `PUT /log/financial/validity` is never executed in a test. Among the 432 that fetch whole rows, the widest query they can trigger is **308 columns** at the median; 320 exceed 100, 90 exceed 500 and 19 exceed 1000. Postgres refuses a statement with more than 1664 columns, which is what broke every invoice and receipt in production once a single column was added elsewhere. diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index 654a3d7ad5..fe51bd81fd 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -117,23 +117,51 @@ described above proves it — a wrong value can run for weeks. To any load site that carries an explicit field list — that is where a forgotten field silently yields an empty value. -Today that is **six sites**: - -| Site | Form | -| ---- | ---- | -| `subdomains/supporting/log/log.repository.ts:699` | `.select(['log.id', 'log.valid'])` | -| `subdomains/supporting/log/log.repository.ts:341` | raw SQL, columns listed | -| `subdomains/supporting/log/log.repository.ts:511` | raw SQL, columns listed | -| `subdomains/supporting/log/log.repository.ts:664` | raw SQL, columns listed | -| `subdomains/supporting/bank/virtual-iban/virtual-iban.service.ts:769` | raw SQL, columns listed | -| `subdomains/generic/gs/gs.service.ts:337` | raw SQL, column list supplied by the caller | - -The last one is a different case: its field list comes from the request, so an incomplete result is -the caller's doing rather than a defect here. The other five carry the risk described above. - -Every other read either selects only the root alias or nothing at all and therefore still loads -every column; nothing can be missing from those. Each becomes subject to these tests the moment it -is given a field list. +Today that is **six sites**, and this is what the suite covers of them: + +| Site | Form | Runs in a test | Column list asserted | Real database | +| ---- | ---- | -------------- | -------------------- | ------------- | +| `log.repository.ts:699` — `getFinancialLogValidityChangeSet` | `.select(['log.id', 'log.valid'])` | **no** | no | no | +| `log.repository.ts:341` — `getFinancialLogAssetPrices` | raw SQL, columns listed | **no** | no | no | +| `log.repository.ts:511` — `getFinancialLogSummariesFull` | raw SQL, columns listed | yes | yes | no | +| `log.repository.ts:664` — `getFinancialLogSummariesChartOnly` | raw SQL, columns listed | yes | yes | no | +| `virtual-iban.service.ts:769` — `hasOrderedOwnershipPath` | raw SQL, columns listed | **no** | no | no | +| `gs.service.ts:337` — `executeDebugQuery` | raw SQL, list supplied by the caller | yes | yes | no | + +Read that column by column, because the three answers mean different things. + +**Runs in a test.** Three of the six are never executed. `getFinancialLogValidityChangeSet` is +replaced by `jest.spyOn(logRepo, …).mockResolvedValue([…])` at all nine of its appearances, so the +projection line itself never runs. `getFinancialLogAssetPrices` is stood in for by a hand-written +fake that reimplements the filtering in TypeScript. `hasOrderedOwnershipPath` appears in no spec at +all. The two summary queries do run, through the `getFinancialLogSummaries` dispatcher, which the +repository spec calls 31 times. + +**Column list asserted.** Where a query runs, `query` is spied and the generated SQL inspected — +an `expect(sql).toContain(...)` per projected column, and for the chart-only path an assertion +that `message` never appears in the statement at all. Drop a column from those statements and the suite turns red. +That is level 3 of the definition below, reached for three sites. For the three that never run, +removing a column changes nothing: the mock supplies the value regardless. + +**Real database.** None of the six. Every spec stubs the boundary — `createQueryBuilder` as a +chainable mock in the repository spec, `createMock()` in the service spec. A mock cannot +observe which columns were requested, so **level 1, the completeness test, is satisfied nowhere +today**, not even for the three sites whose SQL is asserted. Asserting that a column appears in a +statement is not the same as proving the statement returns every field the response needs. + +`executeDebugQuery` is a different case regardless: its field list comes from the request, so an +incomplete result is the caller's doing rather than a defect here. Its 197 specs cover a different +axis — the table and column allowlist, PII masking, parameter binding — and that is the right axis +for it. + +So the gap is narrow and specific: **`log.repository.ts:699` is the one site that carries the +projection risk, serves a live endpoint (`PUT /log/financial/validity`), and is not exercised at +all.** What surrounds it is well covered — batching into blocks of 100, the audit trail, rejection +of fabricated audit records, the block on changing validity through the generic update path. + +Every other read in the repository either selects only the root alias or nothing at all and +therefore still loads every column; nothing can be missing from those. Each becomes subject to these +tests the moment it is given a field list. ### How they run From 2d104e1e0a6fd7cda45aa223fb65407ec7f4c282 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 04:07:35 +0200 Subject: [PATCH 17/19] State the target and require coverage to be recorded per endpoint The inventory described where we stand but never said where we are going, so the numbers read as an observation rather than as a work list. States the target: every read path selects the fields it returns and nothing more. Makes the coverage requirement binding. An endpoint counts as converted only at 4/4 against the four levels, not at 3/4. A projection that drops a field does not crash - it answers 200 with a wrong value, and in a service moving money that can run for weeks unnoticed. Converting without the tests trades a slow query for a silent defect, which is the worse of the two. Adds a Tests column recording that state per endpoint, and a rule in CONTRIBUTING that it is updated in the same pull request that changes the code. An unrecorded conversion cannot be told apart from an untested one and is treated as untested. Today the column reads not yet 432 times, n/a 100 times and 0/4 once - the one converted read path whose projection no test executes. Adds a Spec column alongside it: 57 endpoints have a spec that names their controller and calls their handler. Labelled in the legend as what it is, a weak signal and a lower bound - it says a test touches the endpoint, not that it covers it, and it misses specs that drive a route over HTTP without naming the handler. --- CONTRIBUTING.md | 7 +- docs/endpoints.md | 1083 +++++++++++++++++---------------- docs/read-path-projections.md | 21 + 3 files changed, 575 insertions(+), 536 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 18b78bfb84..2b73f185e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -530,7 +530,12 @@ To verify a change, compare against the routes the framework logs at startup: ev - `.select('alias')` is **not** a projection — the argument is the entity alias, not a field list - a query builder carrying `.update()`, `.delete()` or `.insert()` is a write statement and loads nothing — the same goes for a raw `SELECT pg_advisory_xact_lock(...)`, which returns no rows; neither is part of that inventory -See [docs/read-path-projections.md](docs/read-path-projections.md) for what follows from that. +The target state is that every read path selects the fields it returns and nothing more. Two rules apply while we get there, and both are checked in review: + +- **A read path is converted only when its tests reach `4/4`** against the four levels in [docs/read-path-projections.md](docs/read-path-projections.md). A projection that drops a field does not crash — it answers 200 with a wrong value. Converting without the tests trades a slow query for a silent defect. +- **Record the state in the `Tests` column of [docs/endpoints.md](docs/endpoints.md) in the same PR that changes the code.** An unrecorded conversion is treated as untested. + +See [docs/read-path-projections.md](docs/read-path-projections.md) for the reasoning, the criteria for converting an endpoint, and what each of the four levels asserts. ### Cron Jobs diff --git a/docs/endpoints.md b/docs/endpoints.md index e232720d78..c43743fc63 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -11,6 +11,19 @@ Every HTTP endpoint this service exposes: **533 handlers** across 93 controller | **Swagger** | `public` — in the Swagger schema; `hidden` — carries `@ApiExcludeEndpoint` | | **Data access** | What the endpoint reads, taken over **all** load sites it can reach — a permission check, a lookup and the actual query all count. `whole rows` — at least one of them fetches every column of an entity; `projected` — every read names the fields it needs; `caller-defined` — the field list comes from the request, and without one every column is loaded; `none` — no read at all (external services, in-memory caches, files, pure write paths). | | **Max cols** | Widest single query the endpoint can trigger, measured against the real entity metadata. `—` means no measurable site, not zero. | +| **Tests** | State against the four levels in [read-path-projections.md](read-path-projections.md#test-definition). `n/a` — the definition does not apply (the endpoint reads nothing, or its field list comes from the caller); `not yet` — the endpoint has not been converted, so nothing can be missing from it yet; `0/4` to `4/4` — levels satisfied. **A converted endpoint counts as done only at `4/4`.** | +| **Spec** | `yes` when some spec file names this controller and calls this handler. A weak signal and a lower bound — it says a test touches the endpoint, not that it covers it, and it misses specs that drive a route over HTTP without naming the handler. | + +## The target state + +Every read path in this service is to select the fields it returns, and nothing more. This document is the work list for getting there and the record of where we stand. + +Two rules follow from that, and both are binding: + +1. **An endpoint counts as converted only when its tests reach `4/4`** against the four levels in [read-path-projections.md](read-path-projections.md#test-definition). A projection without them is worse than no projection: a forgotten field does not crash, it returns a wrong value with a 200, and in a service moving money that can run for weeks unnoticed. Anything short of `4/4` is unfinished work, not a partial success. +2. **The state of every endpoint is recorded here**, in the `Tests` column, and kept in sync with the code in the same pull request that changes it. An undocumented conversion is indistinguishable from one that was never tested. + +Today 4 endpoints read only what they return and 432 do not, so the column reads `not yet` almost everywhere. That is the point of recording it: the number is the distance to the target. ## What the numbers say @@ -95,540 +108,540 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea ## Endpoints -| Method | Ver | Dep | Path | Swagger | Data access | Max cols | Handler | File | -| ------ | --- | --- | ---- | ------- | ----------- | -------: | ------- | ---- | -| GET | neutral | | `/` | public | none | — | `AppController.home` | `app.controller.ts` | -| POST | 1 | | `/CustodyProvider` | public | none | — | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| PUT | 1 | | `/CustodyProvider/:id` | hidden | whole rows | 6 | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | -| POST | 1 | | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | | `/admin/mail` | public | whole rows | 13 | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | | `/admin/payout` | hidden | whole rows | 156 | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | | `/admin/sendLetter` | hidden | none | — | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | | `/alchemy/addressWebhook` | public | none | — | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | 1 | | `/alchemy/addresses/:webhookId` | public | none | — | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | 1 | | `/app` | public | whole rows | 6 | `AppController.createRefNew` | `app.controller.ts` | -| GET | 1 | | `/app/:app` | hidden | whole rows | 6 | `AppController.redirectToStore` | `app.controller.ts` | -| GET | 1 | | `/app/advertisements` | hidden | none | — | `AppController.getAds` | `app.controller.ts` | -| GET | 1 | | `/app/announcements` | public | none | — | `AppController.getAnnouncements` | `app.controller.ts` | -| GET | 1 | | `/app/settings/flags` | hidden | none | — | `AppController.getFlags` | `app.controller.ts` | -| GET | 1 | | `/asset` | public | whole rows | 33 | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | -| PUT | 1 | | `/asset/:id` | public | whole rows | 33 | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | -| POST | 1 | | `/auth` | public | whole rows | 643 | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/2fa` | hidden | whole rows | 253 | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | | `/auth/2fa` | public | whole rows | 253 | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | | `/auth/2fa/verify` | public | whole rows | 253 | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/alby` | hidden | none | — | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/alby/redirect/:id` | hidden | whole rows | 643 | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/challenge` | hidden | whole rows | 20 | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | | `/auth/mail` | hidden | whole rows | 643 | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/mail/confirm` | public | whole rows | 470 | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/mail/redirect` | hidden | whole rows | 643 | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | | `/auth/signIn` | hidden | whole rows | 643 | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/signMessage` | public | none | — | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | | `/auth/signUp` | public | whole rows | 643 | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/verifySignature` | public | whole rows | 6 | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/balance/pdf` | public | whole rows | 40 | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | 1 | | `/balance/pdf/blockchains` | public | none | — | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | -| GET | 1 | | `/bank` | public | whole rows | 46 | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| PUT | 1 | | `/bank/receiveIban` | public | whole rows | 101 | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| POST | 1 | | `/bank/yapeal/webhook` | public | none | — | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | -| GET | 1 | | `/bankAccount` | public | whole rows | 261 | `BankAccountController.getAllUserBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | 1 | | `/bankAccount` | public | whole rows | 261 | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | 1 | | `/bankAccount/:id` | public | whole rows | 261 | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | 1 | | `/bankAccount/bic` | hidden | whole rows | 26 | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | 1 | | `/bankAccount/iban` | public | whole rows | 26 | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | 1 | | `/bankData/:id` | public | whole rows | 31 | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| PUT | 1 | | `/bankData/:id/nameCheck` | hidden | whole rows | 276 | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| POST | 1 | | `/bankTx` | public | whole rows | 61 | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | 1 | | `/bankTx/:id` | hidden | whole rows | 1051 | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| DELETE | 1 | | `/bankTx/:id/buyCrypto` | hidden | whole rows | 247 | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | 1 | | `/bankTxRepeat/:id` | public | whole rows | 308 | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | -| PUT | 1 | | `/bankTxReturn/:id` | public | whole rows | 438 | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | 1 | | `/bankTxReturn/:id/refund` | hidden | whole rows | 727 | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | -| POST | 1 | | `/blockchain/balances` | public | whole rows | 33 | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | 1 | | `/blockchain/broadcast` | public | none | — | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| POST | 1 | | `/blockchain/transaction` | public | whole rows | 33 | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| GET | 1 | | `/buy` | public | whole rows | 308 | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | 1 | | `/buy` | hidden | whole rows | 364 | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | 1 | | `/buy/:id` | hidden | whole rows | 308 | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buy/:id` | public | whole rows | 308 | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | 1 | | `/buy/:id/history` | hidden | whole rows | 497 | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buy/paymentInfos` | public | whole rows | 364 | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buy/paymentInfos/:id/confirm` | public | whole rows | 504 | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buy/paymentInfos/:id/invoice` | public | whole rows | 504 | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | 1 | | `/buy/personalIban` | public | whole rows | 331 | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| POST | 1 | | `/buy/personalIban` | public | whole rows | 253 | `BuyController.createPersonalIban` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buy/quote` | hidden | whole rows | 143 | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buyCrypto/:id` | hidden | whole rows | 1090 | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| DELETE | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 422 | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 1090 | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | 1 | | `/buyCrypto/:id/refund` | hidden | whole rows | 1051 | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | 1 | | `/buyCrypto/:id/scorechain` | hidden | whole rows | 717 | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | 1 | | `/buyCrypto/:id/webhook` | public | whole rows | 844 | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | | `/buyCrypto/refVolumes` | hidden | whole rows | 77 | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | | `/buyCrypto/volumes` | hidden | whole rows | 487 | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| PUT | 1 | | `/buyFiat/:id` | hidden | whole rows | 1033 | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| DELETE | 1 | | `/buyFiat/:id/amlCheck` | hidden | whole rows | 490 | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | 1 | | `/buyFiat/:id/amlCheck` | hidden | whole rows | 1033 | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | 1 | | `/buyFiat/:id/refund` | hidden | whole rows | 803 | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | 1 | | `/buyFiat/:id/scorechain` | hidden | whole rows | 517 | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | 1 | | `/buyFiat/:id/webhook` | public | whole rows | 644 | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | 1 | | `/buyFiat/refVolumes` | hidden | whole rows | 77 | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| PUT | 1 | | `/buyFiat/volumes` | hidden | whole rows | 308 | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| GET | 1 | | `/country` | public | whole rows | 23 | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | -| GET | 1 | | `/cryptoRoute` | public | none | — | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| POST | 1 | | `/cryptoRoute` | hidden | none | — | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | 1 | | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| PUT | 1 | | `/cryptoRoute/:id` | hidden | none | — | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | 1 | | `/cryptoRoute/:id/history` | hidden | none | — | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | -| GET | 1 | | `/custody` | public | whole rows | 253 | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | 1 | | `/custody` | public | whole rows | 364 | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | 1 | | `/custody/account` | public | whole rows | 253 | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | 1 | | `/custody/account/:id` | public | whole rows | 253 | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | | `/custody/account/:id/access` | public | whole rows | 238 | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | 1 | | `/custody/account/:id/access` | public | whole rows | 253 | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| DELETE | 1 | | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| PUT | 1 | | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | | `/custody/account/:id/balance` | public | whole rows | 253 | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | | `/custody/account/:id/history` | public | whole rows | 253 | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | | `/custody/account/:id/order` | public | whole rows | 253 | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| GET | 1 | | `/custody/account/:id/pdf` | public | whole rows | 253 | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | -| POST | 1 | | `/custody/admin/order/:id/approve` | public | whole rows | 217 | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | | `/custody/admin/orders` | public | whole rows | 525 | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| PUT | 1 | | `/custody/admin/user/:id/balance` | public | whole rows | 308 | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | | `/custody/history` | public | whole rows | 253 | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | | `/custody/order` | public | whole rows | 19 | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | 1 | | `/custody/order` | public | whole rows | 364 | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| POST | 1 | | `/custody/order/:id/confirm` | public | whole rows | 525 | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | | `/custody/pdf` | public | whole rows | 253 | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | | `/dashboard/accounting/ledger/accounts` | public | whole rows | 54 | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | whole rows | 30 | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | | `/dashboard/accounting/ledger/equity-comparison` | hidden | whole rows | 54 | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | | `/dashboard/accounting/ledger/margin` | hidden | whole rows | 11 | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | | `/dashboard/accounting/ledger/reconciliation` | hidden | whole rows | 54 | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | | `/dashboard/accounting/ledger/suspense` | hidden | whole rows | 11 | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | -| GET | 1 | | `/dashboard/financial/changes` | hidden | whole rows | 11 | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | | `/dashboard/financial/changes/latest` | hidden | whole rows | 11 | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | | `/dashboard/financial/latest` | hidden | none | — | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | | `/dashboard/financial/log` | public | whole rows | 33 | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | | `/dashboard/financial/reconciliation` | public | whole rows | 229 | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | 1 | | `/dashboard/financial/reconciliation/overview` | hidden | whole rows | 229 | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | -| GET | 1 | | `/dashboard/financial/ref-recipients` | hidden | whole rows | 25 | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| POST | 1 | | `/deposit` | public | whole rows | 6 | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| PUT | 1 | | `/deposit/lightningWebhook` | hidden | none | — | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | -| GET | 1 | | `/deuro/info` | public | whole rows | 11 | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | -| GET | 1 | | `/dex/check-liquidity` | public | none | — | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| PUT | 1 | | `/dex/complete-orders` | hidden | whole rows | 156 | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | 1 | | `/dex/liquidity-after-purchase` | hidden | whole rows | 156 | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | 1 | | `/dex/purchase-liquidity` | hidden | none | — | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | 1 | | `/dex/reserve-liquidity` | hidden | none | — | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | 1 | | `/dex/transfer-completion` | hidden | none | — | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | -| POST | 1 | | `/dex/transfer-liquidity` | hidden | none | — | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | 1 | | `/exchange/:exchange/balances` | public | none | — | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | | `/exchange/:exchange/price` | hidden | none | — | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | -| PUT | 1 | | `/exchange/:exchange/sync` | hidden | whole rows | 40 | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | 1 | | `/exchange/:exchange/trade` | hidden | none | — | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | | `/exchange/:exchange/trade/history` | hidden | none | — | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | 1 | | `/exchange/:exchange/withdraw` | hidden | none | — | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | | `/exchange/:exchange/withdraw/:id` | public | none | — | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | | `/exchange/trade/:id` | hidden | none | — | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | 1 | | `/faucet` | public | whole rows | 308 | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | -| POST | 1 | | `/fee` | public | whole rows | 65 | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | -| GET | 1 | | `/fiat` | public | whole rows | 23 | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | -| POST | 1 | | `/fiatOutput` | public | whole rows | 377 | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| PUT | 1 | | `/fiatOutput/:id` | hidden | whole rows | 59 | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | -| GET | 1 | | `/frankencoin/info` | public | whole rows | 11 | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | 1 | | `/gs/db` | public | caller-defined | 13 | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | 1 | | `/gs/db/custom` | hidden | caller-defined | — | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | -| POST | 1 | | `/gs/debug` | hidden | projected | — | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | -| POST | 1 | | `/gs/evm/bridgeApproval` | hidden | whole rows | 33 | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | | `/gs/evm/coinTransaction` | hidden | whole rows | 6 | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | | `/gs/evm/contractApproval` | hidden | whole rows | 33 | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | | `/gs/evm/contractTransaction` | hidden | none | — | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | | `/gs/evm/rawTransaction` | public | whole rows | 6 | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | | `/gs/evm/tokenTransaction` | hidden | whole rows | 33 | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| GET | 1 | | `/gs/support` | hidden | whole rows | 907 | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | -| GET | neutral | | `/health` | public | none | — | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | | `/health/banking` | public | none | — | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | | `/health/external` | public | none | — | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | | `/health/liquidity` | public | none | — | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | | `/health/nodes` | public | none | — | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | neutral | | `/health/payment` | public | none | — | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | 1 | | `/history` | public | whole rows | 1363 | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | 1 | | `/history/:exportType` | hidden | whole rows | 1363 | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | 1 | | `/history/csv` | hidden | none | — | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| POST | 1 | | `/history/csv` | public | whole rows | 1363 | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| GET | 1 | | `/ikna/bfs/:id` | hidden | none | — | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | -| POST | 1 | | `/ikna/bfs/address` | public | none | — | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | 1 | | `/ikna/tag` | hidden | none | — | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | -| GET | 1 | | `/juice/info` | public | whole rows | 11 | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | -| GET | 1 | yes | `/kyc` | public | whole rows | 351 | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 2 | | `/kyc` | public | whole rows | 351 | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 1 | yes | `/kyc` | public | whole rows | 351 | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| PUT | 2 | | `/kyc` | public | whole rows | 364 | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 2 | | `/kyc/2fa` | public | whole rows | 253 | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | | `/kyc/2fa` | public | whole rows | 253 | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | | `/kyc/2fa/verify` | public | whole rows | 253 | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 1 | yes | `/kyc/:code` | public | whole rows | 351 | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| POST | 1 | yes | `/kyc/:code` | public | whole rows | 351 | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | yes | `/kyc/:code/countries` | public | whole rows | 351 | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | yes | `/kyc/:id/documents` | public | whole rows | 328 | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | yes | `/kyc/:id/documents/:type` | public | whole rows | 328 | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 2 | | `/kyc/:step` | public | whole rows | 364 | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| DELETE | 1 | | `/kyc/admin/blacklist/ip` | hidden | none | — | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | | `/kyc/admin/blacklist/ip` | hidden | whole rows | 12 | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | 1 | | `/kyc/admin/ident/file/sync` | hidden | whole rows | 243 | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | 1 | | `/kyc/admin/log` | hidden | whole rows | 253 | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | | `/kyc/admin/log/:id` | hidden | whole rows | 17 | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | | `/kyc/admin/nameCheck/:id` | public | whole rows | 245 | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | | `/kyc/admin/step/:id` | hidden | whole rows | 385 | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| POST | 1 | | `/kyc/admin/webhook` | hidden | whole rows | 364 | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| GET | 2 | | `/kyc/client/payments` | public | whole rows | 1092 | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | | `/kyc/client/users` | public | whole rows | 20 | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | | `/kyc/client/users/:id/documents` | public | whole rows | 78 | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | | `/kyc/client/users/:id/documents/:type` | public | whole rows | 78 | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 2 | | `/kyc/client/users/:id/payments` | public | whole rows | 1092 | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | -| GET | 1 | yes | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 2 | yes | `/kyc/countries` | public | whole rows | 351 | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| DELETE | 2 | | `/kyc/data/:type/:id` | hidden | whole rows | 351 | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/additional/:id` | public | whole rows | 364 | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/address/:id` | public | whole rows | 364 | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/authority/:id` | public | whole rows | 364 | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/beneficial/:id` | public | whole rows | 364 | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/confirmation/:id` | public | whole rows | 364 | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/contact/:id` | hidden | whole rows | 364 | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 2 | | `/kyc/data/financial/:id` | public | whole rows | 351 | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/financial/:id` | public | whole rows | 364 | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/legal/:id` | public | whole rows | 364 | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/name/:id` | public | whole rows | 364 | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/nationality/:id` | public | whole rows | 364 | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/operational/:id` | public | whole rows | 364 | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/owner/:id` | public | whole rows | 364 | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/payment/:id` | public | whole rows | 364 | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/personal/:id` | public | whole rows | 364 | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/phone/:id` | public | whole rows | 364 | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/recall/:id` | public | whole rows | 364 | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/recommendation/:id` | public | whole rows | 643 | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/residence/:id` | public | whole rows | 364 | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/signatory/:id` | public | whole rows | 364 | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/statutes/:id` | public | whole rows | 364 | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 2 | | `/kyc/file/:id` | hidden | whole rows | 264 | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/ident/manual/:id` | hidden | whole rows | 364 | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | | `/kyc/ident/sumsub` | public | whole rows | 364 | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| DELETE | 2 | | `/kyc/transfer` | hidden | whole rows | 351 | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | | `/kyc/transfer` | hidden | whole rows | 364 | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 1 | yes | `/kyc/transfer` | public | whole rows | 364 | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | yes | `/kyc/users` | public | whole rows | 328 | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 1 | | `/language` | public | whole rows | 7 | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | -| PUT | 1 | | `/limitRequest/:id` | public | whole rows | 434 | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | -| GET | 1 | | `/liquidityManagement/balance` | public | whole rows | 40 | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | -| PUT | 1 | | `/liquidityManagement/order/:id/resolveUncertain` | hidden | whole rows | 139 | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | 1 | | `/liquidityManagement/order/in-progress` | public | whole rows | 139 | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | 1 | | `/liquidityManagement/pipeline/:id/status` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | | `/liquidityManagement/pipeline/buy` | public | whole rows | 112 | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | 1 | | `/liquidityManagement/pipeline/in-progress` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | | `/liquidityManagement/pipeline/sell` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| GET | 1 | | `/liquidityManagement/pipeline/stopped` | hidden | whole rows | 112 | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | | `/liquidityManagement/rule` | public | whole rows | 83 | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PUT | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | 1 | | `/liquidityManagement/rule/:id/deactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | 1 | | `/liquidityManagement/rule/:id/reactivate` | hidden | whole rows | 83 | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| PATCH | 1 | | `/liquidityManagement/rule/:id/settings` | hidden | whole rows | 83 | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | -| GET | 1 | | `/lnurla` | public | whole rows | 643 | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| POST | 1 | | `/lnurla` | public | none | — | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | 1 | | `/lnurla/status` | public | none | — | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | -| GET | 1 | | `/lnurld/:id` | public | none | — | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | 1 | | `/lnurld/cb/:id/:var` | public | none | — | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | -| GET | 1 | | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| POST | 1 | | `/lnurlp/:id` | public | whole rows | 545 | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| DELETE | 1 | | `/lnurlp/cancel/:id` | public | whole rows | 545 | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | | `/lnurlp/cb/:id` | public | whole rows | 545 | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | | `/lnurlp/tx/:id` | public | whole rows | 545 | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | | `/lnurlp/wait/:id` | public | whole rows | 545 | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | -| GET | 1 | | `/lnurlw/:id` | public | none | — | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| GET | 1 | | `/lnurlw/cb/:id` | public | none | — | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | 1 | | `/log` | public | whole rows | 11 | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | -| PUT | 1 | | `/log/:id` | hidden | whole rows | 11 | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | -| PUT | 1 | | `/log/financial/validity` | hidden | projected | 11 | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | -| GET | 1 | | `/monitoring/data` | public | none | — | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | -| POST | 1 | | `/monitoring/data` | hidden | none | — | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | -| GET | 1 | | `/mros` | hidden | whole rows | 243 | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | 1 | | `/mros` | public | whole rows | 253 | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | -| GET | 1 | | `/mros/:id` | hidden | whole rows | 243 | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | -| PUT | 1 | | `/mros/:id` | hidden | whole rows | 98 | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | 1 | | `/node/:node/:mode/cmd` | hidden | none | — | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | | `/node/:node/:mode/rpc` | hidden | none | — | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | 1 | | `/node/:node/:mode/tx/:txId` | hidden | none | — | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | | `/node/:node/cmd` | hidden | none | — | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | | `/node/:node/rpc` | public | none | — | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| GET | 1 | | `/node/:node/tx/:txId` | hidden | none | — | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | | `/notification/send-mail` | public | whole rows | 13 | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | 1 | | `/payIn` | public | whole rows | 545 | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | 1 | | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | 1 | | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | -| POST | 1 | | `/payIn/poll` | hidden | none | — | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | 1 | | `/payIn/retry` | hidden | whole rows | — | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| GET | 1 | | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | | `/paymentLink` | public | whole rows | 545 | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink` | public | whole rows | 513 | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | 1 | | `/paymentLink/:id` | hidden | whole rows | 195 | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/:id` | hidden | whole rows | 513 | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/:id/pos` | hidden | whole rows | 513 | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/assign` | public | whole rows | 513 | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/config` | public | whole rows | 253 | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/history` | public | whole rows | 545 | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/integration/binance/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/integration/binance/webhook` | hidden | whole rows | 545 | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/integration/kucoin/activate/:id` | public | whole rows | 513 | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/locations` | public | whole rows | 513 | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/merchant` | public | whole rows | 253 | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| DELETE | 1 | | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/payment` | hidden | whole rows | 545 | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/payment` | public | whole rows | 545 | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/payment/:id` | public | whole rows | 545 | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/payment/confirm` | public | whole rows | 513 | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/payment/wait` | public | whole rows | 513 | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/pos` | public | whole rows | 513 | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/recipient` | public | whole rows | 472 | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/standard` | public | none | — | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | 1 | | `/paymentLink/standard/:id` | public | none | — | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | -| GET | 1 | | `/paymentLink/stickers` | hidden | whole rows | 513 | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/walletApp` | public | whole rows | 33 | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | 1 | | `/paymentLink/walletApp/:id` | public | whole rows | 33 | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| GET | 1 | | `/paymentLink/walletApp/recommended` | public | whole rows | 33 | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | 1 | | `/payout` | public | none | — | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | 1 | | `/payout/completion` | hidden | whole rows | 123 | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | 1 | | `/payout/retry` | hidden | whole rows | 123 | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | -| POST | 1 | | `/payout/speedup` | hidden | whole rows | 123 | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | neutral | | `/pl` | public | whole rows | 545 | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | -| GET | 1 | | `/plp` | public | whole rows | 545 | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/pricing` | hidden | none | — | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| PUT | 1 | | `/pricing` | hidden | whole rows | 53 | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | 1 | | `/pricing/price` | public | whole rows | 33 | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | 1 | | `/realunit/account/:address` | public | whole rows | 40 | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/account/:address/history` | public | none | — | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/admin/quotes` | public | whole rows | 112 | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/admin/quotes/:id/confirm-payment` | hidden | whole rows | 1051 | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/admin/registration/:id/forward` | hidden | whole rows | 493 | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/admin/transactions` | hidden | whole rows | 362 | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | | `/realunit/balance/pdf` | public | whole rows | 308 | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | yes | `/realunit/brokerbot/buyPrice` | public | none | — | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | yes | `/realunit/brokerbot/buyShares` | public | none | — | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | yes | `/realunit/brokerbot/info` | public | whole rows | 33 | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | yes | `/realunit/brokerbot/price` | public | none | — | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | yes | `/realunit/brokerbot/sellPrice` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | yes | `/realunit/brokerbot/sellShares` | public | whole rows | 308 | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/buy` | public | whole rows | 364 | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/buy/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/compliance/customers` | public | whole rows | 308 | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | | `/realunit/compliance/customers/:id` | hidden | whole rows | 826 | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | | `/realunit/compliance/customers/:id/dossier` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | | `/realunit/compliance/customers/:id/files` | hidden | whole rows | 264 | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | | `/realunit/compliance/customers/:id/files/:uid` | hidden | whole rows | 264 | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | -| GET | 1 | | `/realunit/confirm-aktionariat` | public | whole rows | 15 | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/holders` | public | none | — | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| PUT | 1 | | `/realunit/legal` | public | whole rows | 308 | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | -| GET | 1 | | `/realunit/pay/:id/status` | public | whole rows | 32 | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/pay/submit` | public | whole rows | 545 | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/pay/unsigned-transaction` | public | whole rows | 545 | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/price` | public | whole rows | 33 | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/price/history` | public | whole rows | 40 | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/quote/buyPrice` | public | none | — | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/quote/buyShares` | public | none | — | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/quote/info` | public | whole rows | 33 | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/quote/price` | public | none | — | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/quote/sellPrice` | public | whole rows | 308 | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/quote/sellShares` | public | whole rows | 308 | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | | `/realunit/register/complete` | public | whole rows | 493 | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/register/date` | public | none | — | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | | `/realunit/register/email` | public | whole rows | 364 | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/register/status` | public | whole rows | 308 | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | | `/realunit/register/wallet` | public | whole rows | 493 | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/registration` | public | whole rows | 308 | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/sell` | public | whole rows | 308 | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/sell/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/sell/:id/confirm` | public | whole rows | 504 | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/sell/:id/unsigned-transactions` | public | whole rows | 504 | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/support/:id` | hidden | whole rows | 421 | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/:id/data` | hidden | whole rows | 951 | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| POST | 1 | | `/realunit/support/:id/message` | hidden | whole rows | 441 | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/:id/message/:messageId/file` | hidden | whole rows | 421 | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/:id/messages` | hidden | whole rows | 428 | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/activity` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/clerks` | hidden | none | — | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/counts` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/list` | public | whole rows | 99 | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/statistics` | hidden | whole rows | 99 | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| PUT | 1 | | `/realunit/swap` | public | whole rows | 308 | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/swap/:id/broadcast` | public | whole rows | 504 | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/swap/:id/unsigned-transaction` | public | whole rows | 504 | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/tokenInfo` | public | none | — | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | | `/realunit/transactions/receipt/multi` | public | whole rows | 308 | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| POST | 1 | | `/realunit/transactions/receipt/single` | public | whole rows | 308 | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/transfer` | public | whole rows | 308 | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| PUT | 1 | | `/realunit/transfer/:id/confirm` | public | whole rows | 87 | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | yes | `/realunit/wallet/status` | public | whole rows | 308 | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/recall` | hidden | whole rows | 174 | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | 1 | | `/recall` | public | whole rows | 308 | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | 1 | | `/recall/:id` | hidden | whole rows | 174 | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | -| PUT | 1 | | `/recall/:id` | hidden | whole rows | 308 | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | 1 | | `/recommendation` | public | whole rows | 474 | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| POST | 1 | | `/recommendation` | hidden | whole rows | 364 | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | 1 | | `/recommendation/:id/confirm` | hidden | whole rows | 643 | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| PUT | 1 | | `/recommendation/:id/reject` | hidden | whole rows | 643 | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| GET | 1 | | `/ref` | public | none | — | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | -| POST | 1 | | `/reward/ref` | hidden | whole rows | 156 | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | 1 | | `/reward/ref/:id` | hidden | whole rows | 234 | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| POST | 1 | | `/reward/ref/manual` | hidden | whole rows | 308 | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | 1 | | `/reward/ref/volumes` | public | whole rows | 308 | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| GET | 1 | | `/route` | public | whole rows | 308 | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | -| PUT | 1 | | `/route/:id` | hidden | whole rows | 174 | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | -| POST | 1 | | `/scorechain/screening` | public | whole rows | 14 | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | -| GET | 1 | | `/sell` | public | whole rows | 308 | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| POST | 1 | | `/sell` | hidden | whole rows | 308 | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | | `/sell/:id` | hidden | whole rows | 377 | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | | `/sell/:id` | public | whole rows | 308 | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | | `/sell/:id/history` | hidden | whole rows | 470 | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | | `/sell/paymentInfos` | public | whole rows | 308 | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | | `/sell/paymentInfos/:id/confirm` | public | whole rows | 545 | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | | `/sell/paymentInfos/:id/tx` | public | whole rows | 504 | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | | `/sell/quote` | hidden | whole rows | 143 | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | | `/setting` | public | whole rows | 5 | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | -| PUT | 1 | | `/setting/:key` | hidden | whole rows | 5 | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | -| PUT | 1 | | `/setting/customSignUpFees` | hidden | none | — | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | -| PUT | 1 | | `/setting/disabledProcesses` | hidden | none | — | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | -| GET | 1 | | `/setting/infoBanner` | public | none | — | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | -| POST | 1 | | `/specialExternalAccount` | public | whole rows | 7 | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | -| GET | 1 | | `/statistic` | public | none | — | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | 1 | | `/statistic/status` | public | whole rows | 5 | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | 1 | | `/statistic/transactions` | public | whole rows | 419 | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | 1 | | `/support` | public | whole rows | 593 | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/:id` | hidden | whole rows | 826 | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/:id/ip-log-pdf` | hidden | whole rows | 12 | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | -| POST | 1 | | `/support/:id/onboarding-pdf` | hidden | whole rows | 264 | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/:id/scorechain` | hidden | whole rows | 14 | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/:id/transaction-pdf` | hidden | whole rows | 826 | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/call-queues` | hidden | none | — | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/call-queues/:queue/items` | hidden | whole rows | 672 | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/call-queues/clerks` | hidden | none | — | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/issue` | public | whole rows | 450 | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | | `/support/issue` | public | whole rows | 493 | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/:id` | hidden | whole rows | 450 | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | 1 | | `/support/issue/:id` | public | whole rows | 421 | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | 1 | | `/support/issue/:id/close` | public | whole rows | 450 | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/:id/data` | hidden | whole rows | 951 | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | | `/support/issue/:id/message` | hidden | whole rows | 441 | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/:id/message/:messageId/file` | public | whole rows | — | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/activity` | hidden | whole rows | 7 | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/clerk` | hidden | none | — | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/clerks` | hidden | none | — | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/counts` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | | `/support/issue/escalation/telegram-bind` | hidden | whole rows | 5 | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/escalation/telegram-chats` | hidden | none | — | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | | `/support/issue/escalation/telegram-test` | hidden | whole rows | 5 | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/list` | public | whole rows | 16 | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/statistics` | hidden | whole rows | 16 | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | | `/support/issue/support` | public | whole rows | 493 | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/kycFileList` | hidden | whole rows | 253 | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/kycFileStats` | hidden | whole rows | 99 | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/note` | hidden | whole rows | 9 | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | -| POST | 1 | | `/support/note` | hidden | whole rows | 253 | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | -| DELETE | 1 | | `/support/note/:id` | hidden | whole rows | 9 | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | -| PUT | 1 | | `/support/note/:id` | hidden | whole rows | 239 | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/note/users` | hidden | whole rows | 9 | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/pending-reviews` | hidden | whole rows | 15 | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/pending-reviews/items` | hidden | whole rows | 261 | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/pending-transactions` | hidden | whole rows | 672 | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/recommendation-graph/:id/neighbors` | hidden | whole rows | 474 | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/template` | hidden | whole rows | 8 | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | -| POST | 1 | | `/support/template` | hidden | whole rows | 253 | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | -| DELETE | 1 | | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | -| PUT | 1 | | `/support/template/:id` | hidden | whole rows | 8 | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 143 | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| PUT | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 415 | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/support/transactionList` | hidden | whole rows | 20 | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/swap` | public | whole rows | 308 | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | 1 | | `/swap` | hidden | whole rows | 308 | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | 1 | | `/swap/:id` | hidden | whole rows | 308 | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | | `/swap/:id` | public | whole rows | 396 | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | 1 | | `/swap/:id/history` | hidden | whole rows | 509 | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | | `/swap/paymentInfos` | public | whole rows | 308 | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | | `/swap/paymentInfos/:id/confirm` | public | whole rows | 545 | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | 1 | | `/swap/paymentInfos/:id/tx` | public | whole rows | 504 | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | | `/swap/quote` | hidden | whole rows | 143 | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | 1 | | `/tatum/addressWebhook` | public | none | — | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | -| PUT | 1 | | `/trading/rule/:id` | public | whole rows | 87 | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | -| GET | 1 | | `/transaction` | public | whole rows | 1363 | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/:id/invoice` | public | whole rows | 331 | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/:id/receipt` | public | whole rows | 331 | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/:id/refund` | public | whole rows | 331 | `TransactionController.getTransactionRefund` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/:id/refund` | public | whole rows | 487 | `TransactionController.setTransactionRefundTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/:id/target` | hidden | whole rows | 1051 | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/ChainReport` | hidden | whole rows | 1363 | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/CoinTracking` | public | whole rows | 1363 | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/admin/:id` | public | whole rows | 276 | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | 1 | | `/transaction/admin/:id/stop` | hidden | whole rows | 98 | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| POST | 1 | | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| PUT | 1 | | `/transaction/admin/:txId/riskAssessment/:id` | hidden | whole rows | 13 | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | -| GET | 1 | | `/transaction/csv` | public | none | — | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/csv` | public | whole rows | 1363 | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/detail` | hidden | whole rows | 1363 | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/detail/csv` | public | whole rows | 1363 | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/detail/single` | public | whole rows | 487 | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/single` | public | whole rows | 487 | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/target` | hidden | whole rows | 134 | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/unassigned` | public | whole rows | 356 | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | -| DELETE | 1 | yes | `/user` | public | whole rows | 344 | `UserController.deleteUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 2 | | `/user` | public | whole rows | 344 | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | yes | `/user` | public | whole rows | 328 | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 2 | | `/user` | public | whole rows | 351 | `UserV2Controller.getUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | yes | `/user` | public | whole rows | 406 | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | | `/user` | public | whole rows | 351 | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | | `/user/:id` | hidden | whole rows | 364 | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 1 | yes | `/user/account` | public | whole rows | 344 | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 2 | | `/user/addresses/:address` | public | whole rows | 344 | `UserV2Controller.deleteAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | | `/user/addresses/:address` | public | whole rows | 351 | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | | `/user/apiFilter/CT` | public | whole rows | 331 | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | -| DELETE | 1 | | `/user/apiKey/CT` | public | none | — | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 1 | | `/user/apiKey/CT` | public | whole rows | 253 | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 1 | | `/user/change` | public | whole rows | 643 | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 1 | | `/user/data` | hidden | whole rows | 406 | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | yes | `/user/detail` | public | whole rows | 328 | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | yes | `/user/discountCodes` | public | whole rows | 308 | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | | `/user/mail` | public | whole rows | 364 | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 2 | | `/user/mail/verify` | public | whole rows | 364 | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | | `/user/name` | public | whole rows | 386 | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 2 | | `/user/profile` | public | whole rows | 253 | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | | `/user/ref` | public | whole rows | 45 | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 2 | | `/user/ref` | public | whole rows | 98 | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 2 | | `/user/ref` | public | whole rows | 98 | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | | `/user/specialCodes` | public | whole rows | 308 | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | | `/user/volumes` | hidden | whole rows | 45 | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | | `/userData` | public | whole rows | 253 | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | | `/userData` | hidden | whole rows | 253 | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| GET | 1 | | `/userData/:id` | public | whole rows | 253 | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | | `/userData/:id` | hidden | whole rows | 384 | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | | `/userData/:id/bankDatas` | hidden | whole rows | 284 | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| DELETE | 1 | | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | | `/userData/:id/fee` | hidden | whole rows | 253 | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | | `/userData/:id/kycFile` | hidden | whole rows | 253 | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | | `/userData/:id/merge` | hidden | whole rows | 364 | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | | `/userData/:id/volumes` | hidden | whole rows | — | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| PUT | 1 | | `/userData/auditPeriodNumbers` | hidden | whole rows | 40 | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | | `/userData/download` | public | whole rows | 253 | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | | `/userDataRelation` | public | whole rows | 253 | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| DELETE | 1 | | `/userDataRelation/:id` | public | none | — | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| PUT | 1 | | `/userDataRelation/:id` | public | whole rows | 7 | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | -| GET | neutral | | `/version` | hidden | none | — | `AppController.getVersion` | `app.controller.ts` | -| POST | 1 | | `/wallet` | public | none | — | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | -| PUT | 1 | | `/wallet/:id` | hidden | whole rows | 20 | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| Method | Ver | Dep | Path | Swagger | Data access | Max cols | Tests | Spec | Handler | File | +| ------ | --- | --- | ---- | ------- | ----------- | -------: | ----- | ---- | ------- | ---- | +| GET | neutral | | `/` | public | none | — | n/a | | `AppController.home` | `app.controller.ts` | +| POST | 1 | | `/CustodyProvider` | public | none | — | n/a | | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| PUT | 1 | | `/CustodyProvider/:id` | hidden | whole rows | 6 | not yet | | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| POST | 1 | | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | n/a | | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/admin/mail` | public | whole rows | 13 | not yet | | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/admin/payout` | hidden | whole rows | 156 | not yet | | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/admin/sendLetter` | hidden | none | — | n/a | | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/alchemy/addressWebhook` | public | none | — | n/a | | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | | `/alchemy/addresses/:webhookId` | public | none | — | n/a | | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | | `/app` | public | whole rows | 6 | not yet | | `AppController.createRefNew` | `app.controller.ts` | +| GET | 1 | | `/app/:app` | hidden | whole rows | 6 | not yet | | `AppController.redirectToStore` | `app.controller.ts` | +| GET | 1 | | `/app/advertisements` | hidden | none | — | n/a | | `AppController.getAds` | `app.controller.ts` | +| GET | 1 | | `/app/announcements` | public | none | — | n/a | | `AppController.getAnnouncements` | `app.controller.ts` | +| GET | 1 | | `/app/settings/flags` | hidden | none | — | n/a | | `AppController.getFlags` | `app.controller.ts` | +| GET | 1 | | `/asset` | public | whole rows | 33 | not yet | | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | 1 | | `/asset/:id` | public | whole rows | 33 | not yet | | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| POST | 1 | | `/auth` | public | whole rows | 643 | not yet | | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/2fa` | hidden | whole rows | 253 | not yet | | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/2fa` | public | whole rows | 253 | not yet | | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/2fa/verify` | public | whole rows | 253 | not yet | | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/alby` | hidden | none | — | n/a | | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/alby/redirect/:id` | hidden | whole rows | 643 | not yet | | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/challenge` | hidden | whole rows | 20 | not yet | | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/mail` | hidden | whole rows | 643 | not yet | | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/mail/confirm` | public | whole rows | 470 | not yet | | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/mail/redirect` | hidden | whole rows | 643 | not yet | | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/signIn` | hidden | whole rows | 643 | not yet | | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/signMessage` | public | none | — | n/a | | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/signUp` | public | whole rows | 643 | not yet | | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/verifySignature` | public | whole rows | 6 | not yet | | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/balance/pdf` | public | whole rows | 40 | not yet | | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | 1 | | `/balance/pdf/blockchains` | public | none | — | n/a | | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | +| GET | 1 | | `/bank` | public | whole rows | 46 | not yet | | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| PUT | 1 | | `/bank/receiveIban` | public | whole rows | 101 | not yet | yes | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | +| POST | 1 | | `/bank/yapeal/webhook` | public | none | — | n/a | | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| GET | 1 | | `/bankAccount` | public | whole rows | 261 | not yet | | `BankAccountController.getAllUserBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | | `/bankAccount` | public | whole rows | 261 | not yet | | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | 1 | | `/bankAccount/:id` | public | whole rows | 261 | not yet | | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | | `/bankAccount/bic` | hidden | whole rows | 26 | not yet | | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| POST | 1 | | `/bankAccount/iban` | public | whole rows | 26 | not yet | | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | 1 | | `/bankData/:id` | public | whole rows | 31 | not yet | | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| PUT | 1 | | `/bankData/:id/nameCheck` | hidden | whole rows | 276 | not yet | | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | 1 | | `/bankTx` | public | whole rows | 61 | not yet | | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | 1 | | `/bankTx/:id` | hidden | whole rows | 1051 | not yet | | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| DELETE | 1 | | `/bankTx/:id/buyCrypto` | hidden | whole rows | 247 | not yet | | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| PUT | 1 | | `/bankTxRepeat/:id` | public | whole rows | 308 | not yet | | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | 1 | | `/bankTxReturn/:id` | public | whole rows | 438 | not yet | | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | 1 | | `/bankTxReturn/:id/refund` | hidden | whole rows | 727 | not yet | | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| POST | 1 | | `/blockchain/balances` | public | whole rows | 33 | not yet | | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | 1 | | `/blockchain/broadcast` | public | none | — | n/a | | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| POST | 1 | | `/blockchain/transaction` | public | whole rows | 33 | not yet | | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | +| GET | 1 | | `/buy` | public | whole rows | 308 | not yet | | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | 1 | | `/buy` | hidden | whole rows | 364 | not yet | | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy/:id` | hidden | whole rows | 308 | not yet | | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/:id` | public | whole rows | 308 | not yet | | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy/:id/history` | hidden | whole rows | 497 | not yet | | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/paymentInfos` | public | whole rows | 364 | not yet | | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/paymentInfos/:id/confirm` | public | whole rows | 504 | not yet | | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/paymentInfos/:id/invoice` | public | whole rows | 504 | not yet | yes | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy/personalIban` | public | whole rows | 331 | not yet | | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| POST | 1 | | `/buy/personalIban` | public | whole rows | 253 | not yet | | `BuyController.createPersonalIban` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/quote` | hidden | whole rows | 143 | not yet | | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buyCrypto/:id` | hidden | whole rows | 1090 | not yet | | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| DELETE | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 422 | not yet | | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 1090 | not yet | | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | | `/buyCrypto/:id/refund` | hidden | whole rows | 1051 | not yet | | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | | `/buyCrypto/:id/scorechain` | hidden | whole rows | 717 | not yet | | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | | `/buyCrypto/:id/webhook` | public | whole rows | 844 | not yet | | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyCrypto/refVolumes` | hidden | whole rows | 77 | not yet | | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyCrypto/volumes` | hidden | whole rows | 487 | not yet | | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| PUT | 1 | | `/buyFiat/:id` | hidden | whole rows | 1033 | not yet | | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| DELETE | 1 | | `/buyFiat/:id/amlCheck` | hidden | whole rows | 490 | not yet | | `BuyFiatController.resetAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | | `/buyFiat/:id/amlCheck` | hidden | whole rows | 1033 | not yet | | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | | `/buyFiat/:id/refund` | hidden | whole rows | 803 | not yet | | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | | `/buyFiat/:id/scorechain` | hidden | whole rows | 517 | not yet | | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | | `/buyFiat/:id/webhook` | public | whole rows | 644 | not yet | | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | | `/buyFiat/refVolumes` | hidden | whole rows | 77 | not yet | | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| PUT | 1 | | `/buyFiat/volumes` | hidden | whole rows | 308 | not yet | | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| GET | 1 | | `/country` | public | whole rows | 23 | not yet | | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | +| GET | 1 | | `/cryptoRoute` | public | none | — | n/a | | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| POST | 1 | | `/cryptoRoute` | hidden | none | — | n/a | | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | | `/cryptoRoute/:id` | hidden | none | — | n/a | | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| PUT | 1 | | `/cryptoRoute/:id` | hidden | none | — | n/a | | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | | `/cryptoRoute/:id/history` | hidden | none | — | n/a | | `CryptoRouteController.getCryptoRouteHistory` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | | `/custody` | public | whole rows | 253 | not yet | | `CustodyController.getUserCustodyBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | | `/custody` | public | whole rows | 364 | not yet | | `CustodyController.createCustodyAccount` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/account` | public | whole rows | 253 | not yet | | `CustodyAccountController.getCustodyAccounts` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | | `/custody/account` | public | whole rows | 253 | not yet | | `CustodyAccountController.createCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id` | public | whole rows | 253 | not yet | | `CustodyAccountController.getCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | 1 | | `/custody/account/:id` | public | whole rows | 253 | not yet | | `CustodyAccountController.updateCustodyAccount` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/access` | public | whole rows | 238 | not yet | | `CustodyAccountController.getAccessList` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | | `/custody/account/:id/access` | public | whole rows | 253 | not yet | | `CustodyAccountController.grantAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| DELETE | 1 | | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | not yet | | `CustodyAccountController.revokeAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| PUT | 1 | | `/custody/account/:id/access/:accessId` | public | whole rows | 238 | not yet | | `CustodyAccountController.updateAccess` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/balance` | public | whole rows | 253 | not yet | | `CustodyAccountController.getAccountBalance` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/history` | public | whole rows | 253 | not yet | | `CustodyAccountController.getAccountHistory` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/order` | public | whole rows | 253 | not yet | | `CustodyAccountController.getAccountOrders` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| GET | 1 | | `/custody/account/:id/pdf` | public | whole rows | 253 | not yet | | `CustodyAccountController.getAccountPdf` | `subdomains/core/custody/controllers/custody-account.controller.ts` | +| POST | 1 | | `/custody/admin/order/:id/approve` | public | whole rows | 217 | not yet | | `CustodyAdminController.approveOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/admin/orders` | public | whole rows | 525 | not yet | | `CustodyAdminController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| PUT | 1 | | `/custody/admin/user/:id/balance` | public | whole rows | 308 | not yet | | `CustodyAdminController.updateUserBalance` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/history` | public | whole rows | 253 | not yet | | `CustodyController.getUserCustodyHistory` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/order` | public | whole rows | 19 | not yet | | `CustodyController.getOrders` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | | `/custody/order` | public | whole rows | 364 | not yet | | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| POST | 1 | | `/custody/order/:id/confirm` | public | whole rows | 525 | not yet | | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/custody/pdf` | public | whole rows | 253 | not yet | | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/accounts` | public | whole rows | 54 | not yet | yes | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | whole rows | 30 | not yet | yes | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/equity-comparison` | hidden | whole rows | 54 | not yet | yes | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/margin` | hidden | whole rows | 11 | not yet | yes | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/reconciliation` | hidden | whole rows | 54 | not yet | yes | `LedgerController.getReconStatus` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/suspense` | hidden | whole rows | 11 | not yet | yes | `LedgerController.getSuspense` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/financial/changes` | hidden | whole rows | 11 | not yet | | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/changes/latest` | hidden | whole rows | 11 | not yet | | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/latest` | hidden | none | — | n/a | | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/log` | public | whole rows | 33 | not yet | yes | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/reconciliation` | public | whole rows | 229 | not yet | | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | 1 | | `/dashboard/financial/reconciliation/overview` | hidden | whole rows | 229 | not yet | | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | 1 | | `/dashboard/financial/ref-recipients` | hidden | whole rows | 25 | not yet | | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| POST | 1 | | `/deposit` | public | whole rows | 6 | not yet | | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| PUT | 1 | | `/deposit/lightningWebhook` | hidden | none | — | n/a | | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| GET | 1 | | `/deuro/info` | public | whole rows | 11 | not yet | | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | +| GET | 1 | | `/dex/check-liquidity` | public | none | — | n/a | | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| PUT | 1 | | `/dex/complete-orders` | hidden | whole rows | 156 | not yet | | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | | `/dex/liquidity-after-purchase` | hidden | whole rows | 156 | not yet | | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | | `/dex/purchase-liquidity` | hidden | none | — | n/a | | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | | `/dex/reserve-liquidity` | hidden | none | — | n/a | | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | | `/dex/transfer-completion` | hidden | none | — | n/a | | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | +| POST | 1 | | `/dex/transfer-liquidity` | hidden | none | — | n/a | | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | | `/exchange/:exchange/balances` | public | none | — | n/a | | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/price` | hidden | none | — | n/a | | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | +| PUT | 1 | | `/exchange/:exchange/sync` | hidden | whole rows | 40 | not yet | | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/trade` | hidden | none | — | n/a | | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | | `/exchange/:exchange/trade` | hidden | none | — | n/a | | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/trade/history` | hidden | none | — | n/a | | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | | `/exchange/:exchange/withdraw` | hidden | none | — | n/a | | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/withdraw/:id` | public | none | — | n/a | | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/trade/:id` | hidden | none | — | n/a | | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | +| POST | 1 | | `/faucet` | public | whole rows | 308 | not yet | | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | 1 | | `/fee` | public | whole rows | 65 | not yet | | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| GET | 1 | | `/fiat` | public | whole rows | 23 | not yet | yes | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | +| POST | 1 | | `/fiatOutput` | public | whole rows | 377 | not yet | | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| PUT | 1 | | `/fiatOutput/:id` | hidden | whole rows | 59 | not yet | | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| GET | 1 | | `/frankencoin/info` | public | whole rows | 11 | not yet | | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | +| POST | 1 | | `/gs/db` | public | caller-defined | 13 | n/a | yes | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | | `/gs/db/custom` | hidden | caller-defined | — | n/a | yes | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | | `/gs/debug` | hidden | projected | — | n/a | yes | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | | `/gs/evm/bridgeApproval` | hidden | whole rows | 33 | not yet | | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/coinTransaction` | hidden | whole rows | 6 | not yet | | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/contractApproval` | hidden | whole rows | 33 | not yet | | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/contractTransaction` | hidden | none | — | n/a | | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/rawTransaction` | public | whole rows | 6 | not yet | | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/tokenTransaction` | hidden | whole rows | 33 | not yet | | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| GET | 1 | | `/gs/support` | hidden | whole rows | 907 | not yet | yes | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | +| GET | neutral | | `/health` | public | none | — | n/a | | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/banking` | public | none | — | n/a | | `HealthController.getBankingHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/external` | public | none | — | n/a | | `HealthController.getExternalHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/liquidity` | public | none | — | n/a | | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/nodes` | public | none | — | n/a | | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | neutral | | `/health/payment` | public | none | — | n/a | | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | +| GET | 1 | | `/history` | public | whole rows | 1363 | not yet | | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | | `/history/:exportType` | hidden | whole rows | 1363 | not yet | | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | | `/history/csv` | hidden | none | — | n/a | | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | 1 | | `/history/csv` | public | whole rows | 1363 | not yet | | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | | `/ikna/bfs/:id` | hidden | none | — | n/a | | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | 1 | | `/ikna/bfs/address` | public | none | — | n/a | | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | 1 | | `/ikna/tag` | hidden | none | — | n/a | | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | +| GET | 1 | | `/juice/info` | public | whole rows | 11 | not yet | | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | +| GET | 1 | yes | `/kyc` | public | whole rows | 351 | not yet | | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | | `/kyc` | public | whole rows | 351 | not yet | | `KycController.getKycLevel` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 1 | yes | `/kyc` | public | whole rows | 351 | not yet | | `KycController.requestKycV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| PUT | 2 | | `/kyc` | public | whole rows | 364 | not yet | | `KycController.continueKyc` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/2fa` | public | whole rows | 253 | not yet | | `KycController.check2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/2fa` | public | whole rows | 253 | not yet | | `KycController.start2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/2fa/verify` | public | whole rows | 253 | not yet | | `KycController.verify2fa` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:code` | public | whole rows | 351 | not yet | | `KycController.getKycProgressByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| POST | 1 | yes | `/kyc/:code` | public | whole rows | 351 | not yet | | `KycController.requestKycByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:code/countries` | public | whole rows | 351 | not yet | | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:id/documents` | public | whole rows | 328 | not yet | | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/:id/documents/:type` | public | whole rows | 328 | not yet | | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | | `/kyc/:step` | public | whole rows | 364 | not yet | | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 1 | | `/kyc/admin/blacklist/ip` | hidden | none | — | n/a | | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/blacklist/ip` | hidden | whole rows | 12 | not yet | | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | | `/kyc/admin/ident/file/sync` | hidden | whole rows | 243 | not yet | | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | | `/kyc/admin/log` | hidden | whole rows | 253 | not yet | | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/log/:id` | hidden | whole rows | 17 | not yet | | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/nameCheck/:id` | public | whole rows | 245 | not yet | | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/step/:id` | hidden | whole rows | 385 | not yet | | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| POST | 1 | | `/kyc/admin/webhook` | hidden | whole rows | 364 | not yet | | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| GET | 2 | | `/kyc/client/payments` | public | whole rows | 1092 | not yet | | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users` | public | whole rows | 20 | not yet | | `KycClientController.getAllKycData` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users/:id/documents` | public | whole rows | 78 | not yet | | `KycClientController.getKycFiles` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users/:id/documents/:type` | public | whole rows | 78 | not yet | | `KycClientController.getKycFile` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 2 | | `/kyc/client/users/:id/payments` | public | whole rows | 1092 | not yet | | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | +| GET | 1 | yes | `/kyc/countries` | public | whole rows | 351 | not yet | | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 2 | yes | `/kyc/countries` | public | whole rows | 351 | not yet | | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 2 | | `/kyc/data/:type/:id` | hidden | whole rows | 351 | not yet | | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/additional/:id` | public | whole rows | 364 | not yet | | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/address/:id` | public | whole rows | 364 | not yet | | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/authority/:id` | public | whole rows | 364 | not yet | | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/beneficial/:id` | public | whole rows | 364 | not yet | | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/confirmation/:id` | public | whole rows | 364 | not yet | | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/contact/:id` | hidden | whole rows | 364 | not yet | | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/data/financial/:id` | public | whole rows | 351 | not yet | | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/financial/:id` | public | whole rows | 364 | not yet | | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/legal/:id` | public | whole rows | 364 | not yet | | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/name/:id` | public | whole rows | 364 | not yet | | `KycController.updateNameChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/nationality/:id` | public | whole rows | 364 | not yet | | `KycController.updateNationalityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/operational/:id` | public | whole rows | 364 | not yet | | `KycController.updateOperationalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/owner/:id` | public | whole rows | 364 | not yet | | `KycController.updateOwnerDirectoryData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/payment/:id` | public | whole rows | 364 | not yet | | `KycController.updatePaymentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/personal/:id` | public | whole rows | 364 | not yet | | `KycController.updatePersonalData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/phone/:id` | public | whole rows | 364 | not yet | | `KycController.updatePhoneChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/recall/:id` | public | whole rows | 364 | not yet | | `KycController.updateRecallAgreement` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/recommendation/:id` | public | whole rows | 643 | not yet | | `KycController.updateRecommendationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/residence/:id` | public | whole rows | 364 | not yet | | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/signatory/:id` | public | whole rows | 364 | not yet | | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/statutes/:id` | public | whole rows | 364 | not yet | | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/file/:id` | hidden | whole rows | 264 | not yet | | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/ident/manual/:id` | hidden | whole rows | 364 | not yet | | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/ident/sumsub` | public | whole rows | 364 | not yet | | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 2 | | `/kyc/transfer` | hidden | whole rows | 351 | not yet | | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/transfer` | hidden | whole rows | 364 | not yet | | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 1 | yes | `/kyc/transfer` | public | whole rows | 364 | not yet | | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | yes | `/kyc/users` | public | whole rows | 328 | not yet | | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | +| GET | 1 | | `/language` | public | whole rows | 7 | not yet | | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | +| PUT | 1 | | `/limitRequest/:id` | public | whole rows | 434 | not yet | | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | 1 | | `/liquidityManagement/balance` | public | whole rows | 40 | not yet | | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | 1 | | `/liquidityManagement/order/:id/resolveUncertain` | hidden | whole rows | 139 | not yet | | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | 1 | | `/liquidityManagement/order/in-progress` | public | whole rows | 139 | not yet | | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | 1 | | `/liquidityManagement/pipeline/:id/status` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | | `/liquidityManagement/pipeline/buy` | public | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | 1 | | `/liquidityManagement/pipeline/in-progress` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | | `/liquidityManagement/pipeline/sell` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| GET | 1 | | `/liquidityManagement/pipeline/stopped` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | | `/liquidityManagement/rule` | public | whole rows | 83 | not yet | | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PUT | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | | `/liquidityManagement/rule/:id/deactivate` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | | `/liquidityManagement/rule/:id/reactivate` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.reactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| PATCH | 1 | | `/liquidityManagement/rule/:id/settings` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.setReactivationTime` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| GET | 1 | | `/lnurla` | public | whole rows | 643 | not yet | | `AuthLnurlController.signInWithLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| POST | 1 | | `/lnurla` | public | none | — | n/a | | `AuthLnurlController.getLnurlAuth` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | 1 | | `/lnurla/status` | public | none | — | n/a | | `AuthLnurlController.lnurlAuthStatus` | `subdomains/generic/user/models/auth/auth-lnurl.controller.ts` | +| GET | 1 | | `/lnurld/:id` | public | none | — | n/a | yes | `LnurldForwardController.lnurldForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | 1 | | `/lnurld/cb/:id/:var` | public | none | — | n/a | yes | `LnurldForwardController.lnurldCallbackForward` | `subdomains/generic/forwarding/controllers/lnurld-forward.controller.ts` | +| GET | 1 | | `/lnurlp/:id` | public | whole rows | 545 | not yet | yes | `LnUrlPForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| POST | 1 | | `/lnurlp/:id` | public | whole rows | 545 | not yet | | `LnUrlPForwardController.activatePublicPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| DELETE | 1 | | `/lnurlp/cancel/:id` | public | whole rows | 545 | not yet | | `LnUrlPForwardController.cancelPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlp/cb/:id` | public | whole rows | 545 | not yet | yes | `LnUrlPForwardController.lnUrlPCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlp/tx/:id` | public | whole rows | 545 | not yet | | `LnUrlPForwardController.txHexForward` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlp/wait/:id` | public | whole rows | 545 | not yet | | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | +| GET | 1 | | `/lnurlw/:id` | public | none | — | n/a | yes | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| GET | 1 | | `/lnurlw/cb/:id` | public | none | — | n/a | yes | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | +| POST | 1 | | `/log` | public | whole rows | 11 | not yet | | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| PUT | 1 | | `/log/:id` | hidden | whole rows | 11 | not yet | | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| PUT | 1 | | `/log/financial/validity` | hidden | projected | 11 | 0/4 | | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | +| GET | 1 | | `/monitoring/data` | public | none | — | n/a | | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| POST | 1 | | `/monitoring/data` | hidden | none | — | n/a | | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | 1 | | `/mros` | hidden | whole rows | 243 | not yet | | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | 1 | | `/mros` | public | whole rows | 253 | not yet | | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| GET | 1 | | `/mros/:id` | hidden | whole rows | 243 | not yet | | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | +| PUT | 1 | | `/mros/:id` | hidden | whole rows | 98 | not yet | | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | 1 | | `/node/:node/:mode/cmd` | hidden | none | — | n/a | | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/node/:node/:mode/rpc` | hidden | none | — | n/a | | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | 1 | | `/node/:node/:mode/tx/:txId` | hidden | none | — | n/a | | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/node/:node/cmd` | hidden | none | — | n/a | | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/node/:node/rpc` | public | none | — | n/a | | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| GET | 1 | | `/node/:node/tx/:txId` | hidden | none | — | n/a | | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/notification/send-mail` | public | whole rows | 13 | not yet | | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | 1 | | `/payIn` | public | whole rows | 545 | not yet | | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | 1 | | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | n/a | | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | 1 | | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | n/a | | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | 1 | | `/payIn/poll` | hidden | none | — | n/a | | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | 1 | | `/payIn/retry` | hidden | whole rows | — | not yet | | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| GET | 1 | | `/paymentLink` | public | whole rows | 513 | not yet | yes | `PaymentLinkController.getAllPaymentLinks` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink` | public | whole rows | 545 | not yet | | `PaymentLinkController.createPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink` | public | whole rows | 513 | not yet | | `PaymentLinkController.updatePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | 1 | | `/paymentLink/:id` | hidden | whole rows | 195 | not yet | | `PaymentLinkController.deletePaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/:id` | hidden | whole rows | 513 | not yet | | `PaymentLinkController.updatePaymentLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/:id/pos` | hidden | whole rows | 513 | not yet | | `PaymentLinkController.createPosLinkAdmin` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/assign` | public | whole rows | 513 | not yet | yes | `PaymentLinkController.assignPaymentLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/config` | public | whole rows | 253 | not yet | | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/config` | public | whole rows | 253 | not yet | | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/history` | public | whole rows | 545 | not yet | | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/binance/activate/:id` | public | whole rows | 513 | not yet | | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/binance/webhook` | hidden | whole rows | 545 | not yet | | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/kucoin/activate/:id` | public | whole rows | 513 | not yet | | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | n/a | | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | n/a | | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/locations` | public | whole rows | 513 | not yet | | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/merchant` | public | whole rows | 253 | not yet | | `PaymentLinkController.createMerchant` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| DELETE | 1 | | `/paymentLink/payment` | public | whole rows | 545 | not yet | | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/payment` | hidden | whole rows | 545 | not yet | yes | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/payment` | public | whole rows | 545 | not yet | | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/payment/:id` | public | whole rows | 545 | not yet | | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/payment/confirm` | public | whole rows | 513 | not yet | | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/payment/wait` | public | whole rows | 513 | not yet | | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/pos` | public | whole rows | 513 | not yet | | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/recipient` | public | whole rows | 472 | not yet | | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/standard` | public | none | — | n/a | | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | 1 | | `/paymentLink/standard/:id` | public | none | — | n/a | | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | +| GET | 1 | | `/paymentLink/stickers` | hidden | whole rows | 513 | not yet | yes | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/walletApp` | public | whole rows | 33 | not yet | | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | 1 | | `/paymentLink/walletApp/:id` | public | whole rows | 33 | not yet | | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| GET | 1 | | `/paymentLink/walletApp/recommended` | public | whole rows | 33 | not yet | | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | +| POST | 1 | | `/payout` | public | none | — | n/a | | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | 1 | | `/payout/completion` | hidden | whole rows | 123 | not yet | | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | 1 | | `/payout/retry` | hidden | whole rows | 123 | not yet | | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | 1 | | `/payout/speedup` | hidden | whole rows | 123 | not yet | | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | +| GET | neutral | | `/pl` | public | whole rows | 545 | not yet | | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | 1 | | `/plp` | public | whole rows | 545 | not yet | | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/pricing` | hidden | none | — | n/a | | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| PUT | 1 | | `/pricing` | hidden | whole rows | 53 | not yet | | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | 1 | | `/pricing/price` | public | whole rows | 33 | not yet | | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | 1 | | `/realunit/account/:address` | public | whole rows | 40 | not yet | | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/account/:address/history` | public | none | — | n/a | | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/admin/quotes` | public | whole rows | 112 | not yet | | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/admin/quotes/:id/confirm-payment` | hidden | whole rows | 1051 | not yet | | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/admin/registration/:id/forward` | hidden | whole rows | 493 | not yet | yes | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/admin/transactions` | hidden | whole rows | 362 | not yet | | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/balance/pdf` | public | whole rows | 308 | not yet | yes | `RealUnitController.getBalancePdf` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/buyPrice` | public | none | — | n/a | | `RealUnitController.getBrokerbotBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/buyShares` | public | none | — | n/a | | `RealUnitController.getBrokerbotBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/info` | public | whole rows | 33 | not yet | | `RealUnitController.getBrokerbotInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/price` | public | none | — | n/a | | `RealUnitController.getBrokerbotPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/sellPrice` | public | whole rows | 308 | not yet | | `RealUnitController.getBrokerbotSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/brokerbot/sellShares` | public | whole rows | 308 | not yet | | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/buy` | public | whole rows | 364 | not yet | yes | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/buy/:id/confirm` | public | whole rows | 504 | not yet | | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers` | public | whole rows | 308 | not yet | | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id` | hidden | whole rows | 826 | not yet | | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id/dossier` | hidden | whole rows | 264 | not yet | | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id/files` | hidden | whole rows | 264 | not yet | | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers/:id/files/:uid` | hidden | whole rows | 264 | not yet | | `RealUnitComplianceController.downloadCustomerFile` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/confirm-aktionariat` | public | whole rows | 15 | not yet | yes | `RealUnitController.confirmAktionariat` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/holders` | public | none | — | n/a | | `RealUnitController.getHolders` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/legal` | public | whole rows | 308 | not yet | yes | `RealUnitLegalController.getLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| PUT | 1 | | `/realunit/legal` | public | whole rows | 308 | not yet | yes | `RealUnitLegalController.acceptLegal` | `subdomains/supporting/realunit/controllers/realunit-legal.controller.ts` | +| GET | 1 | | `/realunit/pay/:id/status` | public | whole rows | 32 | not yet | yes | `RealUnitController.getOcpPayStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/pay/submit` | public | whole rows | 545 | not yet | yes | `RealUnitController.submitOcpPay` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/pay/unsigned-transaction` | public | whole rows | 545 | not yet | yes | `RealUnitController.getOcpPayUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/price` | public | whole rows | 33 | not yet | | `RealUnitController.getRealUnitPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/price/history` | public | whole rows | 40 | not yet | | `RealUnitController.getHistoricalPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/buyPrice` | public | none | — | n/a | | `RealUnitController.getQuoteBuyPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/buyShares` | public | none | — | n/a | | `RealUnitController.getQuoteBuyShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/info` | public | whole rows | 33 | not yet | | `RealUnitController.getQuoteInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/price` | public | none | — | n/a | | `RealUnitController.getQuotePrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/sellPrice` | public | whole rows | 308 | not yet | | `RealUnitController.getQuoteSellPrice` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/quote/sellShares` | public | whole rows | 308 | not yet | | `RealUnitController.getQuoteSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/register/complete` | public | whole rows | 493 | not yet | yes | `RealUnitController.completeRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/register/date` | public | none | — | n/a | yes | `RealUnitController.getRegistrationDate` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/register/email` | public | whole rows | 364 | not yet | yes | `RealUnitController.registerEmail` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/register/status` | public | whole rows | 308 | not yet | yes | `RealUnitController.isRegistered` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/register/wallet` | public | whole rows | 493 | not yet | yes | `RealUnitController.completeRegistrationForWalletAddress` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/registration` | public | whole rows | 308 | not yet | yes | `RealUnitController.getRegistrationInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell` | public | whole rows | 308 | not yet | yes | `RealUnitController.getSellPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell/:id/broadcast` | public | whole rows | 504 | not yet | | `RealUnitController.broadcastSellTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell/:id/confirm` | public | whole rows | 504 | not yet | | `RealUnitController.confirmSell` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/sell/:id/unsigned-transactions` | public | whole rows | 504 | not yet | | `RealUnitController.getSellUnsignedTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/support/:id` | hidden | whole rows | 421 | not yet | | `RealUnitSupportController.updateSupportIssue` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/:id/data` | hidden | whole rows | 951 | not yet | | `RealUnitSupportController.getIssueData` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| POST | 1 | | `/realunit/support/:id/message` | hidden | whole rows | 441 | not yet | | `RealUnitSupportController.createSupportMessage` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/:id/message/:messageId/file` | hidden | whole rows | 421 | not yet | | `RealUnitSupportController.getFile` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/:id/messages` | hidden | whole rows | 428 | not yet | | `RealUnitSupportController.getIssueMessages` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/activity` | hidden | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/clerks` | hidden | none | — | n/a | | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/counts` | hidden | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/list` | public | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/statistics` | hidden | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| PUT | 1 | | `/realunit/swap` | public | whole rows | 308 | not yet | yes | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/swap/:id/broadcast` | public | whole rows | 504 | not yet | yes | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/swap/:id/unsigned-transaction` | public | whole rows | 504 | not yet | yes | `RealUnitController.getSwapUnsignedTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/tokenInfo` | public | none | — | n/a | | `RealUnitController.getTokenInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/transactions/receipt/multi` | public | whole rows | 308 | not yet | | `RealUnitController.generateHistoryMultiReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| POST | 1 | | `/realunit/transactions/receipt/single` | public | whole rows | 308 | not yet | | `RealUnitController.generateHistoryReceipt` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/transfer` | public | whole rows | 308 | not yet | yes | `RealUnitController.prepareTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| PUT | 1 | | `/realunit/transfer/:id/confirm` | public | whole rows | 87 | not yet | yes | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | yes | `/realunit/wallet/status` | public | whole rows | 308 | not yet | yes | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/recall` | hidden | whole rows | 174 | not yet | | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | 1 | | `/recall` | public | whole rows | 308 | not yet | | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | 1 | | `/recall/:id` | hidden | whole rows | 174 | not yet | | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | +| PUT | 1 | | `/recall/:id` | hidden | whole rows | 308 | not yet | | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| GET | 1 | | `/recommendation` | public | whole rows | 474 | not yet | | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| POST | 1 | | `/recommendation` | hidden | whole rows | 364 | not yet | | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | 1 | | `/recommendation/:id/confirm` | hidden | whole rows | 643 | not yet | | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| PUT | 1 | | `/recommendation/:id/reject` | hidden | whole rows | 643 | not yet | | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | 1 | | `/ref` | public | none | — | n/a | | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| POST | 1 | | `/reward/ref` | hidden | whole rows | 156 | not yet | | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | 1 | | `/reward/ref/:id` | hidden | whole rows | 234 | not yet | | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| POST | 1 | | `/reward/ref/manual` | hidden | whole rows | 308 | not yet | | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| PUT | 1 | | `/reward/ref/volumes` | public | whole rows | 308 | not yet | | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| GET | 1 | | `/route` | public | whole rows | 308 | not yet | | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | +| PUT | 1 | | `/route/:id` | hidden | whole rows | 174 | not yet | | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | +| POST | 1 | | `/scorechain/screening` | public | whole rows | 14 | not yet | | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| GET | 1 | | `/sell` | public | whole rows | 308 | not yet | | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| POST | 1 | | `/sell` | hidden | whole rows | 308 | not yet | | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/sell/:id` | hidden | whole rows | 377 | not yet | | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/:id` | public | whole rows | 308 | not yet | | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/sell/:id/history` | hidden | whole rows | 470 | not yet | | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/paymentInfos` | public | whole rows | 308 | not yet | | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/paymentInfos/:id/confirm` | public | whole rows | 545 | not yet | | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/sell/paymentInfos/:id/tx` | public | whole rows | 504 | not yet | | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/quote` | hidden | whole rows | 143 | not yet | | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/setting` | public | whole rows | 5 | not yet | | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | | `/setting/:key` | hidden | whole rows | 5 | not yet | | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | | `/setting/customSignUpFees` | hidden | none | — | n/a | | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | | `/setting/disabledProcesses` | hidden | none | — | n/a | | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | +| GET | 1 | | `/setting/infoBanner` | public | none | — | n/a | | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | +| POST | 1 | | `/specialExternalAccount` | public | whole rows | 7 | not yet | | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| GET | 1 | | `/statistic` | public | none | — | n/a | | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | | `/statistic/status` | public | whole rows | 5 | not yet | | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | | `/statistic/transactions` | public | whole rows | 419 | not yet | | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | +| GET | 1 | | `/support` | public | whole rows | 593 | not yet | | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id` | hidden | whole rows | 826 | not yet | | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id/ip-log-pdf` | hidden | whole rows | 12 | not yet | | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | | `/support/:id/onboarding-pdf` | hidden | whole rows | 264 | not yet | | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id/scorechain` | hidden | whole rows | 14 | not yet | | `SupportController.getScorechainScreenings` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/:id/transaction-pdf` | hidden | whole rows | 826 | not yet | | `SupportController.getTransactionPdf` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/call-queues` | hidden | none | — | n/a | | `SupportController.getCallQueues` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/call-queues/:queue/items` | hidden | whole rows | 672 | not yet | | `SupportController.getCallQueueItems` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/call-queues/clerks` | hidden | none | — | n/a | | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/issue` | public | whole rows | 450 | not yet | | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue` | public | whole rows | 493 | not yet | | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/:id` | hidden | whole rows | 450 | not yet | | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | 1 | | `/support/issue/:id` | public | whole rows | 421 | not yet | | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | 1 | | `/support/issue/:id/close` | public | whole rows | 450 | not yet | | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/:id/data` | hidden | whole rows | 951 | not yet | | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/:id/message` | hidden | whole rows | 441 | not yet | yes | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/:id/message/:messageId/file` | public | whole rows | — | not yet | | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/activity` | hidden | whole rows | 7 | not yet | | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/clerk` | hidden | none | — | n/a | | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/clerks` | hidden | none | — | n/a | | `SupportIssueController.getSupportIssueClerks` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/counts` | hidden | whole rows | 16 | not yet | | `SupportIssueController.getSupportIssueCounts` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/escalation/telegram-bind` | hidden | whole rows | 5 | not yet | | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/escalation/telegram-chats` | hidden | none | — | n/a | | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/escalation/telegram-test` | hidden | whole rows | 5 | not yet | | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/list` | public | whole rows | 16 | not yet | | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/statistics` | hidden | whole rows | 16 | not yet | | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/support` | public | whole rows | 493 | not yet | | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/kycFileList` | hidden | whole rows | 253 | not yet | | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/kycFileStats` | hidden | whole rows | 99 | not yet | | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/note` | hidden | whole rows | 9 | not yet | | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | | `/support/note` | hidden | whole rows | 253 | not yet | | `SupportController.createNote` | `subdomains/generic/support/support.controller.ts` | +| DELETE | 1 | | `/support/note/:id` | hidden | whole rows | 9 | not yet | | `SupportController.deleteNote` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | | `/support/note/:id` | hidden | whole rows | 239 | not yet | | `SupportController.updateNote` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/note/users` | hidden | whole rows | 9 | not yet | | `SupportController.listNoteUsers` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/pending-reviews` | hidden | whole rows | 15 | not yet | | `SupportController.getPendingReviews` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/pending-reviews/items` | hidden | whole rows | 261 | not yet | | `SupportController.getPendingReviewItems` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/pending-transactions` | hidden | whole rows | 672 | not yet | | `SupportController.getPendingTransactions` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/recommendation-graph/:id/neighbors` | hidden | whole rows | 474 | not yet | yes | `SupportController.getRecommendationGraphNeighbors` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/template` | hidden | whole rows | 8 | not yet | | `SupportController.getTemplates` | `subdomains/generic/support/support.controller.ts` | +| POST | 1 | | `/support/template` | hidden | whole rows | 253 | not yet | | `SupportController.createTemplate` | `subdomains/generic/support/support.controller.ts` | +| DELETE | 1 | | `/support/template/:id` | hidden | whole rows | 8 | not yet | | `SupportController.deleteTemplate` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | | `/support/template/:id` | hidden | whole rows | 8 | not yet | | `SupportController.updateTemplate` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 143 | not yet | | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| PUT | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 415 | not yet | | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support/transactionList` | hidden | whole rows | 20 | not yet | | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/swap` | public | whole rows | 308 | not yet | | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | 1 | | `/swap` | hidden | whole rows | 308 | not yet | | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap/:id` | hidden | whole rows | 308 | not yet | | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/:id` | public | whole rows | 396 | not yet | | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap/:id/history` | hidden | whole rows | 509 | not yet | | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/paymentInfos` | public | whole rows | 308 | not yet | | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/paymentInfos/:id/confirm` | public | whole rows | 545 | not yet | | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap/paymentInfos/:id/tx` | public | whole rows | 504 | not yet | | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/quote` | hidden | whole rows | 143 | not yet | | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | 1 | | `/tatum/addressWebhook` | public | none | — | n/a | | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | 1 | | `/trading/rule/:id` | public | whole rows | 87 | not yet | | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| GET | 1 | | `/transaction` | public | whole rows | 1363 | not yet | yes | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/invoice` | public | whole rows | 331 | not yet | yes | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/receipt` | public | whole rows | 331 | not yet | yes | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/:id/refund` | public | whole rows | 331 | not yet | yes | `TransactionController.getTransactionRefund` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/refund` | public | whole rows | 487 | not yet | | `TransactionController.setTransactionRefundTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/:id/target` | hidden | whole rows | 1051 | not yet | | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/ChainReport` | hidden | whole rows | 1363 | not yet | yes | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/CoinTracking` | public | whole rows | 1363 | not yet | yes | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/admin/:id` | public | whole rows | 276 | not yet | | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | 1 | | `/transaction/admin/:id/stop` | hidden | whole rows | 98 | not yet | | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| POST | 1 | | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | n/a | | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| PUT | 1 | | `/transaction/admin/:txId/riskAssessment/:id` | hidden | whole rows | 13 | not yet | | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | 1 | | `/transaction/csv` | public | none | — | n/a | | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/csv` | public | whole rows | 1363 | not yet | yes | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/detail` | hidden | whole rows | 1363 | not yet | | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/detail/csv` | public | whole rows | 1363 | not yet | | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/detail/single` | public | whole rows | 487 | not yet | yes | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/single` | public | whole rows | 487 | not yet | yes | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/target` | hidden | whole rows | 134 | not yet | | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/unassigned` | public | whole rows | 356 | not yet | | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| DELETE | 1 | yes | `/user` | public | whole rows | 344 | not yet | | `UserController.deleteUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 2 | | `/user` | public | whole rows | 344 | not yet | | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | yes | `/user` | public | whole rows | 328 | not yet | | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | | `/user` | public | whole rows | 351 | not yet | | `UserV2Controller.getUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | yes | `/user` | public | whole rows | 406 | not yet | | `UserController.updateUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user` | public | whole rows | 351 | not yet | | `UserV2Controller.updateUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/:id` | hidden | whole rows | 364 | not yet | | `UserController.updateUserAdmin` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 1 | yes | `/user/account` | public | whole rows | 344 | not yet | | `UserController.deleteUserAccount` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 2 | | `/user/addresses/:address` | public | whole rows | 344 | not yet | | `UserV2Controller.deleteAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user/addresses/:address` | public | whole rows | 351 | not yet | | `UserV2Controller.updateAddress` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/apiFilter/CT` | public | whole rows | 331 | not yet | | `UserController.updateApiFilter` | `subdomains/generic/user/models/user/user.controller.ts` | +| DELETE | 1 | | `/user/apiKey/CT` | public | none | — | n/a | | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | | `/user/apiKey/CT` | public | whole rows | 253 | not yet | | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | | `/user/change` | public | whole rows | 643 | not yet | | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | | `/user/data` | hidden | whole rows | 406 | not yet | | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | yes | `/user/detail` | public | whole rows | 328 | not yet | | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | yes | `/user/discountCodes` | public | whole rows | 308 | not yet | | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user/mail` | public | whole rows | 364 | not yet | | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 2 | | `/user/mail/verify` | public | whole rows | 364 | not yet | | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/name` | public | whole rows | 386 | not yet | | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | | `/user/profile` | public | whole rows | 253 | not yet | | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | | `/user/ref` | public | whole rows | 45 | not yet | | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 2 | | `/user/ref` | public | whole rows | 98 | not yet | | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 2 | | `/user/ref` | public | whole rows | 98 | not yet | | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/specialCodes` | public | whole rows | 308 | not yet | | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | | `/user/volumes` | hidden | whole rows | 45 | not yet | | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | | `/userData` | public | whole rows | 253 | not yet | | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userData` | hidden | whole rows | 253 | not yet | | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | 1 | | `/userData/:id` | public | whole rows | 253 | not yet | | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id` | hidden | whole rows | 384 | not yet | | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/bankDatas` | hidden | whole rows | 284 | not yet | | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| DELETE | 1 | | `/userData/:id/fee` | hidden | whole rows | 253 | not yet | | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/fee` | hidden | whole rows | 253 | not yet | | `UserDataController.addFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userData/:id/kycFile` | hidden | whole rows | 253 | not yet | | `UserDataController.uploadKycFile` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/merge` | hidden | whole rows | 364 | not yet | | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/:id/volumes` | hidden | whole rows | — | not yet | | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| PUT | 1 | | `/userData/auditPeriodNumbers` | hidden | whole rows | 40 | not yet | | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userData/download` | public | whole rows | 253 | not yet | | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userDataRelation` | public | whole rows | 253 | not yet | | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| DELETE | 1 | | `/userDataRelation/:id` | public | none | — | n/a | | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| PUT | 1 | | `/userDataRelation/:id` | public | whole rows | 7 | not yet | | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | +| GET | neutral | | `/version` | hidden | none | — | n/a | | `AppController.getVersion` | `app.controller.ts` | +| POST | 1 | | `/wallet` | public | none | — | n/a | | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| PUT | 1 | | `/wallet/:id` | hidden | whole rows | 20 | not yet | | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index fe51bd81fd..d4138c27b3 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -3,6 +3,24 @@ What the load-site inventory shows, what we intend to do about it, and how the result is to be tested. +## The goal + +**Every read path in this service selects the fields it returns, and nothing more.** That is the +target state, not an aspiration for the parts that happen to be convenient — the endpoint inventory +in [endpoints.md](endpoints.md) is the work list, and its `Tests` column is the record of how far +we have got. + +**Every converted endpoint must reach 100% coverage under the four levels defined below.** An +endpoint is not converted at `3/4`; it is unfinished. The reason is in *The risk this must guard +against*: a projection that drops a field does not fail loudly, it answers 200 with a wrong value. +Converting without the tests replaces a slow query with a silent defect, which is the worse of the +two. + +**That coverage is documented per endpoint in this repository**, in the `Tests` column of +[endpoints.md](endpoints.md), and updated in the same pull request that changes the code. A +conversion whose coverage is not recorded cannot be told apart from one that was never tested, and +is treated as the latter. + ## The problem This service loads far more data than it returns. Measured against the real entity metadata: @@ -112,6 +130,9 @@ described above proves it — a wrong value can run for weeks. ## Test definition +All four levels must pass for an endpoint to count as converted. `endpoints.md` records the state +per endpoint as `0/4` through `4/4`; only `4/4` is done. + ### Which endpoints these apply to To any load site that carries an explicit field list — that is where a forgotten field silently From 5bd728dc0083420ecc5de526400c2cfdf6ca85c2 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 04:13:48 +0200 Subject: [PATCH 18/19] Bring the inventory up to the current base and resolve the CONTRIBUTING overlap The base moved three commits while this branch was open, and two of them matter here. The client error logging change adds a controller, so the inventory was one route short. Regenerated against the current base: 534 endpoints, the new one being POST /log/clientError. It reads nothing from the database, which moves that group from 97 to 98; the 432 that fetch whole rows are unchanged, and so are the 1105 load sites - the new service contains none. The cron job inventory change added its own item 5 to the PR checklist and its own paragraph next to where this branch adds the endpoint rules. CONTRIBUTING now carries both: the cron item stays at 5, the endpoint item follows as 6, and the endpoint section sits ahead of the cron section rather than replacing it. Corrects the count of endpoints hidden from Swagger. It is 296, not 223. The detection searched a window ahead of the routing decorator, where @ApiExcludeEndpoint does not sit; it is written after the route and before the method, so an isolated hidden endpoint following a public one was missed and one following a hidden one was counted by accident. Now the decorator block of the route itself is read, and a second, line-based count over the sources agrees. --- CONTRIBUTING.md | 9 +- docs/endpoints.md | 223 +++++++++++++++++----------------- docs/read-path-projections.md | 2 +- 3 files changed, 121 insertions(+), 113 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2b73f185e2..d28fcb862d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,8 @@ Every PR must include: 2. **Environment/Infrastructure updates** (config, environment variables) 3. **Service updates** (if DTOs/interfaces changed) 4. **Frontend synchronization** (if API contracts changed) -5. **Endpoint inventory** (if routes were added, removed, renamed or re-scoped) — [docs/endpoints.md](docs/endpoints.md) +5. **Cron job inventory** (if a `@DfxCron` job was added, removed or re-scheduled) — [docs/cron-jobs.md](docs/cron-jobs.md) +6. **Endpoint inventory** (if routes were added, removed, renamed or re-scoped) — [docs/endpoints.md](docs/endpoints.md) Missing any of these = changes requested. @@ -557,6 +558,12 @@ async processPayments(): Promise { } ``` +Declare a `process` flag unless the job maintains the disabled set itself. Without one the job +runs unconditionally and cannot be switched off without a deploy. + +[docs/cron-jobs.md](docs/cron-jobs.md) lists every scheduled job with its interval and flag. +**Adding, removing or re-scheduling a job must be reflected there in the same PR.** + Prefer longer intervals (15min) over aggressive polling (1min). Only use short intervals when truly needed. ### Await Discipline diff --git a/docs/endpoints.md b/docs/endpoints.md index c43743fc63..f9c00a8dfa 100644 --- a/docs/endpoints.md +++ b/docs/endpoints.md @@ -1,6 +1,6 @@ # HTTP endpoints -Every HTTP endpoint this service exposes: **533 handlers** across 93 controller files. 223 are marked `@ApiExcludeEndpoint` and do not appear in the public Swagger schema. +Every HTTP endpoint this service exposes: **534 handlers** across 94 controller files. 296 are marked `@ApiExcludeEndpoint` and do not appear in the public Swagger schema. ## Columns @@ -30,7 +30,7 @@ Today 4 endpoints read only what they return and 432 do not, so the column reads | Data access | Endpoints | Share | | ----------- | --------: | ----: | | `whole rows` | 432 | 81 % | -| `none` | 97 | 18 % | +| `none` | 98 | 18 % | | `projected` | 2 | 0 % | | `caller-defined` | 2 | 0 % | @@ -50,8 +50,8 @@ Among the 432 that fetch whole rows, the widest query they can trigger is **308 Stated exactly, so the numbers can be checked rather than believed: -- **435 of 533 endpoints rest on a call graph that is not fully resolved** — a target chosen at runtime, a method reached through inheritance, an entity manager handed into a transaction callback. This does not weaken the `whole rows` group: an unresolved edge can only add load sites, never remove one, so 432 is a lower bound. -- All 97 endpoints marked `none` are the opposite case: their graph resolved completely, or the remaining target was read in the source (27 of them, listed below). None of them rests on an unresolved edge. +- **436 of 534 endpoints rest on a call graph that is not fully resolved** — a target chosen at runtime, a method reached through inheritance, an entity manager handed into a transaction callback. This does not weaken the `whole rows` group: an unresolved edge can only add load sites, never remove one, so 432 is a lower bound. +- All 98 endpoints marked `none` are the opposite case: their graph resolved completely, or the remaining target was read in the source (27 of them, listed below). None of them rests on an unresolved edge. - The 2 `projected` and 2 `caller-defined` endpoints do each carry an unresolved edge — a call through the entity manager inside a transaction callback. Their reads were read in the source, but the classification is not proven exhaustive the way the `none` group is. - 3 endpoints in the `whole rows` group have no measured column count and show `—`: `POST /payIn/retry`, `GET /support/issue/:id/message/:messageId/file`, `PUT /userData/:id/volumes`. The classification holds; only the width is unknown. @@ -110,74 +110,74 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | Method | Ver | Dep | Path | Swagger | Data access | Max cols | Tests | Spec | Handler | File | | ------ | --- | --- | ---- | ------- | ----------- | -------: | ----- | ---- | ------- | ---- | -| GET | neutral | | `/` | public | none | — | n/a | | `AppController.home` | `app.controller.ts` | -| POST | 1 | | `/CustodyProvider` | public | none | — | n/a | | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | +| GET | neutral | | `/` | hidden | none | — | n/a | | `AppController.home` | `app.controller.ts` | +| POST | 1 | | `/CustodyProvider` | hidden | none | — | n/a | | `CustodyProviderController.createCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | | PUT | 1 | | `/CustodyProvider/:id` | hidden | whole rows | 6 | not yet | | `CustodyProviderController.updateCustodyProvider` | `subdomains/generic/user/models/custody-provider/custody-provider.controller.ts` | | POST | 1 | | `/admin/lightning/rotate-webhook-secrets` | hidden | none | — | n/a | | `AdminController.rotateLightningWebhookSecrets` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | | `/admin/mail` | public | whole rows | 13 | not yet | | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | +| POST | 1 | | `/admin/mail` | hidden | whole rows | 13 | not yet | | `AdminController.sendMail` | `subdomains/generic/admin/admin.controller.ts` | | POST | 1 | | `/admin/payout` | hidden | whole rows | 156 | not yet | | `AdminController.payout` | `subdomains/generic/admin/admin.controller.ts` | | POST | 1 | | `/admin/sendLetter` | hidden | none | — | n/a | | `AdminController.sendLetter` | `subdomains/generic/admin/admin.controller.ts` | -| POST | 1 | | `/alchemy/addressWebhook` | public | none | — | n/a | | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | 1 | | `/alchemy/addresses/:webhookId` | public | none | — | n/a | | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | -| GET | 1 | | `/app` | public | whole rows | 6 | not yet | | `AppController.createRefNew` | `app.controller.ts` | +| POST | 1 | | `/alchemy/addressWebhook` | hidden | none | — | n/a | | `AlchemyController.addressWebhook` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | | `/alchemy/addresses/:webhookId` | hidden | none | — | n/a | | `AlchemyController.addresses` | `integration/alchemy/controllers/alchemy.controller.ts` | +| GET | 1 | | `/app` | hidden | whole rows | 6 | not yet | | `AppController.createRefNew` | `app.controller.ts` | | GET | 1 | | `/app/:app` | hidden | whole rows | 6 | not yet | | `AppController.redirectToStore` | `app.controller.ts` | | GET | 1 | | `/app/advertisements` | hidden | none | — | n/a | | `AppController.getAds` | `app.controller.ts` | -| GET | 1 | | `/app/announcements` | public | none | — | n/a | | `AppController.getAnnouncements` | `app.controller.ts` | +| GET | 1 | | `/app/announcements` | hidden | none | — | n/a | | `AppController.getAnnouncements` | `app.controller.ts` | | GET | 1 | | `/app/settings/flags` | hidden | none | — | n/a | | `AppController.getFlags` | `app.controller.ts` | | GET | 1 | | `/asset` | public | whole rows | 33 | not yet | | `AssetController.getAllAsset` | `shared/models/asset/asset.controller.ts` | -| PUT | 1 | | `/asset/:id` | public | whole rows | 33 | not yet | | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | +| PUT | 1 | | `/asset/:id` | hidden | whole rows | 33 | not yet | | `AssetController.updateAsset` | `shared/models/asset/asset.controller.ts` | | POST | 1 | | `/auth` | public | whole rows | 643 | not yet | | `AuthController.authenticate` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/2fa` | hidden | whole rows | 253 | not yet | | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/2fa` | public | whole rows | 253 | not yet | | `AuthController.check2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | 1 | | `/auth/2fa` | public | whole rows | 253 | not yet | | `AuthController.setup2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | 1 | | `/auth/2fa/verify` | public | whole rows | 253 | not yet | | `AuthController.verify2fa` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | 1 | | `/auth/alby` | hidden | none | — | n/a | | `AuthController.signInWithAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | 1 | | `/auth/alby/redirect/:id` | hidden | whole rows | 643 | not yet | | `AuthController.redirectAlby` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/challenge` | hidden | whole rows | 20 | not yet | | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | | `/auth/mail` | hidden | whole rows | 643 | not yet | | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/mail/confirm` | public | whole rows | 470 | not yet | | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/challenge` | public | whole rows | 20 | not yet | | `AuthController.companyChallenge` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/mail` | public | whole rows | 643 | not yet | | `AuthController.signInByMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/mail/confirm` | hidden | whole rows | 470 | not yet | | `AuthController.executeMerge` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | 1 | | `/auth/mail/redirect` | hidden | whole rows | 643 | not yet | | `AuthController.redirectMail` | `subdomains/generic/user/models/auth/auth.controller.ts` | | POST | 1 | | `/auth/signIn` | hidden | whole rows | 643 | not yet | | `AuthController.signIn` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | 1 | | `/auth/signMessage` | public | none | — | n/a | | `AuthController.getSignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| POST | 1 | | `/auth/signUp` | public | whole rows | 643 | not yet | | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | -| GET | 1 | | `/auth/verifySignature` | public | whole rows | 6 | not yet | | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| POST | 1 | | `/auth/signUp` | hidden | whole rows | 643 | not yet | | `AuthController.signUp` | `subdomains/generic/user/models/auth/auth.controller.ts` | +| GET | 1 | | `/auth/verifySignature` | hidden | whole rows | 6 | not yet | | `AuthController.verifySignMessage` | `subdomains/generic/user/models/auth/auth.controller.ts` | | GET | 1 | | `/balance/pdf` | public | whole rows | 40 | not yet | | `BalanceController.getBalancePdf` | `subdomains/supporting/balance/controllers/balance.controller.ts` | | GET | 1 | | `/balance/pdf/blockchains` | public | none | — | n/a | | `BalanceController.getSupportedBlockchains` | `subdomains/supporting/balance/controllers/balance.controller.ts` | | GET | 1 | | `/bank` | public | whole rows | 46 | not yet | | `BankController.getAllBanks` | `subdomains/supporting/bank/bank/bank.controller.ts` | | PUT | 1 | | `/bank/receiveIban` | public | whole rows | 101 | not yet | yes | `BankController.checkReceiveIban` | `subdomains/supporting/bank/bank/bank.controller.ts` | -| POST | 1 | | `/bank/yapeal/webhook` | public | none | — | n/a | | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | +| POST | 1 | | `/bank/yapeal/webhook` | hidden | none | — | n/a | | `YapealWebhookController.handleYapealWebhook` | `integration/bank/controllers/yapeal-webhook.controller.ts` | | GET | 1 | | `/bankAccount` | public | whole rows | 261 | not yet | | `BankAccountController.getAllUserBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | | POST | 1 | | `/bankAccount` | public | whole rows | 261 | not yet | | `BankAccountController.createBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | | PUT | 1 | | `/bankAccount/:id` | public | whole rows | 261 | not yet | | `BankAccountController.updateBankAccount` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | | POST | 1 | | `/bankAccount/bic` | hidden | whole rows | 26 | not yet | | `BankAccountController.addBankAccountBic` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| POST | 1 | | `/bankAccount/iban` | public | whole rows | 26 | not yet | | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | -| PUT | 1 | | `/bankData/:id` | public | whole rows | 31 | not yet | | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | +| POST | 1 | | `/bankAccount/iban` | hidden | whole rows | 26 | not yet | | `BankAccountController.addBankAccountIban` | `subdomains/supporting/bank/bank-account/bank-account.controller.ts` | +| PUT | 1 | | `/bankData/:id` | hidden | whole rows | 31 | not yet | | `BankDataController.updateBankData` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | | PUT | 1 | | `/bankData/:id/nameCheck` | hidden | whole rows | 276 | not yet | | `BankDataController.doNameCheck` | `subdomains/generic/user/models/bank-data/bank-data.controller.ts` | -| POST | 1 | | `/bankTx` | public | whole rows | 61 | not yet | | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | +| POST | 1 | | `/bankTx` | hidden | whole rows | 61 | not yet | | `BankTxController.uploadSepaFiles` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | | PUT | 1 | | `/bankTx/:id` | hidden | whole rows | 1051 | not yet | | `BankTxController.update` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | | DELETE | 1 | | `/bankTx/:id/buyCrypto` | hidden | whole rows | 247 | not yet | | `BankTxController.reset` | `subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts` | -| PUT | 1 | | `/bankTxRepeat/:id` | public | whole rows | 308 | not yet | | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | -| PUT | 1 | | `/bankTxReturn/:id` | public | whole rows | 438 | not yet | | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | +| PUT | 1 | | `/bankTxRepeat/:id` | hidden | whole rows | 308 | not yet | | `BankTxRepeatController.update` | `subdomains/supporting/bank-tx/bank-tx-repeat/bank-tx-repeat.controller.ts` | +| PUT | 1 | | `/bankTxReturn/:id` | hidden | whole rows | 438 | not yet | | `BankTxReturnController.update` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | | POST | 1 | | `/bankTxReturn/:id/refund` | hidden | whole rows | 727 | not yet | | `BankTxReturnController.refundBuyCrypto` | `subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.controller.ts` | | POST | 1 | | `/blockchain/balances` | public | whole rows | 33 | not yet | | `BlockchainApiController.getBalances` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | | POST | 1 | | `/blockchain/broadcast` | public | none | — | n/a | | `BlockchainApiController.broadcastTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | | POST | 1 | | `/blockchain/transaction` | public | whole rows | 33 | not yet | | `BlockchainApiController.createTransaction` | `integration/blockchain/api/controllers/blockchain-api.controller.ts` | -| GET | 1 | | `/buy` | public | whole rows | 308 | not yet | | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy` | hidden | whole rows | 308 | not yet | | `BuyController.getAllBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | POST | 1 | | `/buy` | hidden | whole rows | 364 | not yet | | `BuyController.createBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| GET | 1 | | `/buy/:id` | hidden | whole rows | 308 | not yet | | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buy/:id` | public | whole rows | 308 | not yet | | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| GET | 1 | | `/buy/:id` | public | whole rows | 308 | not yet | | `BuyController.getBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/:id` | hidden | whole rows | 308 | not yet | | `BuyController.updateBuyRoute` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | GET | 1 | | `/buy/:id/history` | hidden | whole rows | 497 | not yet | | `BuyController.getBuyRouteHistory` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | 1 | | `/buy/paymentInfos` | public | whole rows | 364 | not yet | | `BuyController.createBuyWithPaymentInfo` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | 1 | | `/buy/paymentInfos/:id/confirm` | public | whole rows | 504 | not yet | | `BuyController.confirmBuy` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | 1 | | `/buy/paymentInfos/:id/invoice` | public | whole rows | 504 | not yet | yes | `BuyController.generateInvoicePDF` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | GET | 1 | | `/buy/personalIban` | public | whole rows | 331 | not yet | | `BuyController.getAllPersonalIbans` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | POST | 1 | | `/buy/personalIban` | public | whole rows | 253 | not yet | | `BuyController.createPersonalIban` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | -| PUT | 1 | | `/buy/quote` | hidden | whole rows | 143 | not yet | | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | +| PUT | 1 | | `/buy/quote` | public | whole rows | 143 | not yet | | `BuyController.getBuyQuote` | `subdomains/core/buy-crypto/routes/buy/buy.controller.ts` | | PUT | 1 | | `/buyCrypto/:id` | hidden | whole rows | 1090 | not yet | | `BuyCryptoController.update` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | | DELETE | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 422 | not yet | | `BuyCryptoController.resetAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | | PUT | 1 | | `/buyCrypto/:id/amlCheck` | hidden | whole rows | 1090 | not yet | | `BuyCryptoController.manualPassAmlCheck` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | | POST | 1 | | `/buyCrypto/:id/refund` | hidden | whole rows | 1051 | not yet | | `BuyCryptoController.refundBuyCrypto` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | | POST | 1 | | `/buyCrypto/:id/scorechain` | hidden | whole rows | 717 | not yet | | `BuyCryptoController.retriggerScorechain` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | -| POST | 1 | | `/buyCrypto/:id/webhook` | public | whole rows | 844 | not yet | | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | +| POST | 1 | | `/buyCrypto/:id/webhook` | hidden | whole rows | 844 | not yet | | `BuyCryptoController.triggerWebhook` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | | PUT | 1 | | `/buyCrypto/refVolumes` | hidden | whole rows | 77 | not yet | | `BuyCryptoController.updateRefVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | | PUT | 1 | | `/buyCrypto/volumes` | hidden | whole rows | 487 | not yet | | `BuyCryptoController.updateBuyVolumes` | `subdomains/core/buy-crypto/process/buy-crypto.controller.ts` | | PUT | 1 | | `/buyFiat/:id` | hidden | whole rows | 1033 | not yet | | `BuyFiatController.update` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | @@ -185,11 +185,11 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | PUT | 1 | | `/buyFiat/:id/amlCheck` | hidden | whole rows | 1033 | not yet | | `BuyFiatController.manualPassAmlCheck` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | | POST | 1 | | `/buyFiat/:id/refund` | hidden | whole rows | 803 | not yet | | `BuyFiatController.refundBuyFiat` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | | POST | 1 | | `/buyFiat/:id/scorechain` | hidden | whole rows | 517 | not yet | | `BuyFiatController.retriggerScorechain` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | -| POST | 1 | | `/buyFiat/:id/webhook` | public | whole rows | 644 | not yet | | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | +| POST | 1 | | `/buyFiat/:id/webhook` | hidden | whole rows | 644 | not yet | | `BuyFiatController.triggerWebhook` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | | PUT | 1 | | `/buyFiat/refVolumes` | hidden | whole rows | 77 | not yet | | `BuyFiatController.updateRefVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | | PUT | 1 | | `/buyFiat/volumes` | hidden | whole rows | 308 | not yet | | `BuyFiatController.updateVolumes` | `subdomains/core/sell-crypto/process/buy-fiat.controller.ts` | | GET | 1 | | `/country` | public | whole rows | 23 | not yet | | `CountryController.getAllCountry` | `shared/models/country/country.controller.ts` | -| GET | 1 | | `/cryptoRoute` | public | none | — | n/a | | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | +| GET | 1 | | `/cryptoRoute` | hidden | none | — | n/a | | `CryptoRouteController.getAllCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | | POST | 1 | | `/cryptoRoute` | hidden | none | — | n/a | | `CryptoRouteController.createCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | | GET | 1 | | `/cryptoRoute/:id` | hidden | none | — | n/a | | `CryptoRouteController.getCrypto` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | | PUT | 1 | | `/cryptoRoute/:id` | hidden | none | — | n/a | | `CryptoRouteController.updateCryptoRoute` | `subdomains/core/buy-crypto/routes/swap/crypto-route.controller.ts` | @@ -216,7 +216,7 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | POST | 1 | | `/custody/order` | public | whole rows | 364 | not yet | | `CustodyController.createOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | | POST | 1 | | `/custody/order/:id/confirm` | public | whole rows | 525 | not yet | | `CustodyController.confirmOrder` | `subdomains/core/custody/controllers/custody.controller.ts` | | GET | 1 | | `/custody/pdf` | public | whole rows | 253 | not yet | | `CustodyController.getCustodyPdf` | `subdomains/core/custody/controllers/custody.controller.ts` | -| GET | 1 | | `/dashboard/accounting/ledger/accounts` | public | whole rows | 54 | not yet | yes | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | +| GET | 1 | | `/dashboard/accounting/ledger/accounts` | hidden | whole rows | 54 | not yet | yes | `LedgerController.getAccounts` | `subdomains/core/accounting/controllers/ledger.controller.ts` | | GET | 1 | | `/dashboard/accounting/ledger/accounts/:accountId/legs` | hidden | whole rows | 30 | not yet | yes | `LedgerController.getAccountDetail` | `subdomains/core/accounting/controllers/ledger.controller.ts` | | GET | 1 | | `/dashboard/accounting/ledger/equity-comparison` | hidden | whole rows | 54 | not yet | yes | `LedgerController.getEquityComparison` | `subdomains/core/accounting/controllers/ledger.controller.ts` | | GET | 1 | | `/dashboard/accounting/ledger/margin` | hidden | whole rows | 11 | not yet | yes | `LedgerController.getMargin` | `subdomains/core/accounting/controllers/ledger.controller.ts` | @@ -225,43 +225,43 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | | `/dashboard/financial/changes` | hidden | whole rows | 11 | not yet | | `DashboardFinancialController.getFinancialChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | | GET | 1 | | `/dashboard/financial/changes/latest` | hidden | whole rows | 11 | not yet | | `DashboardFinancialController.getLatestChanges` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | | GET | 1 | | `/dashboard/financial/latest` | hidden | none | — | n/a | | `DashboardFinancialController.getLatestBalance` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | | `/dashboard/financial/log` | public | whole rows | 33 | not yet | yes | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| GET | 1 | | `/dashboard/financial/reconciliation` | public | whole rows | 229 | not yet | | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | +| GET | 1 | | `/dashboard/financial/log` | hidden | whole rows | 33 | not yet | yes | `DashboardFinancialController.getFinancialLog` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | +| GET | 1 | | `/dashboard/financial/reconciliation` | hidden | whole rows | 229 | not yet | | `DashboardReconciliationController.getReconciliation` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | | GET | 1 | | `/dashboard/financial/reconciliation/overview` | hidden | whole rows | 229 | not yet | | `DashboardReconciliationController.getOverview` | `subdomains/supporting/dashboard/dashboard-reconciliation.controller.ts` | | GET | 1 | | `/dashboard/financial/ref-recipients` | hidden | whole rows | 25 | not yet | | `DashboardFinancialController.getRefRewardRecipients` | `subdomains/supporting/dashboard/dashboard-financial.controller.ts` | -| POST | 1 | | `/deposit` | public | whole rows | 6 | not yet | | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | +| POST | 1 | | `/deposit` | hidden | whole rows | 6 | not yet | | `DepositController.createDeposits` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | | PUT | 1 | | `/deposit/lightningWebhook` | hidden | none | — | n/a | | `DepositController.updateLightningDepositWebhook` | `subdomains/supporting/address-pool/deposit/deposit.controller.ts` | | GET | 1 | | `/deuro/info` | public | whole rows | 11 | not yet | | `DEuroController.getInfo` | `integration/blockchain/deuro/controllers/deuro.controller.ts` | -| GET | 1 | | `/dex/check-liquidity` | public | none | — | n/a | | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | +| GET | 1 | | `/dex/check-liquidity` | hidden | none | — | n/a | | `DexController.checkLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | | PUT | 1 | | `/dex/complete-orders` | hidden | whole rows | 156 | not yet | | `DexController.completeOrders` | `subdomains/supporting/dex/dex.controller.ts` | | GET | 1 | | `/dex/liquidity-after-purchase` | hidden | whole rows | 156 | not yet | | `DexController.fetchTargetLiquidityAfterPurchase` | `subdomains/supporting/dex/dex.controller.ts` | | POST | 1 | | `/dex/purchase-liquidity` | hidden | none | — | n/a | | `DexController.purchaseLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | | POST | 1 | | `/dex/reserve-liquidity` | hidden | none | — | n/a | | `DexController.reserveLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | | GET | 1 | | `/dex/transfer-completion` | hidden | none | — | n/a | | `DexController.checkTransferCompletion` | `subdomains/supporting/dex/dex.controller.ts` | | POST | 1 | | `/dex/transfer-liquidity` | hidden | none | — | n/a | | `DexController.transferLiquidity` | `subdomains/supporting/dex/dex.controller.ts` | -| GET | 1 | | `/exchange/:exchange/balances` | public | none | — | n/a | | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/balances` | hidden | none | — | n/a | | `ExchangeController.getBalance` | `integration/exchange/controllers/exchange.controller.ts` | | GET | 1 | | `/exchange/:exchange/price` | hidden | none | — | n/a | | `ExchangeController.getPrice` | `integration/exchange/controllers/exchange.controller.ts` | | PUT | 1 | | `/exchange/:exchange/sync` | hidden | whole rows | 40 | not yet | | `ExchangeController.syncExchange` | `integration/exchange/controllers/exchange.controller.ts` | | GET | 1 | | `/exchange/:exchange/trade` | hidden | none | — | n/a | | `ExchangeController.getTrades` | `integration/exchange/controllers/exchange.controller.ts` | | POST | 1 | | `/exchange/:exchange/trade` | hidden | none | — | n/a | | `ExchangeController.trade` | `integration/exchange/controllers/exchange.controller.ts` | | GET | 1 | | `/exchange/:exchange/trade/history` | hidden | none | — | n/a | | `ExchangeController.getTradeHistory` | `integration/exchange/controllers/exchange.controller.ts` | | POST | 1 | | `/exchange/:exchange/withdraw` | hidden | none | — | n/a | | `ExchangeController.withdrawFunds` | `integration/exchange/controllers/exchange.controller.ts` | -| GET | 1 | | `/exchange/:exchange/withdraw/:id` | public | none | — | n/a | | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | +| GET | 1 | | `/exchange/:exchange/withdraw/:id` | hidden | none | — | n/a | | `ExchangeController.getWithdraw` | `integration/exchange/controllers/exchange.controller.ts` | | GET | 1 | | `/exchange/trade/:id` | hidden | none | — | n/a | | `ExchangeController.getTrade` | `integration/exchange/controllers/exchange.controller.ts` | -| POST | 1 | | `/faucet` | public | whole rows | 308 | not yet | | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | -| POST | 1 | | `/fee` | public | whole rows | 65 | not yet | | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | +| POST | 1 | | `/faucet` | hidden | whole rows | 308 | not yet | | `FaucetRequestController.faucetRequest` | `subdomains/core/faucet-request/controller/faucet-request.controller.ts` | +| POST | 1 | | `/fee` | hidden | whole rows | 65 | not yet | | `FeeController.createFee` | `subdomains/supporting/payment/controllers/fee.controller.ts` | | GET | 1 | | `/fiat` | public | whole rows | 23 | not yet | yes | `FiatController.getAllFiat` | `shared/models/fiat/fiat.controller.ts` | -| POST | 1 | | `/fiatOutput` | public | whole rows | 377 | not yet | | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | +| POST | 1 | | `/fiatOutput` | hidden | whole rows | 377 | not yet | | `FiatOutputController.create` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | | PUT | 1 | | `/fiatOutput/:id` | hidden | whole rows | 59 | not yet | | `FiatOutputController.update` | `subdomains/supporting/fiat-output/fiat-output.controller.ts` | | GET | 1 | | `/frankencoin/info` | public | whole rows | 11 | not yet | | `FrankencoinController.getInfo` | `integration/blockchain/frankencoin/controllers/frankencoin.controller.ts` | -| POST | 1 | | `/gs/db` | public | caller-defined | 13 | n/a | yes | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | +| POST | 1 | | `/gs/db` | hidden | caller-defined | 13 | n/a | yes | `GsController.getDbData` | `subdomains/generic/gs/gs.controller.ts` | | POST | 1 | | `/gs/db/custom` | hidden | caller-defined | — | n/a | yes | `GsController.getExtendedData` | `subdomains/generic/gs/gs.controller.ts` | | POST | 1 | | `/gs/debug` | hidden | projected | — | n/a | yes | `GsController.executeDebugQuery` | `subdomains/generic/gs/gs.controller.ts` | | POST | 1 | | `/gs/evm/bridgeApproval` | hidden | whole rows | 33 | not yet | | `GsEvmController.approveBridge` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | 1 | | `/gs/evm/coinTransaction` | hidden | whole rows | 6 | not yet | | `GsEvmController.sendCoinTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | 1 | | `/gs/evm/contractApproval` | hidden | whole rows | 33 | not yet | | `GsEvmController.approveContract` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | 1 | | `/gs/evm/contractTransaction` | hidden | none | — | n/a | | `GsEvmController.sendContractTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | -| POST | 1 | | `/gs/evm/rawTransaction` | public | whole rows | 6 | not yet | | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | +| POST | 1 | | `/gs/evm/rawTransaction` | hidden | whole rows | 6 | not yet | | `GsEvmController.sendRawTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | | POST | 1 | | `/gs/evm/tokenTransaction` | hidden | whole rows | 33 | not yet | | `GsEvmController.sendTokenTransaction` | `subdomains/generic/gs/gs-evm.controller.ts` | | GET | 1 | | `/gs/support` | hidden | whole rows | 907 | not yet | yes | `GsController.getSupportData` | `subdomains/generic/gs/gs.controller.ts` | | GET | neutral | | `/health` | public | none | — | n/a | | `HealthController.getHealth` | `subdomains/core/monitoring/health.controller.ts` | @@ -270,12 +270,12 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | neutral | | `/health/liquidity` | public | none | — | n/a | | `HealthController.getLiquidityHealth` | `subdomains/core/monitoring/health.controller.ts` | | GET | neutral | | `/health/nodes` | public | none | — | n/a | | `HealthController.getNodeHealth` | `subdomains/core/monitoring/health.controller.ts` | | GET | neutral | | `/health/payment` | public | none | — | n/a | | `HealthController.getPaymentHealth` | `subdomains/core/monitoring/health.controller.ts` | -| GET | 1 | | `/history` | public | whole rows | 1363 | not yet | | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | +| GET | 1 | | `/history` | hidden | whole rows | 1363 | not yet | | `HistoryController.getHistory` | `subdomains/core/history/controllers/history.controller.ts` | | GET | 1 | | `/history/:exportType` | hidden | whole rows | 1363 | not yet | | `HistoryController.getApiHistory` | `subdomains/core/history/controllers/history.controller.ts` | | GET | 1 | | `/history/csv` | hidden | none | — | n/a | | `HistoryController.getCsv` | `subdomains/core/history/controllers/history.controller.ts` | -| POST | 1 | | `/history/csv` | public | whole rows | 1363 | not yet | | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | +| POST | 1 | | `/history/csv` | hidden | whole rows | 1363 | not yet | | `HistoryController.createCsv` | `subdomains/core/history/controllers/history.controller.ts` | | GET | 1 | | `/ikna/bfs/:id` | hidden | none | — | n/a | | `IknaController.getBfsResult` | `integration/ikna/controllers/ikna.controller.ts` | -| POST | 1 | | `/ikna/bfs/address` | public | none | — | n/a | | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | +| POST | 1 | | `/ikna/bfs/address` | hidden | none | — | n/a | | `IknaController.createBfsAddressRequest` | `integration/ikna/controllers/ikna.controller.ts` | | GET | 1 | | `/ikna/tag` | hidden | none | — | n/a | | `IknaController.getIknaAddressTag` | `integration/ikna/controllers/ikna.controller.ts` | | GET | 1 | | `/juice/info` | public | whole rows | 11 | not yet | | `JuiceController.getInfo` | `integration/blockchain/juice/controllers/juice.controller.ts` | | GET | 1 | yes | `/kyc` | public | whole rows | 351 | not yet | | `KycController.getKycProgressV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | @@ -290,13 +290,13 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | yes | `/kyc/:code/countries` | public | whole rows | 351 | not yet | | `KycController.getKycCountriesByCodeV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | 1 | yes | `/kyc/:id/documents` | public | whole rows | 328 | not yet | | `KycClientController.getKycFilesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | 1 | yes | `/kyc/:id/documents/:type` | public | whole rows | 328 | not yet | | `KycClientController.getKycFileV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | -| GET | 2 | | `/kyc/:step` | public | whole rows | 364 | not yet | | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/:step` | hidden | whole rows | 364 | not yet | | `KycController.initiateStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | DELETE | 1 | | `/kyc/admin/blacklist/ip` | hidden | none | — | n/a | | `KycAdminController.deleteIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | PUT | 1 | | `/kyc/admin/blacklist/ip` | hidden | whole rows | 12 | not yet | | `KycAdminController.addIpToBlacklist` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | POST | 1 | | `/kyc/admin/ident/file/sync` | hidden | whole rows | 243 | not yet | | `KycAdminController.syncIdentFiles` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | POST | 1 | | `/kyc/admin/log` | hidden | whole rows | 253 | not yet | | `KycAdminController.createLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | PUT | 1 | | `/kyc/admin/log/:id` | hidden | whole rows | 17 | not yet | | `KycAdminController.updateLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | -| PUT | 1 | | `/kyc/admin/nameCheck/:id` | public | whole rows | 245 | not yet | | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | +| PUT | 1 | | `/kyc/admin/nameCheck/:id` | hidden | whole rows | 245 | not yet | | `KycAdminController.updateNameCheckLog` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | PUT | 1 | | `/kyc/admin/step/:id` | hidden | whole rows | 385 | not yet | | `KycAdminController.updateKycStep` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | POST | 1 | | `/kyc/admin/webhook` | hidden | whole rows | 364 | not yet | | `KycAdminController.triggerWebhook` | `subdomains/generic/kyc/controllers/kyc-admin.controller.ts` | | GET | 2 | | `/kyc/client/payments` | public | whole rows | 1092 | not yet | | `KycClientController.getAllPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | @@ -306,13 +306,13 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 2 | | `/kyc/client/users/:id/payments` | public | whole rows | 1092 | not yet | | `KycClientController.getUserPayments` | `subdomains/generic/kyc/controllers/kyc-client.controller.ts` | | GET | 1 | yes | `/kyc/countries` | public | whole rows | 351 | not yet | | `KycController.getKycCountriesV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | 2 | yes | `/kyc/countries` | public | whole rows | 351 | not yet | | `KycController.getKycCountries` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| DELETE | 2 | | `/kyc/data/:type/:id` | hidden | whole rows | 351 | not yet | | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| DELETE | 2 | | `/kyc/data/:type/:id` | public | whole rows | 351 | not yet | | `KycController.cancelStep` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/additional/:id` | public | whole rows | 364 | not yet | | `KycController.updateAdditionalDocumentsData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/address/:id` | public | whole rows | 364 | not yet | | `KycController.updateAddressChangeData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/authority/:id` | public | whole rows | 364 | not yet | | `KycController.updateAuthorityData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/beneficial/:id` | public | whole rows | 364 | not yet | | `KycController.updateBeneficialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/confirmation/:id` | public | whole rows | 364 | not yet | | `KycController.updateSoleProprietorshipConfirmationData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/data/contact/:id` | hidden | whole rows | 364 | not yet | | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/data/contact/:id` | public | whole rows | 364 | not yet | | `KycController.updateContactData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | GET | 2 | | `/kyc/data/financial/:id` | public | whole rows | 351 | not yet | | `KycController.getFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/financial/:id` | public | whole rows | 364 | not yet | | `KycController.updateFinancialData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/legal/:id` | public | whole rows | 364 | not yet | | `KycController.updateCommercialRegisterData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | @@ -328,24 +328,24 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | PUT | 2 | | `/kyc/data/residence/:id` | public | whole rows | 364 | not yet | | `KycController.updateResidencePermitData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/signatory/:id` | public | whole rows | 364 | not yet | | `KycController.updateSignatoryPowerData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 2 | | `/kyc/data/statutes/:id` | public | whole rows | 364 | not yet | | `KycController.updateStatutesData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| GET | 2 | | `/kyc/file/:id` | hidden | whole rows | 264 | not yet | | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| PUT | 2 | | `/kyc/ident/manual/:id` | hidden | whole rows | 364 | not yet | | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | -| POST | 2 | | `/kyc/ident/sumsub` | public | whole rows | 364 | not yet | | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| GET | 2 | | `/kyc/file/:id` | public | whole rows | 264 | not yet | | `KycController.getFile` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| PUT | 2 | | `/kyc/ident/manual/:id` | public | whole rows | 364 | not yet | | `KycController.updateIdentData` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | +| POST | 2 | | `/kyc/ident/sumsub` | hidden | whole rows | 364 | not yet | | `KycController.sumsubWebhook` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | DELETE | 2 | | `/kyc/transfer` | hidden | whole rows | 351 | not yet | | `KycController.removeKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | POST | 2 | | `/kyc/transfer` | hidden | whole rows | 364 | not yet | | `KycController.addKycClient` | `subdomains/generic/kyc/controllers/kyc.controller.ts` | | PUT | 1 | yes | `/kyc/transfer` | public | whole rows | 364 | not yet | | `KycController.transferKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | 1 | yes | `/kyc/users` | public | whole rows | 328 | not yet | | `KycClientController.getAllKycDataV1` | `subdomains/generic/user/models/kyc/kyc.controller.ts` | | GET | 1 | | `/language` | public | whole rows | 7 | not yet | | `LanguageController.getAllLanguage` | `shared/models/language/language.controller.ts` | -| PUT | 1 | | `/limitRequest/:id` | public | whole rows | 434 | not yet | | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | -| GET | 1 | | `/liquidityManagement/balance` | public | whole rows | 40 | not yet | | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | +| PUT | 1 | | `/limitRequest/:id` | hidden | whole rows | 434 | not yet | | `LimitRequestController.updateUserData` | `subdomains/supporting/support-issue/limit-request.controller.ts` | +| GET | 1 | | `/liquidityManagement/balance` | hidden | whole rows | 40 | not yet | | `LiquidityBalanceController.getBalances` | `subdomains/core/liquidity-management/controllers/balance.controller.ts` | | PUT | 1 | | `/liquidityManagement/order/:id/resolveUncertain` | hidden | whole rows | 139 | not yet | | `LiquidityManagementOrderController.resolveUncertainOrder` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | -| GET | 1 | | `/liquidityManagement/order/in-progress` | public | whole rows | 139 | not yet | | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | +| GET | 1 | | `/liquidityManagement/order/in-progress` | hidden | whole rows | 139 | not yet | | `LiquidityManagementOrderController.getProcessingOrders` | `subdomains/core/liquidity-management/controllers/order.controller.ts` | | GET | 1 | | `/liquidityManagement/pipeline/:id/status` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.getPipelineStatus` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | | `/liquidityManagement/pipeline/buy` | public | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | +| POST | 1 | | `/liquidityManagement/pipeline/buy` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.buyLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | | GET | 1 | | `/liquidityManagement/pipeline/in-progress` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.getProcessingPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | | POST | 1 | | `/liquidityManagement/pipeline/sell` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.sellLiquidity` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | | GET | 1 | | `/liquidityManagement/pipeline/stopped` | hidden | whole rows | 112 | not yet | | `LiquidityManagementPipelineController.getStoppedPipelines` | `subdomains/core/liquidity-management/controllers/pipeline.controller.ts` | -| POST | 1 | | `/liquidityManagement/rule` | public | whole rows | 83 | not yet | | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | +| POST | 1 | | `/liquidityManagement/rule` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.createRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | GET | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.getRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PUT | 1 | | `/liquidityManagement/rule/:id` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.updateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | | PATCH | 1 | | `/liquidityManagement/rule/:id/deactivate` | hidden | whole rows | 83 | not yet | | `LiquidityManagementRuleController.deactivateRule` | `subdomains/core/liquidity-management/controllers/rule.controller.ts` | @@ -364,24 +364,25 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | | `/lnurlp/wait/:id` | public | whole rows | 545 | not yet | | `LnUrlPForwardController.waitForPayment` | `subdomains/generic/forwarding/controllers/lnurlp-forward.controller.ts` | | GET | 1 | | `/lnurlw/:id` | public | none | — | n/a | yes | `LnUrlWForwardController.lnUrlWForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | | GET | 1 | | `/lnurlw/cb/:id` | public | none | — | n/a | yes | `LnUrlWForwardController.lnUrlWCallbackForward` | `subdomains/generic/forwarding/controllers/lnurlw-forward.controller.ts` | -| POST | 1 | | `/log` | public | whole rows | 11 | not yet | | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | +| POST | 1 | | `/log` | hidden | whole rows | 11 | not yet | | `LogController.create` | `subdomains/supporting/log/log.controller.ts` | | PUT | 1 | | `/log/:id` | hidden | whole rows | 11 | not yet | | `LogController.update` | `subdomains/supporting/log/log.controller.ts` | +| POST | 1 | | `/log/clientError` | public | none | — | n/a | yes | `ClientErrorController.logError` | `subdomains/supporting/log/client-error.controller.ts` | | PUT | 1 | | `/log/financial/validity` | hidden | projected | 11 | 0/4 | | `LogController.setFinancialLogValidity` | `subdomains/supporting/log/log.controller.ts` | -| GET | 1 | | `/monitoring/data` | public | none | — | n/a | | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | +| GET | 1 | | `/monitoring/data` | hidden | none | — | n/a | | `MonitoringController.getSystemState` | `subdomains/core/monitoring/monitoring.controller.ts` | | POST | 1 | | `/monitoring/data` | hidden | none | — | n/a | | `MonitoringController.onWebhook` | `subdomains/core/monitoring/monitoring.controller.ts` | | GET | 1 | | `/mros` | hidden | whole rows | 243 | not yet | | `MrosController.getAll` | `subdomains/supporting/mros/mros.controller.ts` | -| POST | 1 | | `/mros` | public | whole rows | 253 | not yet | | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | +| POST | 1 | | `/mros` | hidden | whole rows | 253 | not yet | | `MrosController.createMros` | `subdomains/supporting/mros/mros.controller.ts` | | GET | 1 | | `/mros/:id` | hidden | whole rows | 243 | not yet | | `MrosController.getById` | `subdomains/supporting/mros/mros.controller.ts` | | PUT | 1 | | `/mros/:id` | hidden | whole rows | 98 | not yet | | `MrosController.updateMros` | `subdomains/supporting/mros/mros.controller.ts` | | POST | 1 | | `/node/:node/:mode/cmd` | hidden | none | — | n/a | | `NodeController.cmdForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | | POST | 1 | | `/node/:node/:mode/rpc` | hidden | none | — | n/a | | `NodeController.rpcForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | | GET | 1 | | `/node/:node/:mode/tx/:txId` | hidden | none | — | n/a | | `NodeController.waitForTxForMode` | `integration/blockchain/bitcoin/node/node.controller.ts` | | POST | 1 | | `/node/:node/cmd` | hidden | none | — | n/a | | `NodeController.cmd` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | | `/node/:node/rpc` | public | none | — | n/a | | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | +| POST | 1 | | `/node/:node/rpc` | hidden | none | — | n/a | | `NodeController.rpc` | `integration/blockchain/bitcoin/node/node.controller.ts` | | GET | 1 | | `/node/:node/tx/:txId` | hidden | none | — | n/a | | `NodeController.waitForTx` | `integration/blockchain/bitcoin/node/node.controller.ts` | -| POST | 1 | | `/notification/send-mail` | public | whole rows | 13 | not yet | | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | -| POST | 1 | | `/payIn` | public | whole rows | 545 | not yet | | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | -| POST | 1 | | `/payIn/lnurlpDeposit/:uniqueId` | public | none | — | n/a | | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | +| POST | 1 | | `/notification/send-mail` | hidden | whole rows | 13 | not yet | | `NotificationController.sendMail` | `subdomains/supporting/notification/notification.controller.ts` | +| POST | 1 | | `/payIn` | hidden | whole rows | 545 | not yet | | `PayInController.createPayIn` | `subdomains/supporting/payin/controllers/payin.controller.ts` | +| POST | 1 | | `/payIn/lnurlpDeposit/:uniqueId` | hidden | none | — | n/a | | `PayInWebhookController.deposit` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | | POST | 1 | | `/payIn/lnurlpPayment/:uniqueId` | hidden | none | — | n/a | | `PayInWebhookController.payment` | `subdomains/supporting/payin/controllers/payin-webhook.controller.ts` | | POST | 1 | | `/payIn/poll` | hidden | none | — | n/a | | `PayInController.pollAddress` | `subdomains/supporting/payin/controllers/payin.controller.ts` | | POST | 1 | | `/payIn/retry` | hidden | whole rows | — | not yet | | `PayInController.retryUncertainSend` | `subdomains/supporting/payin/controllers/payin.controller.ts` | @@ -395,9 +396,9 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | | `/paymentLink/config` | public | whole rows | 253 | not yet | | `PaymentLinkController.getUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | 1 | | `/paymentLink/config` | public | whole rows | 253 | not yet | | `PaymentLinkController.updateUserPaymentLinksConfig` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | 1 | | `/paymentLink/history` | public | whole rows | 545 | not yet | | `PaymentLinkController.getPaymentHistory` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/integration/binance/activate/:id` | public | whole rows | 513 | not yet | | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/binance/activate/:id` | hidden | whole rows | 513 | not yet | | `C2BPaymentLinkController.activateBinancePay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | 1 | | `/paymentLink/integration/binance/webhook` | hidden | whole rows | 545 | not yet | | `C2BPaymentLinkController.binancePayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | -| POST | 1 | | `/paymentLink/integration/kucoin/activate/:id` | public | whole rows | 513 | not yet | | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | +| POST | 1 | | `/paymentLink/integration/kucoin/activate/:id` | hidden | whole rows | 513 | not yet | | `C2BPaymentLinkController.activateKucoinPay` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | 1 | | `/paymentLink/integrations/kucoin/webhook/cancel` ⚠️ | hidden | none | — | n/a | | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | POST | 1 | | `/paymentLink/integrations/kucoin/webhook/success` | hidden | none | — | n/a | | `C2BPaymentLinkController.kucoinPayWebhook` | `subdomains/core/payment-link/controllers/c2b-payment-link.controller.ts` | | GET | 1 | | `/paymentLink/locations` | public | whole rows | 513 | not yet | | `PaymentLinkController.getLocations` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | @@ -405,29 +406,29 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | DELETE | 1 | | `/paymentLink/payment` | public | whole rows | 545 | not yet | | `PaymentLinkController.cancelPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | 1 | | `/paymentLink/payment` | hidden | whole rows | 545 | not yet | yes | `PaymentLinkController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | POST | 1 | | `/paymentLink/payment` | public | whole rows | 545 | not yet | | `PaymentLinkController.createPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| PUT | 1 | | `/paymentLink/payment/:id` | public | whole rows | 545 | not yet | | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| PUT | 1 | | `/paymentLink/payment/:id` | hidden | whole rows | 545 | not yet | | `PaymentLinkController.updatePaymentLinkPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | 1 | | `/paymentLink/payment/confirm` | public | whole rows | 513 | not yet | | `PaymentLinkController.confirmPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | 1 | | `/paymentLink/payment/wait` | public | whole rows | 513 | not yet | | `PaymentLinkController.waitForPayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | PUT | 1 | | `/paymentLink/pos` | public | whole rows | 513 | not yet | | `PaymentLinkController.createPosLink` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | -| GET | 1 | | `/paymentLink/recipient` | public | whole rows | 472 | not yet | | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | 1 | | `/paymentLink/recipient` | hidden | whole rows | 472 | not yet | | `PaymentLinkController.getPaymentRecipient` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | 1 | | `/paymentLink/standard` | public | none | — | n/a | | `PaymentStandardController.getAll` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | | GET | 1 | | `/paymentLink/standard/:id` | public | none | — | n/a | | `PaymentStandardController.getById` | `subdomains/core/payment-link/controllers/payment-standard.controller.ts` | | GET | 1 | | `/paymentLink/stickers` | hidden | whole rows | 513 | not yet | yes | `PaymentLinkController.generateOcpStickers` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | 1 | | `/paymentLink/walletApp` | public | whole rows | 33 | not yet | | `WalletAppController.getAll` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | | GET | 1 | | `/paymentLink/walletApp/:id` | public | whole rows | 33 | not yet | | `WalletAppController.getById` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | | GET | 1 | | `/paymentLink/walletApp/recommended` | public | whole rows | 33 | not yet | | `WalletAppController.getRecommended` | `subdomains/core/payment-link/controllers/wallet-app.controller.ts` | -| POST | 1 | | `/payout` | public | none | — | n/a | | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | +| POST | 1 | | `/payout` | hidden | none | — | n/a | | `PayoutController.doPayout` | `subdomains/supporting/payout/payout.controller.ts` | | GET | 1 | | `/payout/completion` | hidden | whole rows | 123 | not yet | | `PayoutController.checkOrderCompletion` | `subdomains/supporting/payout/payout.controller.ts` | | POST | 1 | | `/payout/retry` | hidden | whole rows | 123 | not yet | | `PayoutController.retryUncertainPayout` | `subdomains/supporting/payout/payout.controller.ts` | | POST | 1 | | `/payout/speedup` | hidden | whole rows | 123 | not yet | | `PayoutController.speedupTransaction` | `subdomains/supporting/payout/payout.controller.ts` | -| GET | neutral | | `/pl` | public | whole rows | 545 | not yet | | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | -| GET | 1 | | `/plp` | public | whole rows | 545 | not yet | | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | +| GET | neutral | | `/pl` | hidden | whole rows | 545 | not yet | | `PaymentForwardController.lnUrlPForward` | `subdomains/generic/forwarding/controllers/payment-forward.controller.ts` | +| GET | 1 | | `/plp` | hidden | whole rows | 545 | not yet | | `PaymentLinkShortController.createInvoicePayment` | `subdomains/core/payment-link/controllers/payment-link.controller.ts` | | GET | 1 | | `/pricing` | hidden | none | — | n/a | | `PricingController.getRawPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | | PUT | 1 | | `/pricing` | hidden | whole rows | 53 | not yet | | `PricingController.updatePrices` | `subdomains/supporting/pricing/pricing.controller.ts` | -| GET | 1 | | `/pricing/price` | public | whole rows | 33 | not yet | | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | +| GET | 1 | | `/pricing/price` | hidden | whole rows | 33 | not yet | | `PricingController.getPrice` | `subdomains/supporting/pricing/pricing.controller.ts` | | GET | 1 | | `/realunit/account/:address` | public | whole rows | 40 | not yet | | `RealUnitController.getAccountSummary` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | 1 | | `/realunit/account/:address/history` | public | none | — | n/a | | `RealUnitController.getAccountHistory` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/admin/quotes` | public | whole rows | 112 | not yet | | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | +| GET | 1 | | `/realunit/admin/quotes` | hidden | whole rows | 112 | not yet | | `RealUnitController.getAdminQuotes` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | 1 | | `/realunit/admin/quotes/:id/confirm-payment` | hidden | whole rows | 1051 | not yet | | `RealUnitController.confirmPaymentReceived` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | 1 | | `/realunit/admin/registration/:id/forward` | hidden | whole rows | 493 | not yet | yes | `RealUnitController.forwardRegistration` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | 1 | | `/realunit/admin/transactions` | hidden | whole rows | 362 | not yet | | `RealUnitController.getAdminTransactions` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -440,7 +441,7 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | yes | `/realunit/brokerbot/sellShares` | public | whole rows | 308 | not yet | | `RealUnitController.getBrokerbotSellShares` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | 1 | | `/realunit/buy` | public | whole rows | 364 | not yet | yes | `RealUnitController.getPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | 1 | | `/realunit/buy/:id/confirm` | public | whole rows | 504 | not yet | | `RealUnitController.confirmBuy` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | -| GET | 1 | | `/realunit/compliance/customers` | public | whole rows | 308 | not yet | | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | +| GET | 1 | | `/realunit/compliance/customers` | hidden | whole rows | 308 | not yet | | `RealUnitComplianceController.searchCustomers` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | 1 | | `/realunit/compliance/customers/:id` | hidden | whole rows | 826 | not yet | | `RealUnitComplianceController.getCustomer` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | 1 | | `/realunit/compliance/customers/:id/dossier` | hidden | whole rows | 264 | not yet | | `RealUnitComplianceController.downloadCustomerDossier` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | | GET | 1 | | `/realunit/compliance/customers/:id/files` | hidden | whole rows | 264 | not yet | | `RealUnitComplianceController.getCustomerFiles` | `subdomains/supporting/realunit/controllers/realunit-compliance.controller.ts` | @@ -478,7 +479,7 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | | `/realunit/support/activity` | hidden | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueActivity` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | 1 | | `/realunit/support/clerks` | hidden | none | — | n/a | | `RealUnitSupportController.getRealUnitSupportClerks` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | 1 | | `/realunit/support/counts` | hidden | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueCounts` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | -| GET | 1 | | `/realunit/support/list` | public | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | +| GET | 1 | | `/realunit/support/list` | hidden | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueList` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | GET | 1 | | `/realunit/support/statistics` | hidden | whole rows | 99 | not yet | | `RealUnitSupportController.getSupportIssueStatistics` | `subdomains/supporting/realunit/controllers/realunit-support.controller.ts` | | PUT | 1 | | `/realunit/swap` | public | whole rows | 308 | not yet | yes | `RealUnitController.getSwapPaymentInfo` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | PUT | 1 | | `/realunit/swap/:id/broadcast` | public | whole rows | 504 | not yet | yes | `RealUnitController.broadcastSwapTransaction` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | @@ -490,40 +491,40 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | PUT | 1 | | `/realunit/transfer/:id/confirm` | public | whole rows | 87 | not yet | yes | `RealUnitController.confirmTransfer` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | 1 | yes | `/realunit/wallet/status` | public | whole rows | 308 | not yet | yes | `RealUnitController.getWalletStatus` | `subdomains/supporting/realunit/controllers/realunit.controller.ts` | | GET | 1 | | `/recall` | hidden | whole rows | 174 | not yet | | `RecallController.getAll` | `subdomains/supporting/recall/recall.controller.ts` | -| POST | 1 | | `/recall` | public | whole rows | 308 | not yet | | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | +| POST | 1 | | `/recall` | hidden | whole rows | 308 | not yet | | `RecallController.createRecall` | `subdomains/supporting/recall/recall.controller.ts` | | GET | 1 | | `/recall/:id` | hidden | whole rows | 174 | not yet | | `RecallController.getById` | `subdomains/supporting/recall/recall.controller.ts` | | PUT | 1 | | `/recall/:id` | hidden | whole rows | 308 | not yet | | `RecallController.updateRecall` | `subdomains/supporting/recall/recall.controller.ts` | -| GET | 1 | | `/recommendation` | public | whole rows | 474 | not yet | | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | +| GET | 1 | | `/recommendation` | hidden | whole rows | 474 | not yet | | `RecommendationController.getAllRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | | POST | 1 | | `/recommendation` | hidden | whole rows | 364 | not yet | | `RecommendationController.createRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | | PUT | 1 | | `/recommendation/:id/confirm` | hidden | whole rows | 643 | not yet | | `RecommendationController.confirmRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | | PUT | 1 | | `/recommendation/:id/reject` | hidden | whole rows | 643 | not yet | | `RecommendationController.rejectRecommendation` | `subdomains/generic/user/models/recommendation/recommendation.controller.ts` | -| GET | 1 | | `/ref` | public | none | — | n/a | | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | +| GET | 1 | | `/ref` | hidden | none | — | n/a | | `RefController.createRef` | `subdomains/core/referral/process/ref.controller.ts` | | POST | 1 | | `/reward/ref` | hidden | whole rows | 156 | not yet | | `RefRewardController.createPendingRefRewards` | `subdomains/core/referral/reward/ref-reward.controller.ts` | | PUT | 1 | | `/reward/ref/:id` | hidden | whole rows | 234 | not yet | | `RefRewardController.updateRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | | POST | 1 | | `/reward/ref/manual` | hidden | whole rows | 308 | not yet | | `RefRewardController.createManualRefReward` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| PUT | 1 | | `/reward/ref/volumes` | public | whole rows | 308 | not yet | | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | -| GET | 1 | | `/route` | public | whole rows | 308 | not yet | | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | +| PUT | 1 | | `/reward/ref/volumes` | hidden | whole rows | 308 | not yet | | `RefRewardController.updateVolumes` | `subdomains/core/referral/reward/ref-reward.controller.ts` | +| GET | 1 | | `/route` | hidden | whole rows | 308 | not yet | | `RouteController.getAllRoutes` | `subdomains/core/route/route.controller.ts` | | PUT | 1 | | `/route/:id` | hidden | whole rows | 174 | not yet | | `RouteController.updateRoute` | `subdomains/core/route/route.controller.ts` | -| POST | 1 | | `/scorechain/screening` | public | whole rows | 14 | not yet | | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | -| GET | 1 | | `/sell` | public | whole rows | 308 | not yet | | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| POST | 1 | | `/scorechain/screening` | hidden | whole rows | 14 | not yet | | `ScorechainController.screen` | `integration/scorechain/controllers/scorechain.controller.ts` | +| GET | 1 | | `/sell` | hidden | whole rows | 308 | not yet | | `SellController.getAllSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | POST | 1 | | `/sell` | hidden | whole rows | 308 | not yet | | `SellController.createSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | | `/sell/:id` | hidden | whole rows | 377 | not yet | | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | | `/sell/:id` | public | whole rows | 308 | not yet | | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/sell/:id` | public | whole rows | 377 | not yet | | `SellController.getSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| PUT | 1 | | `/sell/:id` | hidden | whole rows | 308 | not yet | | `SellController.updateSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | GET | 1 | | `/sell/:id/history` | hidden | whole rows | 470 | not yet | | `SellController.getSellRouteHistory` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | PUT | 1 | | `/sell/paymentInfos` | public | whole rows | 308 | not yet | | `SellController.createSellWithPaymentInfo` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | PUT | 1 | | `/sell/paymentInfos/:id/confirm` | public | whole rows | 545 | not yet | | `SellController.confirmSell` | `subdomains/core/sell-crypto/route/sell.controller.ts` | | GET | 1 | | `/sell/paymentInfos/:id/tx` | public | whole rows | 504 | not yet | | `SellController.depositTx` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| PUT | 1 | | `/sell/quote` | hidden | whole rows | 143 | not yet | | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | -| GET | 1 | | `/setting` | public | whole rows | 5 | not yet | | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | +| PUT | 1 | | `/sell/quote` | public | whole rows | 143 | not yet | | `SellController.getSellQuote` | `subdomains/core/sell-crypto/route/sell.controller.ts` | +| GET | 1 | | `/setting` | hidden | whole rows | 5 | not yet | | `SettingController.getSettings` | `shared/models/setting/setting.controller.ts` | | PUT | 1 | | `/setting/:key` | hidden | whole rows | 5 | not yet | | `SettingController.updateSetting` | `shared/models/setting/setting.controller.ts` | | PUT | 1 | | `/setting/customSignUpFees` | hidden | none | — | n/a | | `SettingController.updateCustomSignUpFees` | `shared/models/setting/setting.controller.ts` | | PUT | 1 | | `/setting/disabledProcesses` | hidden | none | — | n/a | | `SettingController.updateProcess` | `shared/models/setting/setting.controller.ts` | | GET | 1 | | `/setting/infoBanner` | public | none | — | n/a | | `SettingController.getInfoBanner` | `shared/models/setting/setting.controller.ts` | -| POST | 1 | | `/specialExternalAccount` | public | whole rows | 7 | not yet | | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | +| POST | 1 | | `/specialExternalAccount` | hidden | whole rows | 7 | not yet | | `SpecialExternalAccountController.createSpecialExternalAccount` | `subdomains/supporting/payment/controllers/special-external-account.controller.ts` | | GET | 1 | | `/statistic` | public | none | — | n/a | | `StatisticController.getAll` | `subdomains/core/statistic/statistic.controller.ts` | | GET | 1 | | `/statistic/status` | public | whole rows | 5 | not yet | | `StatisticController.getStatus` | `subdomains/core/statistic/statistic.controller.ts` | | GET | 1 | | `/statistic/transactions` | public | whole rows | 419 | not yet | | `StatisticController.getTransactions` | `subdomains/core/statistic/statistic.controller.ts` | -| GET | 1 | | `/support` | public | whole rows | 593 | not yet | | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | +| GET | 1 | | `/support` | hidden | whole rows | 593 | not yet | | `SupportController.searchUserByKey` | `subdomains/generic/support/support.controller.ts` | | GET | 1 | | `/support/:id` | hidden | whole rows | 826 | not yet | | `SupportController.getUserData` | `subdomains/generic/support/support.controller.ts` | | GET | 1 | | `/support/:id/ip-log-pdf` | hidden | whole rows | 12 | not yet | | `SupportController.getIpLogPdf` | `subdomains/generic/support/support.controller.ts` | | POST | 1 | | `/support/:id/onboarding-pdf` | hidden | whole rows | 264 | not yet | | `SupportController.generateOnboardingPdf` | `subdomains/generic/support/support.controller.ts` | @@ -534,11 +535,11 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | | `/support/call-queues/clerks` | hidden | none | — | n/a | | `SupportController.getCallQueueClerks` | `subdomains/generic/support/support.controller.ts` | | GET | 1 | | `/support/issue` | public | whole rows | 450 | not yet | | `SupportIssueController.getIssues` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | POST | 1 | | `/support/issue` | public | whole rows | 493 | not yet | | `SupportIssueController.createIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/:id` | hidden | whole rows | 450 | not yet | | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| PUT | 1 | | `/support/issue/:id` | public | whole rows | 421 | not yet | | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/:id` | public | whole rows | 450 | not yet | | `SupportIssueController.getIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| PUT | 1 | | `/support/issue/:id` | hidden | whole rows | 421 | not yet | | `SupportIssueController.updateSupportIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | PUT | 1 | | `/support/issue/:id/close` | public | whole rows | 450 | not yet | | `SupportIssueController.closeIssue` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | 1 | | `/support/issue/:id/data` | hidden | whole rows | 951 | not yet | | `SupportIssueController.getIssueData` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | | `/support/issue/:id/message` | hidden | whole rows | 441 | not yet | yes | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/:id/message` | public | whole rows | 441 | not yet | yes | `SupportIssueController.createSupportMessage` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | 1 | | `/support/issue/:id/message/:messageId/file` | public | whole rows | — | not yet | | `SupportIssueController.getFile` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | 1 | | `/support/issue/activity` | hidden | whole rows | 7 | not yet | | `SupportIssueController.getSupportIssueActivity` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | 1 | | `/support/issue/clerk` | hidden | none | — | n/a | | `SupportIssueController.getSupportIssueClerk` | `subdomains/supporting/support-issue/support-issue.controller.ts` | @@ -547,9 +548,9 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | POST | 1 | | `/support/issue/escalation/telegram-bind` | hidden | whole rows | 5 | not yet | | `SupportIssueController.bindEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | 1 | | `/support/issue/escalation/telegram-chats` | hidden | none | — | n/a | | `SupportIssueController.getEscalationChats` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | POST | 1 | | `/support/issue/escalation/telegram-test` | hidden | whole rows | 5 | not yet | | `SupportIssueController.testEscalationChat` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| GET | 1 | | `/support/issue/list` | public | whole rows | 16 | not yet | | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| GET | 1 | | `/support/issue/list` | hidden | whole rows | 16 | not yet | | `SupportIssueController.getSupportIssueList` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | 1 | | `/support/issue/statistics` | hidden | whole rows | 16 | not yet | | `SupportIssueController.getSupportIssueStatistics` | `subdomains/supporting/support-issue/support-issue.controller.ts` | -| POST | 1 | | `/support/issue/support` | public | whole rows | 493 | not yet | | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | +| POST | 1 | | `/support/issue/support` | hidden | whole rows | 493 | not yet | | `SupportIssueController.createIssueBySupport` | `subdomains/supporting/support-issue/support-issue.controller.ts` | | GET | 1 | | `/support/kycFileList` | hidden | whole rows | 253 | not yet | | `SupportController.getKycFileList` | `subdomains/generic/support/support.controller.ts` | | GET | 1 | | `/support/kycFileStats` | hidden | whole rows | 99 | not yet | | `SupportController.getKycFileStats` | `subdomains/generic/support/support.controller.ts` | | GET | 1 | | `/support/note` | hidden | whole rows | 9 | not yet | | `SupportController.getNotes` | `subdomains/generic/support/support.controller.ts` | @@ -568,17 +569,17 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | GET | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 143 | not yet | | `SupportController.getTransactionRefund` | `subdomains/generic/support/support.controller.ts` | | PUT | 1 | | `/support/transaction/:id/refund` | hidden | whole rows | 415 | not yet | | `SupportController.setTransactionRefund` | `subdomains/generic/support/support.controller.ts` | | GET | 1 | | `/support/transactionList` | hidden | whole rows | 20 | not yet | | `SupportController.getTransactionList` | `subdomains/generic/support/support.controller.ts` | -| GET | 1 | | `/swap` | public | whole rows | 308 | not yet | | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap` | hidden | whole rows | 308 | not yet | | `SwapController.getAllSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | POST | 1 | | `/swap` | hidden | whole rows | 308 | not yet | | `SwapController.createSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| GET | 1 | | `/swap/:id` | hidden | whole rows | 308 | not yet | | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | | `/swap/:id` | public | whole rows | 396 | not yet | | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| GET | 1 | | `/swap/:id` | public | whole rows | 308 | not yet | | `SwapController.getSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| PUT | 1 | | `/swap/:id` | hidden | whole rows | 396 | not yet | | `SwapController.updateSwapRoute` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | 1 | | `/swap/:id/history` | hidden | whole rows | 509 | not yet | | `SwapController.getSwapRouteHistory` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | PUT | 1 | | `/swap/paymentInfos` | public | whole rows | 308 | not yet | | `SwapController.createSwapWithPaymentInfo` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | PUT | 1 | | `/swap/paymentInfos/:id/confirm` | public | whole rows | 545 | not yet | | `SwapController.confirmSwap` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | | GET | 1 | | `/swap/paymentInfos/:id/tx` | public | whole rows | 504 | not yet | | `SwapController.depositTx` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| PUT | 1 | | `/swap/quote` | hidden | whole rows | 143 | not yet | | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | -| POST | 1 | | `/tatum/addressWebhook` | public | none | — | n/a | | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | -| PUT | 1 | | `/trading/rule/:id` | public | whole rows | 87 | not yet | | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | +| PUT | 1 | | `/swap/quote` | public | whole rows | 143 | not yet | | `SwapController.getSwapQuote` | `subdomains/core/buy-crypto/routes/swap/swap.controller.ts` | +| POST | 1 | | `/tatum/addressWebhook` | hidden | none | — | n/a | | `TatumController.addressWebhook` | `integration/tatum/controllers/tatum.controller.ts` | +| PUT | 1 | | `/trading/rule/:id` | hidden | whole rows | 87 | not yet | | `TradingRuleController.update` | `subdomains/core/trading/controllers/trading-rule.controller.ts` | | GET | 1 | | `/transaction` | public | whole rows | 1363 | not yet | yes | `TransactionController.getTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | 1 | | `/transaction/:id/invoice` | public | whole rows | 331 | not yet | yes | `TransactionController.generateInvoiceFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | 1 | | `/transaction/:id/receipt` | public | whole rows | 331 | not yet | yes | `TransactionController.generateReceiptFromTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | @@ -586,19 +587,19 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | PUT | 1 | | `/transaction/:id/refund` | public | whole rows | 487 | not yet | | `TransactionController.setTransactionRefundTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | 1 | | `/transaction/:id/target` | hidden | whole rows | 1051 | not yet | | `TransactionController.setTransactionTarget` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | 1 | | `/transaction/ChainReport` | hidden | whole rows | 1363 | not yet | yes | `TransactionController.getCsvChainReport` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/CoinTracking` | public | whole rows | 1363 | not yet | yes | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | -| PUT | 1 | | `/transaction/admin/:id` | public | whole rows | 276 | not yet | | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | +| GET | 1 | | `/transaction/CoinTracking` | hidden | whole rows | 1363 | not yet | yes | `TransactionController.getCsvCT` | `subdomains/core/history/controllers/transaction.controller.ts` | +| PUT | 1 | | `/transaction/admin/:id` | hidden | whole rows | 276 | not yet | | `TransactionAdminController.updateTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | | POST | 1 | | `/transaction/admin/:id/stop` | hidden | whole rows | 98 | not yet | | `TransactionAdminController.stopTransaction` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | | POST | 1 | | `/transaction/admin/:txId/riskAssessment` | hidden | none | — | n/a | | `TransactionAdminController.createRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | | PUT | 1 | | `/transaction/admin/:txId/riskAssessment/:id` | hidden | whole rows | 13 | not yet | | `TransactionAdminController.updateRiskAssessment` | `subdomains/supporting/payment/controllers/transaction-admin.controller.ts` | | GET | 1 | | `/transaction/csv` | public | none | — | n/a | | `TransactionController.getCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | 1 | | `/transaction/csv` | public | whole rows | 1363 | not yet | yes | `TransactionController.createCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/detail` | hidden | whole rows | 1363 | not yet | | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/detail` | public | whole rows | 1363 | not yet | | `TransactionController.getTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | | PUT | 1 | | `/transaction/detail/csv` | public | whole rows | 1363 | not yet | | `TransactionController.createDetailCsv` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | 1 | | `/transaction/detail/single` | public | whole rows | 487 | not yet | yes | `TransactionController.getSingleTransactionDetails` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | 1 | | `/transaction/single` | public | whole rows | 487 | not yet | yes | `TransactionController.getSingleTransaction` | `subdomains/core/history/controllers/transaction.controller.ts` | | GET | 1 | | `/transaction/target` | hidden | whole rows | 134 | not yet | | `TransactionController.getTransactionTargets` | `subdomains/core/history/controllers/transaction.controller.ts` | -| GET | 1 | | `/transaction/unassigned` | public | whole rows | 356 | not yet | | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | +| GET | 1 | | `/transaction/unassigned` | hidden | whole rows | 356 | not yet | | `TransactionController.getUnassignedTransactions` | `subdomains/core/history/controllers/transaction.controller.ts` | | DELETE | 1 | yes | `/user` | public | whole rows | 344 | not yet | | `UserController.deleteUser` | `subdomains/generic/user/models/user/user.controller.ts` | | DELETE | 2 | | `/user` | public | whole rows | 344 | not yet | | `UserV2Controller.deleteAccount` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | 1 | yes | `/user` | public | whole rows | 328 | not yet | | `UserController.getUserV1` | `subdomains/generic/user/models/user/user.controller.ts` | @@ -613,21 +614,21 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | DELETE | 1 | | `/user/apiKey/CT` | public | none | — | n/a | | `UserController.deleteApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | 1 | | `/user/apiKey/CT` | public | whole rows | 253 | not yet | | `UserController.createApiKey` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | 1 | | `/user/change` | public | whole rows | 643 | not yet | | `UserController.changeUser` | `subdomains/generic/user/models/user/user.controller.ts` | -| POST | 1 | | `/user/data` | hidden | whole rows | 406 | not yet | | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | +| POST | 1 | | `/user/data` | public | whole rows | 406 | not yet | | `UserController.updateKycData` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | 1 | yes | `/user/detail` | public | whole rows | 328 | not yet | | `UserController.getUserDetailV1` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | 1 | yes | `/user/discountCodes` | public | whole rows | 308 | not yet | | `UserController.addDiscountCode` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | 2 | | `/user/mail` | public | whole rows | 364 | not yet | | `UserV2Controller.updateUserMail` | `subdomains/generic/user/models/user/user.controller.ts` | | POST | 2 | | `/user/mail/verify` | public | whole rows | 364 | not yet | | `UserV2Controller.verifyMail` | `subdomains/generic/user/models/user/user.controller.ts` | -| PUT | 1 | | `/user/name` | public | whole rows | 386 | not yet | | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | +| PUT | 1 | | `/user/name` | hidden | whole rows | 386 | not yet | | `UserController.updateUserName` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | 2 | | `/user/profile` | public | whole rows | 253 | not yet | | `UserV2Controller.getProfile` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | | `/user/ref` | public | whole rows | 45 | not yet | | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | +| GET | 1 | | `/user/ref` | hidden | whole rows | 45 | not yet | | `UserController.getRefInfo` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | 2 | | `/user/ref` | public | whole rows | 98 | not yet | | `UserV2Controller.getRef` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | 2 | | `/user/ref` | public | whole rows | 98 | not yet | | `UserV2Controller.updateRefAsset` | `subdomains/generic/user/models/user/user.controller.ts` | | PUT | 1 | | `/user/specialCodes` | public | whole rows | 308 | not yet | | `UserController.addSpecialCode` | `subdomains/generic/user/models/user/user.controller.ts` | | GET | 1 | | `/user/volumes` | hidden | whole rows | 45 | not yet | | `UserController.getVolumes` | `subdomains/generic/user/models/user/user.controller.ts` | -| GET | 1 | | `/userData` | public | whole rows | 253 | not yet | | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | 1 | | `/userData` | hidden | whole rows | 253 | not yet | | `UserDataController.getAllUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | POST | 1 | | `/userData` | hidden | whole rows | 253 | not yet | | `UserDataController.createEmptyUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| GET | 1 | | `/userData/:id` | public | whole rows | 253 | not yet | | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| GET | 1 | | `/userData/:id` | hidden | whole rows | 253 | not yet | | `UserDataController.getUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | 1 | | `/userData/:id` | hidden | whole rows | 384 | not yet | | `UserDataController.updateUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | 1 | | `/userData/:id/bankDatas` | hidden | whole rows | 284 | not yet | | `UserDataController.addBankData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | DELETE | 1 | | `/userData/:id/fee` | hidden | whole rows | 253 | not yet | | `UserDataController.removeFee` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | @@ -636,12 +637,12 @@ For 27 endpoints the call graph ends at a target chosen at runtime. Each was rea | PUT | 1 | | `/userData/:id/merge` | hidden | whole rows | 364 | not yet | | `UserDataController.mergeUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | 1 | | `/userData/:id/volumes` | hidden | whole rows | — | not yet | | `UserDataController.updateVolumes` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | PUT | 1 | | `/userData/auditPeriodNumbers` | hidden | whole rows | 40 | not yet | | `UserDataController.calculateAuditPeriodNumbers` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | -| POST | 1 | | `/userData/download` | public | whole rows | 253 | not yet | | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | +| POST | 1 | | `/userData/download` | hidden | whole rows | 253 | not yet | | `UserDataController.downloadUserData` | `subdomains/generic/user/models/user-data/user-data.controller.ts` | | POST | 1 | | `/userDataRelation` | public | whole rows | 253 | not yet | | `UserDataRelationController.create` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | DELETE | 1 | | `/userDataRelation/:id` | public | none | — | n/a | | `UserDataRelationController.delete` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | PUT | 1 | | `/userDataRelation/:id` | public | whole rows | 7 | not yet | | `UserDataRelationController.update` | `subdomains/generic/user/models/user-data-relation/user-data-relation.controller.ts` | | GET | neutral | | `/version` | hidden | none | — | n/a | | `AppController.getVersion` | `app.controller.ts` | -| POST | 1 | | `/wallet` | public | none | — | n/a | | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | +| POST | 1 | | `/wallet` | hidden | none | — | n/a | | `WalletController.createWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | | PUT | 1 | | `/wallet/:id` | hidden | whole rows | 20 | not yet | | `WalletController.updateWallet` | `subdomains/generic/user/models/wallet/wallet.controller.ts` | ⚠️ = not registered at runtime, see *Known discrepancy* above. diff --git a/docs/read-path-projections.md b/docs/read-path-projections.md index d4138c27b3..613035bfc6 100644 --- a/docs/read-path-projections.md +++ b/docs/read-path-projections.md @@ -30,7 +30,7 @@ This service loads far more data than it returns. Measured against the real enti render a PDF containing a handful of values. That query sat exactly on Postgres' limit of 1,664 columns per statement, which is why a single new column added elsewhere (`settlementEventId` on `transaction_request`) broke every invoice and receipt in production until it was fixed. -- Of the 533 endpoints, **432 reach at least one load site that fetches whole rows**; 97 read +- Of the 534 endpoints, **432 reach at least one load site that fetches whole rows**; 98 read nothing at all, and **2 read only the fields they return**. The widest query a fetching endpoint can trigger is 308 columns at the median, and 19 of them exceed 1,000. From f5b26efdfd09c8ab201c7d941f5020449a8c7629 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Sat, 1 Aug 2026 04:15:51 +0200 Subject: [PATCH 19/19] Move the endpoint obligation out of the numbered checklist The endpoint entry sat directly below the cron job entry the base added at the same position in the same list. Two insertions at one anchor cannot be merged - git has no way to know the intended order - so the branch stayed in conflict even though both sides wanted both lines. Stating the obligation as its own sentence under the list keeps it in the same place for a reader while moving it clear of the anchor. Verified against the current base with merge-tree: no conflict, and both the cron entry and the cron section survive intact alongside the endpoint section. --- CONTRIBUTING.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d28fcb862d..7045b85669 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,10 +30,13 @@ Every PR must include: 3. **Service updates** (if DTOs/interfaces changed) 4. **Frontend synchronization** (if API contracts changed) 5. **Cron job inventory** (if a `@DfxCron` job was added, removed or re-scheduled) — [docs/cron-jobs.md](docs/cron-jobs.md) -6. **Endpoint inventory** (if routes were added, removed, renamed or re-scoped) — [docs/endpoints.md](docs/endpoints.md) Missing any of these = changes requested. +Routes carry a sixth obligation: any change to the set of endpoints — added, removed, renamed or +re-scoped — must be reflected in [docs/endpoints.md](docs/endpoints.md) in the same PR, together +with the `Tests` state of anything converted. See *Endpoint Inventory* below. + ### Before Merge - Fix all linter errors and warnings (never disable lint rules without justification)