@firela/api-types 0.0.0-canary.c5520a90 → 0.0.0-canary.caab22a8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -27,13 +27,9 @@ type CreateAccountDto = {
27
27
  */
28
28
  path: string;
29
29
  /**
30
- * Display name to distinguish accounts at the same path (default: "")
30
+ * Account open date (server defaults to today)
31
31
  */
32
- displayName?: string;
33
- /**
34
- * Account open date
35
- */
36
- openDate: string;
32
+ openDate?: string;
37
33
  /**
38
34
  * Allowed currencies (null = no restriction)
39
35
  */
@@ -50,18 +46,14 @@ type CreateAccountDto = {
50
46
  * Whether this is a custom (user-created) account
51
47
  */
52
48
  isCustom?: boolean;
53
- /**
54
- * i18n key for display name (overrides template)
55
- */
56
- i18nKey?: string;
57
49
  /**
58
50
  * Icon identifier (overrides template)
59
51
  */
60
52
  icon?: string;
61
53
  /**
62
- * Additional metadata
54
+ * Open directive metadata (NOT an opening-balance amount — use the opening-balance endpoint)
63
55
  */
64
- openMeta?: {
56
+ openDirectiveMeta?: {
65
57
  [key: string]: unknown;
66
58
  };
67
59
  /**
@@ -82,14 +74,14 @@ type AccountResponseDto = {
82
74
  * Account path (hierarchical, colon-separated)
83
75
  */
84
76
  path: string;
85
- /**
86
- * Display name distinguishing multiple accounts at the same path
87
- */
88
- displayName: string;
89
77
  /**
90
78
  * Account type (root segment)
91
79
  */
92
80
  type: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
81
+ /**
82
+ * Account-level asset sub-class (product type, e.g. STOCK/DEPOSIT/CREDIT_CARD/PERSONAL_LOAN). Computed from the account path via the asset-classifier (ADR-0077). Null for non-asset accounts (Income/Expenses/Equity) or unmatched paths.
83
+ */
84
+ assetSubClass?: 'DEPOSIT' | 'CASH' | 'MONEY_MARKET_FUND' | 'STOCK' | 'ETF' | 'MUTUAL_FUND' | 'EQUITY_COMPENSATION' | 'GOVERNMENT_BOND' | 'CORPORATE_BOND' | 'BOND_FUND' | 'PRIMARY_RESIDENCE' | 'INVESTMENT_PROPERTY' | 'REIT' | 'GOLD' | 'SILVER' | 'PRECIOUS_METAL' | 'PRECIOUS_METAL_FUND' | 'COMMODITY' | 'COMMODITY_FUND' | 'CRYPTOCURRENCY' | 'RETIREMENT_ACCOUNT' | 'HEALTH_ACCOUNT' | 'EDUCATION_ACCOUNT' | 'INSURANCE' | 'PRIVATE_EQUITY' | 'HEDGE_FUND' | 'COLLECTIBLES' | 'MORTGAGE' | 'STUDENT_LOAN' | 'CREDIT_CARD' | 'PERSONAL_LOAN' | 'ACCOUNTS_PAYABLE' | 'TAX_PAYABLE' | 'OTHER' | null;
93
85
  /**
94
86
  * Account status
95
87
  */
@@ -119,17 +111,17 @@ type AccountResponseDto = {
119
111
  */
120
112
  isCustom: boolean;
121
113
  /**
122
- * i18n key for display name
114
+ * Localized display name (ADR-0114, read-time projection)
123
115
  */
124
- i18nKey?: string;
116
+ displayName?: string;
125
117
  /**
126
118
  * Icon identifier
127
119
  */
128
120
  icon?: string;
129
121
  /**
130
- * Account metadata
122
+ * Open directive metadata (ADR-0115 Decision 9)
131
123
  */
132
- openMeta?: {
124
+ openDirectiveMeta?: {
133
125
  [key: string]: unknown;
134
126
  };
135
127
  /**
@@ -157,6 +149,10 @@ type AccountResponseDto = {
157
149
  * Account type (root segment)
158
150
  */
159
151
  type type = 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
152
+ /**
153
+ * Account-level asset sub-class (product type, e.g. STOCK/DEPOSIT/CREDIT_CARD/PERSONAL_LOAN). Computed from the account path via the asset-classifier (ADR-0077). Null for non-asset accounts (Income/Expenses/Equity) or unmatched paths.
154
+ */
155
+ type assetSubClass = 'DEPOSIT' | 'CASH' | 'MONEY_MARKET_FUND' | 'STOCK' | 'ETF' | 'MUTUAL_FUND' | 'EQUITY_COMPENSATION' | 'GOVERNMENT_BOND' | 'CORPORATE_BOND' | 'BOND_FUND' | 'PRIMARY_RESIDENCE' | 'INVESTMENT_PROPERTY' | 'REIT' | 'GOLD' | 'SILVER' | 'PRECIOUS_METAL' | 'PRECIOUS_METAL_FUND' | 'COMMODITY' | 'COMMODITY_FUND' | 'CRYPTOCURRENCY' | 'RETIREMENT_ACCOUNT' | 'HEALTH_ACCOUNT' | 'EDUCATION_ACCOUNT' | 'INSURANCE' | 'PRIVATE_EQUITY' | 'HEDGE_FUND' | 'COLLECTIBLES' | 'MORTGAGE' | 'STUDENT_LOAN' | 'CREDIT_CARD' | 'PERSONAL_LOAN' | 'ACCOUNTS_PAYABLE' | 'TAX_PAYABLE' | 'OTHER';
160
156
  /**
161
157
  * Account status
162
158
  */
@@ -172,10 +168,6 @@ type AccountListResponseDto = {
172
168
  total: number;
173
169
  };
174
170
  type UpdateAccountDto = {
175
- /**
176
- * Display name to distinguish accounts at the same path
177
- */
178
- displayName?: string;
179
171
  /**
180
172
  * Allowed currencies (null = no restriction)
181
173
  */
@@ -184,18 +176,14 @@ type UpdateAccountDto = {
184
176
  * Booking method for cost basis
185
177
  */
186
178
  bookingMethod?: 'FIFO' | 'LIFO' | 'HIFO' | 'AVERAGE' | 'STRICT' | 'STRICT_WITH_SIZE' | 'NONE';
187
- /**
188
- * i18n key for display name
189
- */
190
- i18nKey?: string;
191
179
  /**
192
180
  * Icon identifier
193
181
  */
194
182
  icon?: string;
195
183
  /**
196
- * Additional metadata (merged with existing)
184
+ * Open directive metadata (merged with existing; NOT an opening-balance amount)
197
185
  */
198
- openMeta?: {
186
+ openDirectiveMeta?: {
199
187
  [key: string]: unknown;
200
188
  };
201
189
  /**
@@ -221,6 +209,26 @@ type ReopenAccountDto = {
221
209
  */
222
210
  reopenDate?: string;
223
211
  };
212
+ type CreateOpeningBalanceDto = {
213
+ /**
214
+ * Opening balance amount (non-negative)
215
+ */
216
+ amount: number;
217
+ /**
218
+ * Currency code
219
+ */
220
+ currency: string;
221
+ /**
222
+ * Opening-balance date (defaults to now)
223
+ */
224
+ date?: string;
225
+ };
226
+ type OpeningBalanceResultDto = {
227
+ /**
228
+ * Created opening-balance transaction id.
229
+ */
230
+ transactionId: string;
231
+ };
224
232
  type AccountStandardResponseDto = {
225
233
  /**
226
234
  * Account path (hierarchical, colon-separated)
@@ -230,10 +238,6 @@ type AccountStandardResponseDto = {
230
238
  * Account type in Beancount hierarchy
231
239
  */
232
240
  type: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
233
- /**
234
- * i18n key for localized display name
235
- */
236
- i18nKey: string;
237
241
  /**
238
242
  * Short localized display name
239
243
  */
@@ -250,7 +254,27 @@ type AccountStandardResponseDto = {
250
254
  * Icon identifier for UI display
251
255
  */
252
256
  icon: string;
257
+ /**
258
+ * Onboarding product category (coarse grouping derived from assetSubClass)
259
+ */
260
+ productCategory: 'cash' | 'investment' | 'credit_card' | 'loan' | 'payable_tax' | 'other';
261
+ /**
262
+ * Asset class (LIQUIDITY/EQUITY/.../LIABILITY), derived at read time from classification rules
263
+ */
264
+ assetClass?: 'LIQUIDITY' | 'EQUITY' | 'FIXED_INCOME' | 'PRECIOUS_METALS' | 'COMMODITY' | 'INSURANCE' | 'ALTERNATIVE_INVESTMENT' | 'PERSONAL_ASSETS' | 'LIABILITY' | 'REAL_ESTATE' | 'INDEX';
265
+ /**
266
+ * Asset sub-class (product type, derived at read time from classification rules)
267
+ */
268
+ assetSubClass?: string;
253
269
  };
270
+ /**
271
+ * Onboarding product category (coarse grouping derived from assetSubClass)
272
+ */
273
+ type productCategory = 'cash' | 'investment' | 'credit_card' | 'loan' | 'payable_tax' | 'other';
274
+ /**
275
+ * Asset class (LIQUIDITY/EQUITY/.../LIABILITY), derived at read time from classification rules
276
+ */
277
+ type assetClass = 'LIQUIDITY' | 'EQUITY' | 'FIXED_INCOME' | 'PRECIOUS_METALS' | 'COMMODITY' | 'INSURANCE' | 'ALTERNATIVE_INVESTMENT' | 'PERSONAL_ASSETS' | 'LIABILITY' | 'REAL_ESTATE' | 'INDEX';
254
278
  type AccountStandardListResponseDto = {
255
279
  /**
256
280
  * Array of account templates
@@ -266,10 +290,6 @@ type AccountStandardListResponseDto = {
266
290
  region: string;
267
291
  };
268
292
  type TemplateMetadataDto = {
269
- /**
270
- * Whether this path can be extended
271
- */
272
- extendable: boolean;
273
293
  /**
274
294
  * Root account type
275
295
  */
@@ -779,6 +799,48 @@ type flag2 = 'CLEARED' | 'PENDING' | 'PADDING' | 'SUMMARIZE' | 'TRANSFER' | 'CON
779
799
  * Transaction status
780
800
  */
781
801
  type status2 = 'ACTIVE' | 'VOIDED' | 'SUPERSEDED';
802
+ type BalanceByCurrencyDto = {
803
+ /**
804
+ * ISO 4217 currency code
805
+ */
806
+ currency: string;
807
+ /**
808
+ * Balance amount
809
+ */
810
+ balance: string;
811
+ };
812
+ type ExchangeRateWarningDto = {
813
+ /**
814
+ * Warning type
815
+ */
816
+ type: string;
817
+ /**
818
+ * Currency without exchange rate
819
+ */
820
+ currency: string;
821
+ /**
822
+ * Total amount affected
823
+ */
824
+ totalAmount: string;
825
+ };
826
+ type TransactionListSummaryDto = {
827
+ /**
828
+ * Partial converted total in base currency (rated currencies only, raw Beancount sign). When warnings is non-empty this excludes currencies missing an FX rate; may be "0.00" if ALL non-base currencies lack a rate. Converted at the dateTo (or current) available rate.
829
+ */
830
+ totalAmount: string;
831
+ /**
832
+ * Base currency (ISO 4217)
833
+ */
834
+ currency: string;
835
+ /**
836
+ * Raw (unconverted) balance per currency
837
+ */
838
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
839
+ /**
840
+ * Currencies missing an FX rate (omitted when empty)
841
+ */
842
+ warnings?: Array<ExchangeRateWarningDto>;
843
+ };
782
844
  type TransactionListResponseDto = {
783
845
  /**
784
846
  * List of transactions
@@ -796,6 +858,10 @@ type TransactionListResponseDto = {
796
858
  * Number of items skipped
797
859
  */
798
860
  offset: number;
861
+ /**
862
+ * Amount summary for the full filtered set (#514). Present only when the request has a single account OR category viewpoint; omitted for search-only / plain-list / dual-perspective requests.
863
+ */
864
+ summary?: TransactionListSummaryDto;
799
865
  };
800
866
  type TagSuggestionDto = {
801
867
  /**
@@ -1642,6 +1708,104 @@ type UpdateCommodityDto = {
1642
1708
  [key: string]: unknown;
1643
1709
  };
1644
1710
  };
1711
+ type CreateBeanPriceDto = {
1712
+ /**
1713
+ * Currency being priced (e.g., USD, AAPL, BTC)
1714
+ */
1715
+ currency: string;
1716
+ /**
1717
+ * Quote currency (pricing currency, e.g., CNY, EUR)
1718
+ */
1719
+ quoteCurrency: string;
1720
+ /**
1721
+ * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
1722
+ */
1723
+ amount: number;
1724
+ /**
1725
+ * Price date (ISO 8601 format)
1726
+ */
1727
+ date: string;
1728
+ /**
1729
+ * Metadata (validated by Zod schema, max field lengths enforced)
1730
+ */
1731
+ metadata?: {
1732
+ [key: string]: unknown;
1733
+ };
1734
+ };
1735
+ type PriceResponseDto = {
1736
+ /**
1737
+ * Unique identifier
1738
+ */
1739
+ id: string;
1740
+ /**
1741
+ * User ID (owner of the price)
1742
+ */
1743
+ userId: string;
1744
+ /**
1745
+ * Currency being priced (e.g., USD, AAPL, BTC)
1746
+ */
1747
+ currency: string;
1748
+ /**
1749
+ * Quote currency (pricing currency, e.g., USD, CNY)
1750
+ */
1751
+ quoteCurrency: string;
1752
+ /**
1753
+ * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
1754
+ */
1755
+ amount: number;
1756
+ /**
1757
+ * Price date (ISO 8601 format). Represents the date this price was valid.
1758
+ */
1759
+ date: string;
1760
+ /**
1761
+ * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
1762
+ */
1763
+ meta: {
1764
+ [key: string]: unknown;
1765
+ };
1766
+ /**
1767
+ * Creation timestamp
1768
+ */
1769
+ createdAt: string;
1770
+ /**
1771
+ * Last update timestamp
1772
+ */
1773
+ updatedAt: string;
1774
+ };
1775
+ type PriceListResponseDto = {
1776
+ /**
1777
+ * List of prices
1778
+ */
1779
+ items: Array<PriceResponseDto>;
1780
+ /**
1781
+ * Total number of prices
1782
+ */
1783
+ total: number;
1784
+ };
1785
+ type UpdateBeanPriceDto = {
1786
+ /**
1787
+ * Currency being priced
1788
+ */
1789
+ currency?: string;
1790
+ /**
1791
+ * Quote currency (pricing currency)
1792
+ */
1793
+ quoteCurrency?: string;
1794
+ /**
1795
+ * Price amount (MUST be >= 0 per Beancount spec)
1796
+ */
1797
+ amount?: number;
1798
+ /**
1799
+ * Price date (ISO 8601 format)
1800
+ */
1801
+ date?: string;
1802
+ /**
1803
+ * Metadata
1804
+ */
1805
+ metadata?: {
1806
+ [key: string]: unknown;
1807
+ };
1808
+ };
1645
1809
  type CreateRecurringRuleDto = {
1646
1810
  /**
1647
1811
  * Rule name (unique per user)
@@ -2239,65 +2403,357 @@ type ForecastResponseDto = {
2239
2403
  */
2240
2404
  periodEnd: string;
2241
2405
  };
2242
- type CreateTransactionRuleDto = {
2243
- name: string;
2244
- description?: string;
2245
- narrationKeywords?: Array<unknown[]>;
2246
- payeeKeywords?: Array<unknown[]>;
2247
- categoryKeywords?: Array<unknown[]>;
2406
+ type CurrencyBalanceDto = {
2248
2407
  /**
2249
- * Payment method keywords (e.g., HuaBei, YuEBao)
2408
+ * ISO 4217 currency code
2250
2409
  */
2251
- methodKeywords?: Array<unknown[]>;
2410
+ currency: string;
2252
2411
  /**
2253
- * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2412
+ * Balance amount
2254
2413
  */
2255
- categoryAccount?: string;
2256
- matchLogic: 'OR' | 'AND';
2414
+ balance: string;
2415
+ };
2416
+ type TimeSeriesPointDto = {
2257
2417
  /**
2258
- * Minimum transaction amount (inclusive)
2418
+ * Date in YYYY-MM-DD format
2259
2419
  */
2260
- amountMin?: number;
2420
+ date: string;
2261
2421
  /**
2262
- * Maximum transaction amount (inclusive)
2422
+ * Value at this date (in base currency)
2263
2423
  */
2264
- amountMax?: number;
2265
- priority: number;
2266
- additionalTags?: Array<unknown[]>;
2267
- additionalMetadata?: {
2424
+ value: string;
2425
+ /**
2426
+ * Change from previous point
2427
+ */
2428
+ change?: {
2268
2429
  [key: string]: unknown;
2269
2430
  };
2270
2431
  /**
2271
- * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2432
+ * Total assets at this date (in base currency)
2272
2433
  */
2273
- upsertByPayee?: boolean;
2274
- };
2275
- type matchLogic = 'OR' | 'AND';
2276
- type AmountRangeDto = {
2434
+ assets?: string;
2277
2435
  /**
2278
- * Minimum amount
2436
+ * Total liabilities at this date (in base currency)
2279
2437
  */
2280
- min?: number;
2438
+ liabilities?: string;
2281
2439
  /**
2282
- * Maximum amount
2440
+ * Multi-currency breakdown for this point
2283
2441
  */
2284
- max?: number;
2442
+ byCurrency?: Array<CurrencyBalanceDto>;
2285
2443
  };
2286
- type TransactionRuleResponseDto = {
2444
+ type TrendSummaryDto = {
2287
2445
  /**
2288
- * Rule ID
2446
+ * Value at start of period
2289
2447
  */
2290
- id: string;
2448
+ startValue: string;
2291
2449
  /**
2292
- * Rule name
2450
+ * Value at end of period
2293
2451
  */
2294
- name: string;
2452
+ endValue: string;
2295
2453
  /**
2296
- * Rule description
2454
+ * Total change over period
2297
2455
  */
2298
- description?: string;
2456
+ totalChange: string;
2299
2457
  /**
2300
- * Keywords to match in transaction narration
2458
+ * Total change percentage
2459
+ */
2460
+ totalChangePercentage: string;
2461
+ };
2462
+ type MultiCurrencyPointDto = {
2463
+ /**
2464
+ * Date in YYYY-MM-DD format
2465
+ */
2466
+ date: string;
2467
+ /**
2468
+ * Balances by currency
2469
+ */
2470
+ byCurrency: Array<CurrencyBalanceDto>;
2471
+ };
2472
+ type PortfolioTrendsResponseDto = {
2473
+ /**
2474
+ * Time series data points
2475
+ */
2476
+ series: Array<TimeSeriesPointDto>;
2477
+ /**
2478
+ * Period summary
2479
+ */
2480
+ summary: TrendSummaryDto;
2481
+ /**
2482
+ * Period requested
2483
+ */
2484
+ period: string;
2485
+ /**
2486
+ * Data granularity
2487
+ */
2488
+ granularity: string;
2489
+ /**
2490
+ * Base currency for converted values
2491
+ */
2492
+ currency: string;
2493
+ /**
2494
+ * Multi-currency time series (each point has currency breakdown)
2495
+ */
2496
+ byCurrency?: Array<MultiCurrencyPointDto>;
2497
+ /**
2498
+ * Exchange rate warnings
2499
+ */
2500
+ warnings?: Array<ExchangeRateWarningDto>;
2501
+ };
2502
+ type CashFlowPointDto = {
2503
+ /**
2504
+ * Month key (YYYY-MM)
2505
+ */
2506
+ month: string;
2507
+ /**
2508
+ * Income in base currency (absolute, converted)
2509
+ */
2510
+ income: string;
2511
+ /**
2512
+ * Expense in base currency (absolute, converted)
2513
+ */
2514
+ expense: string;
2515
+ /**
2516
+ * netSavings = income − expense (savings positive)
2517
+ */
2518
+ netSavings: string;
2519
+ };
2520
+ type CashFlowTrendSummaryDto = {
2521
+ /**
2522
+ * Total income across the period
2523
+ */
2524
+ totalIncome: string;
2525
+ /**
2526
+ * Total expense across the period
2527
+ */
2528
+ totalExpense: string;
2529
+ /**
2530
+ * income − expense across the period
2531
+ */
2532
+ totalNetSavings: string;
2533
+ /**
2534
+ * totalNetSavings divided by the window length (N months, incl. zero-filled)
2535
+ */
2536
+ averageMonthlyNetSavings: string;
2537
+ };
2538
+ type CashFlowTrendsResponseDto = {
2539
+ /**
2540
+ * Monthly cash-flow series (fixed N-month window, zero-filled)
2541
+ */
2542
+ series: Array<CashFlowPointDto>;
2543
+ /**
2544
+ * Period totals
2545
+ */
2546
+ summary: CashFlowTrendSummaryDto;
2547
+ /**
2548
+ * Period requested
2549
+ */
2550
+ period: string;
2551
+ /**
2552
+ * Data granularity (v1 returns month buckets)
2553
+ */
2554
+ granularity: string;
2555
+ /**
2556
+ * Base currency for converted values
2557
+ */
2558
+ currency: string;
2559
+ /**
2560
+ * Exchange rate warnings (e.g. missing rate for a currency)
2561
+ */
2562
+ warnings?: Array<ExchangeRateWarningDto>;
2563
+ };
2564
+ type GenerateSnapshotBody = unknown;
2565
+ type GenerateSnapshotResponse = unknown;
2566
+ type BackfillSnapshotsBody = unknown;
2567
+ type BackfillSnapshotsResponse = unknown;
2568
+ type DeleteOwnUserDto = {
2569
+ /**
2570
+ * Access token for user verification
2571
+ */
2572
+ accessToken: string;
2573
+ };
2574
+ type SignupDto = {
2575
+ /**
2576
+ * Cloudflare Turnstile verification token (optional when Turnstile disabled)
2577
+ */
2578
+ turnstileToken?: string;
2579
+ };
2580
+ type SignupResponseDto = {
2581
+ /**
2582
+ * JWT auth token
2583
+ */
2584
+ authToken: string;
2585
+ /**
2586
+ * Auto-generated access token
2587
+ */
2588
+ accessToken: string;
2589
+ /**
2590
+ * Assigned user role
2591
+ */
2592
+ role: 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2593
+ };
2594
+ /**
2595
+ * Assigned user role
2596
+ */
2597
+ type role = 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2598
+ type UpdateUserSettingDto = {
2599
+ /**
2600
+ * Security ID
2601
+ */
2602
+ secId?: number;
2603
+ /**
2604
+ * Annual interest rate
2605
+ */
2606
+ annualInterestRate?: number;
2607
+ /**
2608
+ * Currency code
2609
+ */
2610
+ currency?: string;
2611
+ /**
2612
+ * Base currency code
2613
+ */
2614
+ baseCurrency?: string;
2615
+ /**
2616
+ * Benchmark symbol
2617
+ */
2618
+ benchmark?: string;
2619
+ /**
2620
+ * Color scheme
2621
+ */
2622
+ colorScheme?: 'DARK' | 'LIGHT';
2623
+ /**
2624
+ * Date range filter
2625
+ */
2626
+ dateRange?: string;
2627
+ /**
2628
+ * Emergency fund amount
2629
+ */
2630
+ emergencyFund?: number;
2631
+ /**
2632
+ * Account filter IDs
2633
+ */
2634
+ 'filters.accounts'?: Array<string>;
2635
+ /**
2636
+ * Asset class filters
2637
+ */
2638
+ 'filters.assetClasses'?: Array<string>;
2639
+ /**
2640
+ * Data source filter
2641
+ */
2642
+ 'filters.dataSource'?: string;
2643
+ /**
2644
+ * Symbol filter
2645
+ */
2646
+ 'filters.symbol'?: string;
2647
+ /**
2648
+ * Tag filters
2649
+ */
2650
+ 'filters.tags'?: Array<string>;
2651
+ /**
2652
+ * Enable experimental features
2653
+ */
2654
+ isExperimentalFeatures?: boolean;
2655
+ /**
2656
+ * Enable restricted view mode
2657
+ */
2658
+ isRestrictedView?: boolean;
2659
+ /**
2660
+ * Language code
2661
+ */
2662
+ language?: string;
2663
+ /**
2664
+ * Locale code
2665
+ */
2666
+ locale?: string;
2667
+ /**
2668
+ * Projected total amount
2669
+ */
2670
+ projectedTotalAmount?: number;
2671
+ /**
2672
+ * Retirement date in ISO 8601 format
2673
+ */
2674
+ retirementDate?: string;
2675
+ /**
2676
+ * Savings rate percentage
2677
+ */
2678
+ savingsRate?: number;
2679
+ /**
2680
+ * View mode
2681
+ */
2682
+ viewMode?: 'DEFAULT' | 'ZEN';
2683
+ };
2684
+ /**
2685
+ * Color scheme
2686
+ */
2687
+ type colorScheme = 'DARK' | 'LIGHT';
2688
+ /**
2689
+ * View mode
2690
+ */
2691
+ type viewMode = 'DEFAULT' | 'ZEN';
2692
+ type UpdatePropertyDto = {
2693
+ /**
2694
+ * Property value
2695
+ */
2696
+ value: string;
2697
+ };
2698
+ type CreateTransactionRuleDto = {
2699
+ name: string;
2700
+ description?: string;
2701
+ narrationKeywords?: Array<unknown[]>;
2702
+ payeeKeywords?: Array<unknown[]>;
2703
+ categoryKeywords?: Array<unknown[]>;
2704
+ /**
2705
+ * Payment method keywords (e.g., HuaBei, YuEBao)
2706
+ */
2707
+ methodKeywords?: Array<unknown[]>;
2708
+ /**
2709
+ * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2710
+ */
2711
+ categoryAccount?: string;
2712
+ matchLogic: 'OR' | 'AND';
2713
+ /**
2714
+ * Minimum transaction amount (inclusive)
2715
+ */
2716
+ amountMin?: number;
2717
+ /**
2718
+ * Maximum transaction amount (inclusive)
2719
+ */
2720
+ amountMax?: number;
2721
+ priority: number;
2722
+ additionalTags?: Array<unknown[]>;
2723
+ additionalMetadata?: {
2724
+ [key: string]: unknown;
2725
+ };
2726
+ /**
2727
+ * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2728
+ */
2729
+ upsertByPayee?: boolean;
2730
+ };
2731
+ type matchLogic = 'OR' | 'AND';
2732
+ type AmountRangeDto = {
2733
+ /**
2734
+ * Minimum amount
2735
+ */
2736
+ min?: number;
2737
+ /**
2738
+ * Maximum amount
2739
+ */
2740
+ max?: number;
2741
+ };
2742
+ type TransactionRuleResponseDto = {
2743
+ /**
2744
+ * Rule ID
2745
+ */
2746
+ id: string;
2747
+ /**
2748
+ * Rule name
2749
+ */
2750
+ name: string;
2751
+ /**
2752
+ * Rule description
2753
+ */
2754
+ description?: string;
2755
+ /**
2756
+ * Keywords to match in transaction narration
2301
2757
  */
2302
2758
  narrationKeywords: Array<string>;
2303
2759
  /**
@@ -2577,203 +3033,235 @@ type TestRuleResponseDto = {
2577
3033
  [key: string]: unknown;
2578
3034
  };
2579
3035
  };
2580
- type DeleteOwnUserDto = {
3036
+ type CreateBeanEventDto = {
2581
3037
  /**
2582
- * Access token for user verification
3038
+ * Life event date (ISO 8601)
2583
3039
  */
2584
- accessToken: string;
2585
- };
2586
- type SignupDto = {
3040
+ date: string;
2587
3041
  /**
2588
- * Cloudflare Turnstile verification token (optional when Turnstile disabled)
3042
+ * Life event type (e.g., "employer", "location", "marital-status") — user-defined, no enum constraint at engine layer
2589
3043
  */
2590
- turnstileToken?: string;
2591
- };
2592
- type UpdateUserSettingDto = {
3044
+ type: string;
2593
3045
  /**
2594
- * Security ID
3046
+ * Life event description. Empty string is a VALID value (distinct from absence).
2595
3047
  */
2596
- secId?: number;
3048
+ description: string;
2597
3049
  /**
2598
- * Annual interest rate
3050
+ * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
2599
3051
  */
2600
- annualInterestRate?: number;
3052
+ meta?: {
3053
+ [key: string]: unknown;
3054
+ };
3055
+ };
3056
+ type EventResponseDto = {
2601
3057
  /**
2602
- * Currency code
3058
+ * Unique identifier
2603
3059
  */
2604
- currency?: string;
3060
+ id: string;
2605
3061
  /**
2606
- * Base currency code
3062
+ * User ID (owner of the life event)
2607
3063
  */
2608
- baseCurrency?: string;
3064
+ userId: string;
2609
3065
  /**
2610
- * Benchmark symbol
3066
+ * Life event date (ISO 8601 format)
2611
3067
  */
2612
- benchmark?: string;
3068
+ date: string;
2613
3069
  /**
2614
- * Color scheme
3070
+ * Life event type (user-defined, e.g., "employer", "location")
2615
3071
  */
2616
- colorScheme?: 'DARK' | 'LIGHT';
3072
+ type: string;
2617
3073
  /**
2618
- * Date range filter
3074
+ * Life event description. May be an empty string (a valid value distinct from absence).
2619
3075
  */
2620
- dateRange?: string;
3076
+ description: string;
2621
3077
  /**
2622
- * Emergency fund amount
3078
+ * Product-side metadata (free-form JSON)
2623
3079
  */
2624
- emergencyFund?: number;
3080
+ meta: {
3081
+ [key: string]: unknown;
3082
+ };
2625
3083
  /**
2626
- * Account filter IDs
3084
+ * Creation timestamp
2627
3085
  */
2628
- 'filters.accounts'?: Array<string>;
3086
+ createdAt: string;
2629
3087
  /**
2630
- * Asset class filters
3088
+ * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
2631
3089
  */
2632
- 'filters.assetClasses'?: Array<string>;
3090
+ updatedAt: string;
3091
+ };
3092
+ type EventListResponseDto = {
2633
3093
  /**
2634
- * Data source filter
3094
+ * List of life events
2635
3095
  */
2636
- 'filters.dataSource'?: string;
3096
+ items: Array<EventResponseDto>;
2637
3097
  /**
2638
- * Symbol filter
3098
+ * Total number of life events matching the query
2639
3099
  */
2640
- 'filters.symbol'?: string;
3100
+ total: number;
3101
+ };
3102
+ type UpdateBeanEventDto = {
2641
3103
  /**
2642
- * Tag filters
3104
+ * Life event date (ISO 8601)
2643
3105
  */
2644
- 'filters.tags'?: Array<string>;
3106
+ date?: string;
2645
3107
  /**
2646
- * Enable experimental features
3108
+ * Life event type (user-defined)
2647
3109
  */
2648
- isExperimentalFeatures?: boolean;
3110
+ type?: string;
2649
3111
  /**
2650
- * Enable restricted view mode
3112
+ * Life event description. Empty string is a VALID value (distinct from absence).
2651
3113
  */
2652
- isRestrictedView?: boolean;
3114
+ description?: string;
2653
3115
  /**
2654
- * Language code
3116
+ * Product-side metadata (free-form JSON)
2655
3117
  */
2656
- language?: string;
3118
+ meta?: {
3119
+ [key: string]: unknown;
3120
+ };
3121
+ };
3122
+ type OnboardingAccountDto = {
2657
3123
  /**
2658
- * Locale code
3124
+ * Account path (Assets/Liabilities only; format validated by the account service)
2659
3125
  */
2660
- locale?: string;
3126
+ path: string;
2661
3127
  /**
2662
- * Projected total amount
3128
+ * ISO 4217 currency code (3 letters)
2663
3129
  */
2664
- projectedTotalAmount?: number;
3130
+ currency: string;
2665
3131
  /**
2666
- * Retirement date in ISO 8601 format
3132
+ * Opening balance as a non-negative Decimal string (e.g. "1000.00")
2667
3133
  */
2668
- retirementDate?: string;
3134
+ openingBalance?: string;
2669
3135
  /**
2670
- * Savings rate percentage
3136
+ * Platform ID to bind the account to (references Platform.id); omit for unbound
2671
3137
  */
2672
- savingsRate?: number;
3138
+ platformId?: string;
3139
+ };
3140
+ type OnboardingDto = {
2673
3141
  /**
2674
- * View mode
3142
+ * Asset/Liability accounts to register with opening balances
2675
3143
  */
2676
- viewMode?: 'DEFAULT' | 'ZEN';
3144
+ accounts?: Array<OnboardingAccountDto>;
3145
+ /**
3146
+ * Skip asset registration; only bootstrap the core account set
3147
+ */
3148
+ skipAssetRegistration?: boolean;
2677
3149
  };
2678
- /**
2679
- * Color scheme
2680
- */
2681
- type colorScheme = 'DARK' | 'LIGHT';
2682
- /**
2683
- * View mode
2684
- */
2685
- type viewMode = 'DEFAULT' | 'ZEN';
2686
- type UpdatePropertyDto = {
3150
+ type ActualBalanceDto = {
2687
3151
  /**
2688
- * Property value
3152
+ * Actual balance amount as a decimal string (preserves precision for tolerance inference).
2689
3153
  */
2690
- value: string;
3154
+ amount: string;
3155
+ /**
3156
+ * Currency code (ISO 4217 or commodity ticker).
3157
+ */
3158
+ ccy: string;
2691
3159
  };
2692
- type CreateBeanEventDto = {
3160
+ type ComputeReconciliationDto = {
3161
+ /**
3162
+ * BeanAccount id to reconcile.
3163
+ */
3164
+ accountId: string;
2693
3165
  /**
2694
- * Life event date (ISO 8601)
3166
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2695
3167
  */
2696
- date: string;
3168
+ asOfDate: string;
2697
3169
  /**
2698
- * Life event type (e.g., "employer", "location", "marital-status") — user-defined, no enum constraint at engine layer
3170
+ * Actual balance from the external statement.
2699
3171
  */
2700
- type: string;
3172
+ actualBalance: ActualBalanceDto;
3173
+ };
3174
+ type ReconciliationComputeResultDto = {
3175
+ accountId: string;
3176
+ asOfDate: string;
2701
3177
  /**
2702
- * Life event description. Empty string is a VALID value (distinct from absence).
3178
+ * System-computed book balance (decimal string).
2703
3179
  */
2704
- description: string;
3180
+ bookBalance: string;
2705
3181
  /**
2706
- * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
3182
+ * User-entered actual balance (decimal string).
2707
3183
  */
2708
- meta?: {
2709
- [key: string]: unknown;
2710
- };
2711
- };
2712
- type EventResponseDto = {
3184
+ actualBalance: string;
3185
+ currency: string;
2713
3186
  /**
2714
- * Unique identifier
3187
+ * Diff = book − actual (decimal string).
2715
3188
  */
2716
- id: string;
3189
+ diff: string;
2717
3190
  /**
2718
- * User ID (owner of the life event)
3191
+ * Applied tolerance (decimal string).
2719
3192
  */
2720
- userId: string;
3193
+ tolerance: string;
2721
3194
  /**
2722
- * Life event date (ISO 8601 format)
3195
+ * true when |diff| tolerance.
2723
3196
  */
2724
- date: string;
3197
+ withinTolerance: boolean;
2725
3198
  /**
2726
- * Life event type (user-defined, e.g., "employer", "location")
3199
+ * Suggested next action: assert when within tolerance, pad otherwise.
2727
3200
  */
2728
- type: string;
3201
+ suggestedAction: 'assert' | 'pad';
3202
+ };
3203
+ /**
3204
+ * Suggested next action: assert when within tolerance, pad otherwise.
3205
+ */
3206
+ type suggestedAction = 'assert' | 'pad';
3207
+ type AssertReconciliationDto = {
2729
3208
  /**
2730
- * Life event description. May be an empty string (a valid value distinct from absence).
3209
+ * BeanAccount id to reconcile.
2731
3210
  */
2732
- description: string;
3211
+ accountId: string;
2733
3212
  /**
2734
- * Product-side metadata (free-form JSON)
3213
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2735
3214
  */
2736
- meta: {
2737
- [key: string]: unknown;
2738
- };
3215
+ asOfDate: string;
2739
3216
  /**
2740
- * Creation timestamp
3217
+ * Actual balance from the external statement.
2741
3218
  */
2742
- createdAt: string;
3219
+ actualBalance: ActualBalanceDto;
2743
3220
  /**
2744
- * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
3221
+ * Optional explicit tolerance override. Omit to infer from amount precision (Beancount default).
2745
3222
  */
2746
- updatedAt: string;
3223
+ tolerance?: string;
2747
3224
  };
2748
- type EventListResponseDto = {
3225
+ type ReconciliationRecordDto = {
3226
+ id: string;
3227
+ accountId: string;
3228
+ date: string;
2749
3229
  /**
2750
- * List of life events
3230
+ * Asserted (actual) amount.
2751
3231
  */
2752
- items: Array<EventResponseDto>;
3232
+ amount: string;
3233
+ currency: string;
3234
+ tolerance?: string;
2753
3235
  /**
2754
- * Total number of life events matching the query
3236
+ * book actual.
2755
3237
  */
2756
- total: number;
3238
+ diffAmount?: string;
3239
+ diffCurrency?: string;
3240
+ createdAt: string;
2757
3241
  };
2758
- type UpdateBeanEventDto = {
3242
+ type PadReconciliationDto = {
2759
3243
  /**
2760
- * Life event date (ISO 8601)
3244
+ * BeanAccount id to reconcile.
2761
3245
  */
2762
- date?: string;
3246
+ accountId: string;
2763
3247
  /**
2764
- * Life event type (user-defined)
3248
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2765
3249
  */
2766
- type?: string;
3250
+ asOfDate: string;
2767
3251
  /**
2768
- * Life event description. Empty string is a VALID value (distinct from absence).
3252
+ * Actual balance from the external statement.
2769
3253
  */
2770
- description?: string;
3254
+ actualBalance: ActualBalanceDto;
2771
3255
  /**
2772
- * Product-side metadata (free-form JSON)
3256
+ * Pad source account. Defaults to Equity:Opening-Balances (official Beancount convention).
2773
3257
  */
2774
- meta?: {
2775
- [key: string]: unknown;
2776
- };
3258
+ sourceAccount?: string;
3259
+ };
3260
+ type PadResultDto = {
3261
+ /**
3262
+ * Created pad adjusting transaction id.
3263
+ */
3264
+ transactionId: string;
2777
3265
  };
2778
3266
  type FileImportDto = {
2779
3267
  /**
@@ -3019,70 +3507,6 @@ type UpdateImporterConfigDto = {
3019
3507
  */
3020
3508
  data?: UpdateConfigDataDto;
3021
3509
  };
3022
- type CreatePlatformDto = {
3023
- /**
3024
- * Platform name
3025
- */
3026
- name: string;
3027
- /**
3028
- * Platform canonical identifier (lowercase, kebab-case)
3029
- */
3030
- canonical: string;
3031
- /**
3032
- * Platform aliases (multi-language names for lookup)
3033
- */
3034
- aliases: Array<string>;
3035
- /**
3036
- * Platform URL
3037
- */
3038
- url: string;
3039
- /**
3040
- * Platform type
3041
- */
3042
- type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3043
- /**
3044
- * Platform logo URL
3045
- */
3046
- logoUrl?: string;
3047
- /**
3048
- * Whether the platform is active
3049
- */
3050
- isActive?: boolean;
3051
- };
3052
- /**
3053
- * Platform type
3054
- */
3055
- type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3056
- type UpdatePlatformDto = {
3057
- /**
3058
- * Platform name
3059
- */
3060
- name?: string;
3061
- /**
3062
- * Platform canonical identifier (lowercase, kebab-case)
3063
- */
3064
- canonical?: string;
3065
- /**
3066
- * Platform aliases (multi-language names for lookup)
3067
- */
3068
- aliases?: Array<string>;
3069
- /**
3070
- * Platform URL
3071
- */
3072
- url?: string;
3073
- /**
3074
- * Platform type
3075
- */
3076
- type?: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3077
- /**
3078
- * Platform logo URL
3079
- */
3080
- logoUrl?: string;
3081
- /**
3082
- * Whether the platform is active
3083
- */
3084
- isActive?: boolean;
3085
- };
3086
3510
  type ProviderSyncConfigDto = {
3087
3511
  /**
3088
3512
  * Source account for the first posting
@@ -3104,6 +3528,10 @@ type ProviderSyncConfigDto = {
3104
3528
  * Filter pending transactions
3105
3529
  */
3106
3530
  filterPending?: boolean;
3531
+ /**
3532
+ * External account ID for per-batch providers (e.g. GoCardless). Overrides sourceAccount when an ExternalAccountLink mapping exists.
3533
+ */
3534
+ externalAccountId?: string;
3107
3535
  };
3108
3536
  type ProviderSyncDto = {
3109
3537
  /**
@@ -3155,6 +3583,41 @@ type SupportedProvidersResponseDto = {
3155
3583
  */
3156
3584
  providers: Array<string>;
3157
3585
  };
3586
+ type CreateExternalAccountLinkDto = {
3587
+ /**
3588
+ * Open Banking provider (whitelist)
3589
+ */
3590
+ provider: 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3591
+ /**
3592
+ * External account ID from the provider
3593
+ */
3594
+ externalAccountId: string;
3595
+ /**
3596
+ * Target BeanAccount ID (must belong to the JWT user)
3597
+ */
3598
+ beanAccountId: string;
3599
+ };
3600
+ /**
3601
+ * Open Banking provider (whitelist)
3602
+ */
3603
+ type provider = 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3604
+ type ExternalAccountLinkResponseDto = {
3605
+ id: string;
3606
+ provider: string;
3607
+ externalAccountId: string;
3608
+ beanAccountId: string;
3609
+ isActive: boolean;
3610
+ createdAt: string;
3611
+ updatedAt: string;
3612
+ };
3613
+ type ExternalAccountLinkListResponseDto = {
3614
+ items: Array<ExternalAccountLinkResponseDto>;
3615
+ total: number;
3616
+ /**
3617
+ * Filter by provider (query param)
3618
+ */
3619
+ provider?: string;
3620
+ };
3158
3621
  type ParserTelemetryReportDto = unknown;
3159
3622
  type UncoveredFormatMissDto = unknown;
3160
3623
  type ProcessNlpDto = {
@@ -3172,6 +3635,14 @@ type ProcessNlpDto = {
3172
3635
  parsedData?: {
3173
3636
  [key: string]: unknown;
3174
3637
  };
3638
+ /**
3639
+ * confirm_rule echo-back: rule id selected from the prior confirm_rule response (matchedRule.id or alternatives[i].ruleId). Applied directly when the session is confirming_rule — no NL re-parse.
3640
+ */
3641
+ selectedRuleId?: string;
3642
+ /**
3643
+ * confirm_account echo-back: account path selected from the prior confirm_account response (suggestedAccount, similarAccounts[i], or a typed path). Applied directly when the session is confirming_account — no NL re-parse.
3644
+ */
3645
+ selectedAccount?: string;
3175
3646
  };
3176
3647
  type NlpTransactionInfoDto = {
3177
3648
  /**
@@ -3405,9 +3876,9 @@ type NlpAccountConfirmationDataDto = {
3405
3876
  */
3406
3877
  invalidAccount: string;
3407
3878
  /**
3408
- * Suggested replacement account
3879
+ * Suggested replacement account (omitted when no clear candidate)
3409
3880
  */
3410
- suggestedAccount: string;
3881
+ suggestedAccount?: string;
3411
3882
  /**
3412
3883
  * Similar accounts for user selection
3413
3884
  */
@@ -3529,7 +4000,7 @@ type NlpSuggestedAccountDto = {
3529
4000
  */
3530
4001
  account: string;
3531
4002
  /**
3532
- * Confidence score for this suggestion (0-1)
4003
+ * Confidence score for this suggestion (0-1). Present = predicted (confirm/confirm_rule/confirm_account); omitted = actual persisted account (created). (#586)
3533
4004
  */
3534
4005
  confidence?: number;
3535
4006
  };
@@ -3545,21 +4016,21 @@ type NlpSuggestedAccountsDto = {
3545
4016
  };
3546
4017
  type NlpDefaultAccountsDto = {
3547
4018
  /**
3548
- * Default asset account
4019
+ * Default OPEN asset account (MRU when multiple), or null when none/ambiguous
3549
4020
  */
3550
- asset: string;
4021
+ asset: string | null;
3551
4022
  /**
3552
- * Default expense account
4023
+ * Default OPEN expense account (MRU when multiple), or null when none/ambiguous
3553
4024
  */
3554
- expense: string;
4025
+ expense: string | null;
3555
4026
  /**
3556
- * Default income account
4027
+ * Default OPEN income account (MRU when multiple), or null when none/ambiguous
3557
4028
  */
3558
- income: string;
4029
+ income: string | null;
3559
4030
  /**
3560
- * Default liability account
4031
+ * Default OPEN liability account (MRU when multiple), or null when none/ambiguous
3561
4032
  */
3562
- liability: string;
4033
+ liability: string | null;
3563
4034
  };
3564
4035
  type NlpResponseDto = {
3565
4036
  /**
@@ -3569,7 +4040,7 @@ type NlpResponseDto = {
3569
4040
  /**
3570
4041
  * Action taken or requested
3571
4042
  */
3572
- action: 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
4043
+ action: 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel' | 'aborted';
3573
4044
  /**
3574
4045
  * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3575
4046
  */
@@ -3658,11 +4129,11 @@ type NlpResponseDto = {
3658
4129
  */
3659
4130
  recurringSuggestion?: RecurringSuggestionDto;
3660
4131
  /**
3661
- * Suggested accounts for this transaction. Contains recommended source and destination accounts based on the detected intent and rules.
4132
+ * Suggested accounts for this transaction (#586). confirm/confirm_rule/confirm_account: predicted (source/destination carry confidence); created: actual persisted accounts (confidence omitted). confirm_account destination is the suggested replacement, never the invalid account.
3662
4133
  */
3663
4134
  suggestedAccounts?: NlpSuggestedAccountsDto;
3664
4135
  /**
3665
- * Default accounts for the user/region. These are fallback accounts used when no specific suggestion is available.
4136
+ * Default fallback accounts for the user/region (#586). v1 returns universal constants; per-user personalization is planned.
3666
4137
  */
3667
4138
  defaultAccounts?: NlpDefaultAccountsDto;
3668
4139
  };
@@ -3673,7 +4144,7 @@ type status4 = 'success' | 'pending' | 'error';
3673
4144
  /**
3674
4145
  * Action taken or requested
3675
4146
  */
3676
- type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
4147
+ type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel' | 'aborted';
3677
4148
  /**
3678
4149
  * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3679
4150
  */
@@ -3690,15 +4161,159 @@ type liabilitySubType = 'borrow' | 'repay';
3690
4161
  * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
3691
4162
  */
3692
4163
  type equitySubType = 'opening' | 'adjustment';
3693
- type BalanceByCurrencyDto = {
4164
+ type PlatformListItemDto = {
4165
+ /**
4166
+ * Global platform ID
4167
+ */
4168
+ id: string;
4169
+ /**
4170
+ * Platform name
4171
+ */
4172
+ name: string;
4173
+ /**
4174
+ * Platform URL
4175
+ */
4176
+ url: string;
4177
+ /**
4178
+ * Platform type
4179
+ */
4180
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4181
+ /**
4182
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4183
+ */
4184
+ canonical: string;
4185
+ /**
4186
+ * Suggested path segment — canonical with first char uppercased (ACC_COMP_NAME_RE)
4187
+ */
4188
+ suggestedSegment: string;
4189
+ /**
4190
+ * Logo URL
4191
+ */
4192
+ logoUrl: string | null;
4193
+ /**
4194
+ * Whether user has accounts using this platform
4195
+ */
4196
+ isBound: boolean;
4197
+ };
4198
+ /**
4199
+ * Platform type
4200
+ */
4201
+ type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4202
+ type PlatformMatchResultDto = {
4203
+ /**
4204
+ * Global platform ID
4205
+ */
4206
+ id: string;
4207
+ /**
4208
+ * Platform name (e.g., "ICBC")
4209
+ */
4210
+ name: string;
4211
+ /**
4212
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4213
+ */
4214
+ canonical: string;
4215
+ /**
4216
+ * Platform type
4217
+ */
4218
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4219
+ /**
4220
+ * Suggested path segment — canonical, already in ACCOUNT_RE format
4221
+ */
4222
+ suggestedSegment: string;
4223
+ /**
4224
+ * Logo URL
4225
+ */
4226
+ logoUrl: string | null;
4227
+ /**
4228
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4229
+ */
4230
+ matchType: 'exact' | 'prefix' | 'substring';
4231
+ };
4232
+ /**
4233
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4234
+ */
4235
+ type matchType = 'exact' | 'prefix' | 'substring';
4236
+ type PlatformMatchResponseDto = {
4237
+ /**
4238
+ * Ranked matches, best tier first (at most 10 rows)
4239
+ */
4240
+ platforms: Array<PlatformMatchResultDto>;
4241
+ /**
4242
+ * Overall match quality — top row's tier, or 'none' when no hits
4243
+ */
4244
+ matchType: 'none' | 'exact' | 'prefix' | 'substring';
4245
+ /**
4246
+ * Total matches before LIMIT (truncation transparency)
4247
+ */
4248
+ total: number;
4249
+ /**
4250
+ * true when total > platforms.length (more matches exist)
4251
+ */
4252
+ hasMore: boolean;
4253
+ };
4254
+ /**
4255
+ * Overall match quality — top row's tier, or 'none' when no hits
4256
+ */
4257
+ type matchType2 = 'none' | 'exact' | 'prefix' | 'substring';
4258
+ type CreatePlatformDto = {
4259
+ /**
4260
+ * Platform name
4261
+ */
4262
+ name: string;
4263
+ /**
4264
+ * Platform canonical identifier (lowercase, kebab-case)
4265
+ */
4266
+ canonical: string;
4267
+ /**
4268
+ * Platform aliases (multi-language names for lookup)
4269
+ */
4270
+ aliases: Array<string>;
4271
+ /**
4272
+ * Platform URL
4273
+ */
4274
+ url: string;
4275
+ /**
4276
+ * Platform type
4277
+ */
4278
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4279
+ /**
4280
+ * Platform logo URL
4281
+ */
4282
+ logoUrl?: string;
3694
4283
  /**
3695
- * ISO 4217 currency code
4284
+ * Whether the platform is active
3696
4285
  */
3697
- currency: string;
4286
+ isActive?: boolean;
4287
+ };
4288
+ type UpdatePlatformDto = {
3698
4289
  /**
3699
- * Balance amount
4290
+ * Platform name
3700
4291
  */
3701
- balance: string;
4292
+ name?: string;
4293
+ /**
4294
+ * Platform canonical identifier (lowercase, kebab-case)
4295
+ */
4296
+ canonical?: string;
4297
+ /**
4298
+ * Platform aliases (multi-language names for lookup)
4299
+ */
4300
+ aliases?: Array<string>;
4301
+ /**
4302
+ * Platform URL
4303
+ */
4304
+ url?: string;
4305
+ /**
4306
+ * Platform type
4307
+ */
4308
+ type?: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4309
+ /**
4310
+ * Platform logo URL
4311
+ */
4312
+ logoUrl?: string;
4313
+ /**
4314
+ * Whether the platform is active
4315
+ */
4316
+ isActive?: boolean;
3702
4317
  };
3703
4318
  type NetWorthByCurrencyDto = {
3704
4319
  /**
@@ -3738,20 +4353,6 @@ type ConvertedNetWorthDto = {
3738
4353
  [key: string]: unknown;
3739
4354
  };
3740
4355
  };
3741
- type ExchangeRateWarningDto = {
3742
- /**
3743
- * Warning type
3744
- */
3745
- type: string;
3746
- /**
3747
- * Currency without exchange rate
3748
- */
3749
- currency: string;
3750
- /**
3751
- * Total amount affected
3752
- */
3753
- totalAmount: string;
3754
- };
3755
4356
  type NetWorthResponseDto = {
3756
4357
  /**
3757
4358
  * Total net worth (assets - liabilities, converted to base currency)
@@ -3815,6 +4416,10 @@ type AccountItemDto = {
3815
4416
  * Currency code
3816
4417
  */
3817
4418
  currency: string;
4419
+ /**
4420
+ * FX-converted balance in base currency; omitted when not convertible
4421
+ */
4422
+ convertedBalance?: string;
3818
4423
  };
3819
4424
  type PlatformGroupDto = {
3820
4425
  /**
@@ -3913,6 +4518,10 @@ type AccountItemWithAssetClassDto = {
3913
4518
  * Currency code
3914
4519
  */
3915
4520
  currency: string;
4521
+ /**
4522
+ * FX-converted balance in base currency; omitted when not convertible
4523
+ */
4524
+ convertedBalance?: string;
3916
4525
  /**
3917
4526
  * Asset class
3918
4527
  */
@@ -3960,10 +4569,6 @@ type AssetClassGroupDto = {
3960
4569
  */
3961
4570
  convertedBalance?: string;
3962
4571
  };
3963
- /**
3964
- * Asset class name
3965
- */
3966
- type assetClass = 'LIQUIDITY' | 'EQUITY' | 'FIXED_INCOME' | 'PRECIOUS_METALS' | 'COMMODITY' | 'INSURANCE' | 'ALTERNATIVE_INVESTMENT' | 'PERSONAL_ASSETS' | 'LIABILITY' | 'REAL_ESTATE' | 'INDEX';
3967
4572
  type AssetClassSummaryDto = {
3968
4573
  /**
3969
4574
  * Total number of accounts
@@ -4286,332 +4891,204 @@ type HoldingPnlRowDto = {
4286
4891
  [key: string]: unknown;
4287
4892
  } | null;
4288
4893
  /**
4289
- * Unrealized P&L % (Decimal string)
4290
- */
4291
- unrealizedPnlPct?: {
4292
- [key: string]: unknown;
4293
- } | null;
4294
- /**
4295
- * Historical FX rate applied to cost basis
4296
- */
4297
- costFxRate?: FxRateDto | null;
4298
- /**
4299
- * FX rate applied to market value
4300
- */
4301
- marketFxRate?: FxRateDto | null;
4302
- /**
4303
- * Share of invested assets % (Decimal string); only for invested chartTokens
4304
- */
4305
- pctOfInvestedAssets?: {
4306
- [key: string]: unknown;
4307
- } | null;
4308
- /**
4309
- * Cumulative realized P&L on sold lots (asOf-date cutoff); null when the method has no applicable sells, a sell lacks a price, or any required FX rate is missing (never-mix). When a sell spans multiple currencies (cross-currency sale), amount and currency reflect the base currency; baseCcyEquivalent is always the authoritative dual-FX figure
4310
- */
4311
- realizedPnl?: MonetaryDto | null;
4312
- };
4313
- /**
4314
- * Chart segment token (libs/common resolver)
4315
- */
4316
- type chartToken = 'equity' | 'fund' | 'bond' | 'cash' | 'other';
4317
- type HoldingPnlWarningDto = {
4318
- /**
4319
- * Warning type
4320
- */
4321
- type: 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4322
- symbol?: {
4323
- [key: string]: unknown;
4324
- } | null;
4325
- accountId?: {
4326
- [key: string]: unknown;
4327
- } | null;
4328
- currency?: {
4329
- [key: string]: unknown;
4330
- } | null;
4331
- };
4332
- /**
4333
- * Warning type
4334
- */
4335
- type type4 = 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4336
- type HoldingPnlResponseDto = {
4337
- asOfDate: string;
4338
- baseCurrency: string;
4339
- /**
4340
- * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4341
- */
4342
- method: 'average' | 'FIFO';
4343
- rows: Array<HoldingPnlRowDto>;
4344
- warnings: Array<HoldingPnlWarningDto>;
4345
- };
4346
- /**
4347
- * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4348
- */
4349
- type method = 'average' | 'FIFO';
4350
- type CreateBeanPriceDto = {
4351
- /**
4352
- * Currency being priced (e.g., USD, AAPL, BTC)
4353
- */
4354
- currency: string;
4355
- /**
4356
- * Quote currency (pricing currency, e.g., CNY, EUR)
4357
- */
4358
- quoteCurrency: string;
4359
- /**
4360
- * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
4361
- */
4362
- amount: number;
4363
- /**
4364
- * Price date (ISO 8601 format)
4365
- */
4366
- date: string;
4367
- /**
4368
- * Metadata (validated by Zod schema, max field lengths enforced)
4369
- */
4370
- metadata?: {
4371
- [key: string]: unknown;
4372
- };
4373
- };
4374
- type PriceResponseDto = {
4375
- /**
4376
- * Unique identifier
4377
- */
4378
- id: string;
4379
- /**
4380
- * User ID (owner of the price)
4381
- */
4382
- userId: string;
4383
- /**
4384
- * Currency being priced (e.g., USD, AAPL, BTC)
4385
- */
4386
- currency: string;
4387
- /**
4388
- * Quote currency (pricing currency, e.g., USD, CNY)
4389
- */
4390
- quoteCurrency: string;
4391
- /**
4392
- * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
4393
- */
4394
- amount: number;
4395
- /**
4396
- * Price date (ISO 8601 format). Represents the date this price was valid.
4397
- */
4398
- date: string;
4399
- /**
4400
- * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
4401
- */
4402
- meta: {
4403
- [key: string]: unknown;
4404
- };
4405
- /**
4406
- * Creation timestamp
4407
- */
4408
- createdAt: string;
4409
- /**
4410
- * Last update timestamp
4411
- */
4412
- updatedAt: string;
4413
- };
4414
- type PriceListResponseDto = {
4415
- /**
4416
- * List of prices
4417
- */
4418
- items: Array<PriceResponseDto>;
4419
- /**
4420
- * Total number of prices
4421
- */
4422
- total: number;
4423
- };
4424
- type UpdateBeanPriceDto = {
4425
- /**
4426
- * Currency being priced
4427
- */
4428
- currency?: string;
4429
- /**
4430
- * Quote currency (pricing currency)
4431
- */
4432
- quoteCurrency?: string;
4433
- /**
4434
- * Price amount (MUST be >= 0 per Beancount spec)
4435
- */
4436
- amount?: number;
4437
- /**
4438
- * Price date (ISO 8601 format)
4439
- */
4440
- date?: string;
4441
- /**
4442
- * Metadata
4443
- */
4444
- metadata?: {
4445
- [key: string]: unknown;
4446
- };
4447
- };
4448
- type CurrencyBalanceDto = {
4449
- /**
4450
- * ISO 4217 currency code
4451
- */
4452
- currency: string;
4453
- /**
4454
- * Balance amount
4455
- */
4456
- balance: string;
4457
- };
4458
- type TimeSeriesPointDto = {
4459
- /**
4460
- * Date in YYYY-MM-DD format
4461
- */
4462
- date: string;
4463
- /**
4464
- * Value at this date (in base currency)
4465
- */
4466
- value: string;
4467
- /**
4468
- * Change from previous point
4469
- */
4470
- change?: {
4471
- [key: string]: unknown;
4472
- };
4473
- /**
4474
- * Total assets at this date (in base currency)
4475
- */
4476
- assets?: string;
4477
- /**
4478
- * Total liabilities at this date (in base currency)
4479
- */
4480
- liabilities?: string;
4481
- /**
4482
- * Multi-currency breakdown for this point
4483
- */
4484
- byCurrency?: Array<CurrencyBalanceDto>;
4485
- };
4486
- type TrendSummaryDto = {
4487
- /**
4488
- * Value at start of period
4894
+ * Unrealized P&L % (Decimal string)
4489
4895
  */
4490
- startValue: string;
4896
+ unrealizedPnlPct?: {
4897
+ [key: string]: unknown;
4898
+ } | null;
4491
4899
  /**
4492
- * Value at end of period
4900
+ * Historical FX rate applied to cost basis
4493
4901
  */
4494
- endValue: string;
4902
+ costFxRate?: FxRateDto | null;
4495
4903
  /**
4496
- * Total change over period
4904
+ * FX rate applied to market value
4497
4905
  */
4498
- totalChange: string;
4906
+ marketFxRate?: FxRateDto | null;
4499
4907
  /**
4500
- * Total change percentage
4908
+ * Share of invested assets % (Decimal string); only for invested chartTokens
4501
4909
  */
4502
- totalChangePercentage: string;
4503
- };
4504
- type MultiCurrencyPointDto = {
4910
+ pctOfInvestedAssets?: {
4911
+ [key: string]: unknown;
4912
+ } | null;
4505
4913
  /**
4506
- * Date in YYYY-MM-DD format
4914
+ * Cumulative realized P&L on sold lots (asOf-date cutoff); null when the method has no applicable sells, a sell lacks a price, or any required FX rate is missing (never-mix). When a sell spans multiple currencies (cross-currency sale), amount and currency reflect the base currency; baseCcyEquivalent is always the authoritative dual-FX figure
4507
4915
  */
4508
- date: string;
4916
+ realizedPnl?: MonetaryDto | null;
4917
+ };
4918
+ /**
4919
+ * Chart segment token (libs/common resolver)
4920
+ */
4921
+ type chartToken = 'equity' | 'fund' | 'bond' | 'cash' | 'other';
4922
+ type HoldingPnlWarningDto = {
4509
4923
  /**
4510
- * Balances by currency
4924
+ * Warning type
4511
4925
  */
4512
- byCurrency: Array<CurrencyBalanceDto>;
4926
+ type: 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4927
+ symbol?: {
4928
+ [key: string]: unknown;
4929
+ } | null;
4930
+ accountId?: {
4931
+ [key: string]: unknown;
4932
+ } | null;
4933
+ currency?: {
4934
+ [key: string]: unknown;
4935
+ } | null;
4513
4936
  };
4514
- type PortfolioTrendsResponseDto = {
4937
+ /**
4938
+ * Warning type
4939
+ */
4940
+ type type4 = 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4941
+ type HoldingPnlResponseDto = {
4942
+ asOfDate: string;
4943
+ baseCurrency: string;
4515
4944
  /**
4516
- * Time series data points
4945
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4517
4946
  */
4518
- series: Array<TimeSeriesPointDto>;
4947
+ method: 'average' | 'FIFO';
4948
+ rows: Array<HoldingPnlRowDto>;
4949
+ warnings: Array<HoldingPnlWarningDto>;
4950
+ };
4951
+ /**
4952
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4953
+ */
4954
+ type method = 'average' | 'FIFO';
4955
+ type AnonymousLoginDto = {
4519
4956
  /**
4520
- * Period summary
4957
+ * Access token for anonymous login
4521
4958
  */
4522
- summary: TrendSummaryDto;
4959
+ accessToken: string;
4960
+ };
4961
+ type AnonymousLoginResponseDto = {
4523
4962
  /**
4524
- * Period requested
4963
+ * JWT auth token
4525
4964
  */
4526
- period: string;
4965
+ authToken: string;
4966
+ };
4967
+ type SymbolSearchResultDto = {
4968
+ symbol: string;
4969
+ name?: {
4970
+ [key: string]: unknown;
4971
+ } | null;
4972
+ exchange?: {
4973
+ [key: string]: unknown;
4974
+ } | null;
4527
4975
  /**
4528
- * Data granularity
4976
+ * OpenBB asset_type (e.g. stock, etf)
4529
4977
  */
4530
- granularity: string;
4978
+ assetType?: {
4979
+ [key: string]: unknown;
4980
+ } | null;
4531
4981
  /**
4532
- * Base currency for converted values
4982
+ * IGN asset class (region.types.ts ASSET_CLASSES)
4533
4983
  */
4534
- currency: string;
4984
+ assetClass?: {
4985
+ [key: string]: unknown;
4986
+ } | null;
4535
4987
  /**
4536
- * Multi-currency time series (each point has currency breakdown)
4988
+ * IGN asset sub-class (region.types.ts ASSET_SUB_CLASSES)
4537
4989
  */
4538
- byCurrency?: Array<MultiCurrencyPointDto>;
4990
+ assetSubClass?: {
4991
+ [key: string]: unknown;
4992
+ } | null;
4539
4993
  /**
4540
- * Exchange rate warnings
4994
+ * Trading currency (extra_data or inferred from exchange)
4541
4995
  */
4542
- warnings?: Array<ExchangeRateWarningDto>;
4996
+ currency?: {
4997
+ [key: string]: unknown;
4998
+ } | null;
4543
4999
  };
4544
- type CashFlowPointDto = {
4545
- /**
4546
- * Month key (YYYY-MM)
4547
- */
4548
- month: string;
5000
+ type SymbolQuoteDto = {
5001
+ symbol?: string;
5002
+ name?: {
5003
+ [key: string]: unknown;
5004
+ } | null;
5005
+ exchange?: {
5006
+ [key: string]: unknown;
5007
+ } | null;
4549
5008
  /**
4550
- * Income in base currency (absolute, converted)
5009
+ * OpenBB asset_type
4551
5010
  */
4552
- income: string;
5011
+ assetType?: {
5012
+ [key: string]: unknown;
5013
+ } | null;
4553
5014
  /**
4554
- * Expense in base currency (absolute, converted)
5015
+ * IGN asset class
4555
5016
  */
4556
- expense: string;
5017
+ assetClass?: {
5018
+ [key: string]: unknown;
5019
+ } | null;
4557
5020
  /**
4558
- * netSavings = income − expense (savings positive)
5021
+ * IGN asset sub-class
4559
5022
  */
4560
- netSavings: string;
4561
- };
4562
- type CashFlowTrendSummaryDto = {
5023
+ assetSubClass?: {
5024
+ [key: string]: unknown;
5025
+ } | null;
4563
5026
  /**
4564
- * Total income across the period
5027
+ * Trading currency (extra_data or inferred from exchange)
4565
5028
  */
4566
- totalIncome: string;
5029
+ currency?: {
5030
+ [key: string]: unknown;
5031
+ } | null;
4567
5032
  /**
4568
- * Total expense across the period
5033
+ * Latest price (Decimal string)
4569
5034
  */
4570
- totalExpense: string;
5035
+ price?: {
5036
+ [key: string]: unknown;
5037
+ } | null;
4571
5038
  /**
4572
- * income expense across the period
5039
+ * Date the price was observed (ISO yyyy-MM-dd)
4573
5040
  */
4574
- totalNetSavings: string;
5041
+ priceDate?: {
5042
+ [key: string]: unknown;
5043
+ } | null;
4575
5044
  /**
4576
- * totalNetSavings divided by the window length (N months, incl. zero-filled)
5045
+ * Change vs previous close, in percentage points (1.7 == 1.7%). openbb stores change_percent as a normalized decimal; this exposes percentage points for frontend convenience.
4577
5046
  */
4578
- averageMonthlyNetSavings: string;
4579
- };
4580
- type CashFlowTrendsResponseDto = {
5047
+ changePercent?: {
5048
+ [key: string]: unknown;
5049
+ } | null;
4581
5050
  /**
4582
- * Monthly cash-flow series (fixed N-month window, zero-filled)
5051
+ * Previous close (Decimal string)
4583
5052
  */
4584
- series: Array<CashFlowPointDto>;
5053
+ prevClose?: {
5054
+ [key: string]: unknown;
5055
+ } | null;
4585
5056
  /**
4586
- * Period totals
5057
+ * Day open (Decimal string)
4587
5058
  */
4588
- summary: CashFlowTrendSummaryDto;
5059
+ open?: {
5060
+ [key: string]: unknown;
5061
+ } | null;
4589
5062
  /**
4590
- * Period requested
5063
+ * Day high (Decimal string)
4591
5064
  */
4592
- period: string;
5065
+ high?: {
5066
+ [key: string]: unknown;
5067
+ } | null;
4593
5068
  /**
4594
- * Data granularity (v1 returns month buckets)
5069
+ * Day low (Decimal string)
4595
5070
  */
4596
- granularity: string;
5071
+ low?: {
5072
+ [key: string]: unknown;
5073
+ } | null;
4597
5074
  /**
4598
- * Base currency for converted values
5075
+ * Day volume (Decimal string)
4599
5076
  */
4600
- currency: string;
5077
+ volume?: {
5078
+ [key: string]: unknown;
5079
+ } | null;
4601
5080
  /**
4602
- * Exchange rate warnings (e.g. missing rate for a currency)
5081
+ * 52-week high (Decimal string)
4603
5082
  */
4604
- warnings?: Array<ExchangeRateWarningDto>;
4605
- };
4606
- type GenerateSnapshotBody = unknown;
4607
- type GenerateSnapshotResponse = unknown;
4608
- type BackfillSnapshotsBody = unknown;
4609
- type BackfillSnapshotsResponse = unknown;
4610
- type AnonymousLoginDto = {
5083
+ yearHigh?: {
5084
+ [key: string]: unknown;
5085
+ } | null;
4611
5086
  /**
4612
- * Access token for anonymous login
5087
+ * 52-week low (Decimal string)
4613
5088
  */
4614
- accessToken: string;
5089
+ yearLow?: {
5090
+ [key: string]: unknown;
5091
+ } | null;
4615
5092
  };
4616
5093
  type AccountControllerCreateData = {
4617
5094
  /**
@@ -4639,7 +5116,7 @@ type AccountControllerFindAllData = {
4639
5116
  */
4640
5117
  region: 'cn' | 'us' | 'de' | 'gb';
4641
5118
  /**
4642
- * Search term for path or i18nKey
5119
+ * Search term for account path
4643
5120
  */
4644
5121
  search?: string;
4645
5122
  /**
@@ -4710,6 +5187,18 @@ type AccountControllerReopenData = {
4710
5187
  requestBody: ReopenAccountDto;
4711
5188
  };
4712
5189
  type AccountControllerReopenResponse = AccountResponseDto;
5190
+ type AccountControllerAddOpeningBalanceData = {
5191
+ /**
5192
+ * Account UUID
5193
+ */
5194
+ id: string;
5195
+ /**
5196
+ * Region code for tenant context
5197
+ */
5198
+ region: 'cn' | 'us' | 'de' | 'gb';
5199
+ requestBody: CreateOpeningBalanceDto;
5200
+ };
5201
+ type AccountControllerAddOpeningBalanceResponse = OpeningBalanceResultDto;
4713
5202
  type AccountStandardsControllerGetTemplatesData = {
4714
5203
  /**
4715
5204
  * Region code (cn, us, de)
@@ -4871,7 +5360,7 @@ type TransactionControllerDeleteData = {
4871
5360
  type TransactionControllerDeleteResponse = void;
4872
5361
  type BalanceControllerGetBalanceData = {
4873
5362
  /**
4874
- * Account name (e.g., "Assets:Bank:Checking")
5363
+ * Account name (e.g., "Assets:Checking")
4875
5364
  */
4876
5365
  account: string;
4877
5366
  /**
@@ -5113,76 +5602,161 @@ type CommodityControllerCreateData = {
5113
5602
  * Region code for tenant context
5114
5603
  */
5115
5604
  region: 'cn' | 'us' | 'de' | 'gb';
5116
- requestBody: CreateCommodityDto;
5605
+ requestBody: CreateCommodityDto;
5606
+ };
5607
+ type CommodityControllerCreateResponse = CommodityResponseDto;
5608
+ type CommodityControllerFindAllData = {
5609
+ /**
5610
+ * Region code for tenant context
5611
+ */
5612
+ region: 'cn' | 'us' | 'de' | 'gb';
5613
+ /**
5614
+ * Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
5615
+ */
5616
+ search?: string;
5617
+ /**
5618
+ * Filter by exact symbol match
5619
+ */
5620
+ symbol?: string;
5621
+ };
5622
+ type CommodityControllerFindAllResponse = CommodityListResponseDto;
5623
+ type CommodityControllerFindOneData = {
5624
+ /**
5625
+ * Region code for tenant context
5626
+ */
5627
+ region: 'cn' | 'us' | 'de' | 'gb';
5628
+ /**
5629
+ * Commodity symbol
5630
+ */
5631
+ symbol: string;
5632
+ };
5633
+ type CommodityControllerFindOneResponse = CommodityResponseDto;
5634
+ type CommodityControllerUpdateData = {
5635
+ /**
5636
+ * Region code for tenant context
5637
+ */
5638
+ region: 'cn' | 'us' | 'de' | 'gb';
5639
+ requestBody: UpdateCommodityDto;
5640
+ /**
5641
+ * Commodity symbol
5642
+ */
5643
+ symbol: string;
5644
+ };
5645
+ type CommodityControllerUpdateResponse = CommodityResponseDto;
5646
+ type CommodityControllerDeleteData = {
5647
+ /**
5648
+ * Region code for tenant context
5649
+ */
5650
+ region: 'cn' | 'us' | 'de' | 'gb';
5651
+ /**
5652
+ * Commodity symbol
5653
+ */
5654
+ symbol: string;
5655
+ };
5656
+ type CommodityControllerDeleteResponse = void;
5657
+ type CommodityControllerGetOrCreateData = {
5658
+ /**
5659
+ * Region code for tenant context
5660
+ */
5661
+ region: 'cn' | 'us' | 'de' | 'gb';
5662
+ /**
5663
+ * Commodity symbol
5664
+ */
5665
+ symbol: string;
5666
+ };
5667
+ type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
5668
+ type CommodityControllerBulkCreateData = {
5669
+ /**
5670
+ * Region code for tenant context
5671
+ */
5672
+ region: 'cn' | 'us' | 'de' | 'gb';
5673
+ };
5674
+ type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5675
+ type PriceControllerCreateData = {
5676
+ /**
5677
+ * Region code for tenant context
5678
+ */
5679
+ region: 'cn' | 'us' | 'de' | 'gb';
5680
+ requestBody: CreateBeanPriceDto;
5117
5681
  };
5118
- type CommodityControllerCreateResponse = CommodityResponseDto;
5119
- type CommodityControllerFindAllData = {
5682
+ type PriceControllerCreateResponse = PriceResponseDto;
5683
+ type PriceControllerFindAllData = {
5120
5684
  /**
5121
- * Region code for tenant context
5685
+ * Filter by currency (e.g., BTC, AAPL, USD)
5122
5686
  */
5123
- region: 'cn' | 'us' | 'de' | 'gb';
5687
+ currency?: string;
5124
5688
  /**
5125
- * Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
5689
+ * Filter prices from this date (ISO 8601 format)
5126
5690
  */
5127
- search?: string;
5691
+ dateFrom?: string;
5128
5692
  /**
5129
- * Filter by exact symbol match
5693
+ * Filter prices to this date (ISO 8601 format)
5130
5694
  */
5131
- symbol?: string;
5132
- };
5133
- type CommodityControllerFindAllResponse = CommodityListResponseDto;
5134
- type CommodityControllerFindOneData = {
5695
+ dateTo?: string;
5135
5696
  /**
5136
- * Region code for tenant context
5697
+ * Number of items per page (default: 20, max: 100)
5137
5698
  */
5138
- region: 'cn' | 'us' | 'de' | 'gb';
5699
+ limit?: number;
5139
5700
  /**
5140
- * Commodity symbol
5701
+ * Page number for pagination (default: 1)
5141
5702
  */
5142
- symbol: string;
5143
- };
5144
- type CommodityControllerFindOneResponse = CommodityResponseDto;
5145
- type CommodityControllerUpdateData = {
5703
+ page?: number;
5704
+ /**
5705
+ * Filter by quote currency (pricing currency, e.g., USD, CNY)
5706
+ */
5707
+ quoteCurrency?: string;
5146
5708
  /**
5147
5709
  * Region code for tenant context
5148
5710
  */
5149
5711
  region: 'cn' | 'us' | 'de' | 'gb';
5150
- requestBody: UpdateCommodityDto;
5151
5712
  /**
5152
- * Commodity symbol
5713
+ * Search term for currency or quoteCurrency (case-insensitive partial match)
5153
5714
  */
5154
- symbol: string;
5715
+ search?: string;
5155
5716
  };
5156
- type CommodityControllerUpdateResponse = CommodityResponseDto;
5157
- type CommodityControllerDeleteData = {
5717
+ type PriceControllerFindAllResponse = PriceListResponseDto;
5718
+ type PriceControllerFindOneData = {
5719
+ /**
5720
+ * Price ID
5721
+ */
5722
+ id: string;
5158
5723
  /**
5159
5724
  * Region code for tenant context
5160
5725
  */
5161
5726
  region: 'cn' | 'us' | 'de' | 'gb';
5727
+ };
5728
+ type PriceControllerFindOneResponse = PriceResponseDto;
5729
+ type PriceControllerUpdateData = {
5162
5730
  /**
5163
- * Commodity symbol
5731
+ * Price ID
5164
5732
  */
5165
- symbol: string;
5166
- };
5167
- type CommodityControllerDeleteResponse = void;
5168
- type CommodityControllerGetOrCreateData = {
5733
+ id: string;
5169
5734
  /**
5170
5735
  * Region code for tenant context
5171
5736
  */
5172
5737
  region: 'cn' | 'us' | 'de' | 'gb';
5738
+ requestBody: UpdateBeanPriceDto;
5739
+ };
5740
+ type PriceControllerUpdateResponse = PriceResponseDto;
5741
+ type PriceControllerDeleteData = {
5173
5742
  /**
5174
- * Commodity symbol
5743
+ * Price ID
5175
5744
  */
5176
- symbol: string;
5745
+ id: string;
5746
+ /**
5747
+ * Region code for tenant context
5748
+ */
5749
+ region: 'cn' | 'us' | 'de' | 'gb';
5177
5750
  };
5178
- type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
5179
- type CommodityControllerBulkCreateData = {
5751
+ type PriceControllerDeleteResponse = void;
5752
+ type PriceControllerBulkCreateData = {
5180
5753
  /**
5181
5754
  * Region code for tenant context
5182
5755
  */
5183
5756
  region: 'cn' | 'us' | 'de' | 'gb';
5757
+ requestBody: Array<string>;
5184
5758
  };
5185
- type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5759
+ type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
5186
5760
  type RecurringRuleControllerCreateData = {
5187
5761
  /**
5188
5762
  * Region code for tenant context
@@ -5376,6 +5950,120 @@ type ForecastControllerGetForecastData = {
5376
5950
  region: 'cn' | 'us' | 'de' | 'gb';
5377
5951
  };
5378
5952
  type ForecastControllerGetForecastResponse = ForecastResponseDto;
5953
+ type ReportingControllerGetPortfolioTrendsData = {
5954
+ /**
5955
+ * Data granularity
5956
+ */
5957
+ granularity?: 'day' | 'week' | 'month';
5958
+ /**
5959
+ * Time period
5960
+ */
5961
+ period?: '1m' | '3m' | '6m' | '1y';
5962
+ /**
5963
+ * Region code for tenant context
5964
+ */
5965
+ region: 'cn' | 'us' | 'de' | 'gb';
5966
+ };
5967
+ type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
5968
+ type ReportingControllerGetCashFlowTrendsData = {
5969
+ /**
5970
+ * Data granularity (accepted for API symmetry; v1 returns month buckets)
5971
+ */
5972
+ granularity?: 'day' | 'week' | 'month';
5973
+ /**
5974
+ * Time period
5975
+ */
5976
+ period?: '1m' | '3m' | '6m' | '1y';
5977
+ /**
5978
+ * Region code for tenant context
5979
+ */
5980
+ region: 'cn' | 'us' | 'de' | 'gb';
5981
+ };
5982
+ type ReportingControllerGetCashFlowTrendsResponse = CashFlowTrendsResponseDto;
5983
+ type ReportingControllerGenerateSnapshotData = {
5984
+ /**
5985
+ * Region code for tenant context
5986
+ */
5987
+ region: 'cn' | 'us' | 'de' | 'gb';
5988
+ /**
5989
+ * Optional date (defaults to today)
5990
+ */
5991
+ requestBody: GenerateSnapshotBody;
5992
+ };
5993
+ type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
5994
+ type ReportingControllerBackfillSnapshotsData = {
5995
+ /**
5996
+ * Region code for tenant context
5997
+ */
5998
+ region: 'cn' | 'us' | 'de' | 'gb';
5999
+ requestBody: BackfillSnapshotsBody;
6000
+ };
6001
+ type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
6002
+ type UserControllerDeleteOwnUserData = {
6003
+ requestBody: DeleteOwnUserDto;
6004
+ };
6005
+ type UserControllerDeleteOwnUserResponse = void;
6006
+ type UserControllerGetUserData = {
6007
+ acceptLanguage: string;
6008
+ };
6009
+ type UserControllerGetUserResponse = unknown;
6010
+ type UserControllerSignupUserData = {
6011
+ requestBody: SignupDto;
6012
+ };
6013
+ type UserControllerSignupUserResponse = SignupResponseDto;
6014
+ type UserControllerDeleteUserData = {
6015
+ /**
6016
+ * User ID to delete
6017
+ */
6018
+ id: string;
6019
+ };
6020
+ type UserControllerDeleteUserResponse = void;
6021
+ type UserControllerGetUserInfoData = {
6022
+ /**
6023
+ * User ID
6024
+ */
6025
+ id: string;
6026
+ };
6027
+ type UserControllerGetUserInfoResponse = unknown;
6028
+ type UserControllerUpdateUserSettingData = {
6029
+ requestBody: UpdateUserSettingDto;
6030
+ };
6031
+ type UserControllerUpdateUserSettingResponse = unknown;
6032
+ type UserControllerGetAllUserSettingsByPageData = {
6033
+ /**
6034
+ * Page number
6035
+ */
6036
+ pageNo: number;
6037
+ /**
6038
+ * Page size
6039
+ */
6040
+ pageSize: number;
6041
+ };
6042
+ type UserControllerGetAllUserSettingsByPageResponse = unknown;
6043
+ type UserControllerGetAssetLiabilitySummaryResponse = unknown;
6044
+ type PropertyControllerGetAllResponse = unknown;
6045
+ type PropertyControllerGetByKeyData = {
6046
+ /**
6047
+ * Property key
6048
+ */
6049
+ key: string;
6050
+ };
6051
+ type PropertyControllerGetByKeyResponse = unknown;
6052
+ type PropertyControllerUpdateData = {
6053
+ /**
6054
+ * Property key
6055
+ */
6056
+ key: string;
6057
+ requestBody: UpdatePropertyDto;
6058
+ };
6059
+ type PropertyControllerUpdateResponse = unknown;
6060
+ type PropertyControllerDeleteData = {
6061
+ /**
6062
+ * Property key
6063
+ */
6064
+ key: string;
6065
+ };
6066
+ type PropertyControllerDeleteResponse = void;
5379
6067
  type TransactionRuleControllerCreateData = {
5380
6068
  /**
5381
6069
  * Region code for tenant context
@@ -5467,99 +6155,34 @@ type TransactionRuleControllerUpdateData = {
5467
6155
  region: 'cn' | 'us' | 'de' | 'gb';
5468
6156
  requestBody: UpdateTransactionRuleDto;
5469
6157
  /**
5470
- * Rule ID to update
5471
- */
5472
- ruleId: string;
5473
- };
5474
- type TransactionRuleControllerUpdateResponse = TransactionRuleResponseDto;
5475
- type TransactionRuleControllerDeleteData = {
5476
- /**
5477
- * Region code for tenant context
5478
- */
5479
- region: 'cn' | 'us' | 'de' | 'gb';
5480
- /**
5481
- * Rule ID to delete
5482
- */
5483
- ruleId: string;
5484
- };
5485
- type TransactionRuleControllerDeleteResponse = void;
5486
- type TransactionRuleControllerTestData = {
5487
- /**
5488
- * Region code for tenant context
5489
- */
5490
- region: 'cn' | 'us' | 'de' | 'gb';
5491
- requestBody: TestRuleDto;
5492
- /**
5493
- * Rule ID to test
5494
- */
5495
- ruleId: string;
5496
- };
5497
- type TransactionRuleControllerTestResponse = TestRuleResponseDto;
5498
- type UserControllerDeleteOwnUserData = {
5499
- requestBody: DeleteOwnUserDto;
5500
- };
5501
- type UserControllerDeleteOwnUserResponse = void;
5502
- type UserControllerGetUserData = {
5503
- acceptLanguage: string;
5504
- };
5505
- type UserControllerGetUserResponse = unknown;
5506
- type UserControllerSignupUserData = {
5507
- requestBody: SignupDto;
5508
- };
5509
- type UserControllerSignupUserResponse = unknown;
5510
- type UserControllerDeleteUserData = {
5511
- /**
5512
- * User ID to delete
5513
- */
5514
- id: string;
5515
- };
5516
- type UserControllerDeleteUserResponse = void;
5517
- type UserControllerGetUserInfoData = {
5518
- /**
5519
- * User ID
5520
- */
5521
- id: string;
5522
- };
5523
- type UserControllerGetUserInfoResponse = unknown;
5524
- type UserControllerUpdateUserSettingData = {
5525
- requestBody: UpdateUserSettingDto;
5526
- };
5527
- type UserControllerUpdateUserSettingResponse = unknown;
5528
- type UserControllerGetAllUserSettingsByPageData = {
5529
- /**
5530
- * Page number
5531
- */
5532
- pageNo: number;
5533
- /**
5534
- * Page size
6158
+ * Rule ID to update
5535
6159
  */
5536
- pageSize: number;
6160
+ ruleId: string;
5537
6161
  };
5538
- type UserControllerGetAllUserSettingsByPageResponse = unknown;
5539
- type UserControllerGetAssetLiabilitySummaryResponse = unknown;
5540
- type PropertyControllerGetAllResponse = unknown;
5541
- type PropertyControllerGetByKeyData = {
6162
+ type TransactionRuleControllerUpdateResponse = TransactionRuleResponseDto;
6163
+ type TransactionRuleControllerDeleteData = {
5542
6164
  /**
5543
- * Property key
6165
+ * Region code for tenant context
5544
6166
  */
5545
- key: string;
5546
- };
5547
- type PropertyControllerGetByKeyResponse = unknown;
5548
- type PropertyControllerUpdateData = {
6167
+ region: 'cn' | 'us' | 'de' | 'gb';
5549
6168
  /**
5550
- * Property key
6169
+ * Rule ID to delete
5551
6170
  */
5552
- key: string;
5553
- requestBody: UpdatePropertyDto;
6171
+ ruleId: string;
5554
6172
  };
5555
- type PropertyControllerUpdateResponse = unknown;
5556
- type PropertyControllerDeleteData = {
6173
+ type TransactionRuleControllerDeleteResponse = void;
6174
+ type TransactionRuleControllerTestData = {
5557
6175
  /**
5558
- * Property key
6176
+ * Region code for tenant context
5559
6177
  */
5560
- key: string;
6178
+ region: 'cn' | 'us' | 'de' | 'gb';
6179
+ requestBody: TestRuleDto;
6180
+ /**
6181
+ * Rule ID to test
6182
+ */
6183
+ ruleId: string;
5561
6184
  };
5562
- type PropertyControllerDeleteResponse = void;
6185
+ type TransactionRuleControllerTestResponse = TestRuleResponseDto;
5563
6186
  type EventControllerCreateData = {
5564
6187
  /**
5565
6188
  * Region code for tenant context (decorative for life events)
@@ -5646,6 +6269,49 @@ type EventControllerGetSliceData = {
5646
6269
  region: 'cn' | 'us' | 'de' | 'gb';
5647
6270
  };
5648
6271
  type EventControllerGetSliceResponse = unknown;
6272
+ type OnboardingControllerBootstrapData = {
6273
+ /**
6274
+ * Region code for tenant context
6275
+ */
6276
+ region: 'cn' | 'us' | 'de' | 'gb';
6277
+ requestBody: OnboardingDto;
6278
+ };
6279
+ type OnboardingControllerBootstrapResponse = unknown;
6280
+ type ReconciliationControllerComputeData = {
6281
+ /**
6282
+ * Region code for tenant context (decorative for reconciliation)
6283
+ */
6284
+ region: 'cn' | 'us' | 'de' | 'gb';
6285
+ requestBody: ComputeReconciliationDto;
6286
+ };
6287
+ type ReconciliationControllerComputeResponse = ReconciliationComputeResultDto;
6288
+ type ReconciliationControllerAssertData = {
6289
+ /**
6290
+ * Region code for tenant context (decorative for reconciliation)
6291
+ */
6292
+ region: 'cn' | 'us' | 'de' | 'gb';
6293
+ requestBody: AssertReconciliationDto;
6294
+ };
6295
+ type ReconciliationControllerAssertResponse = ReconciliationRecordDto;
6296
+ type ReconciliationControllerPadData = {
6297
+ /**
6298
+ * Region code for tenant context (decorative for reconciliation)
6299
+ */
6300
+ region: 'cn' | 'us' | 'de' | 'gb';
6301
+ requestBody: PadReconciliationDto;
6302
+ };
6303
+ type ReconciliationControllerPadResponse = PadResultDto;
6304
+ type ReconciliationControllerHistoryData = {
6305
+ /**
6306
+ * BeanAccount id
6307
+ */
6308
+ accountId: string;
6309
+ /**
6310
+ * Region code for tenant context (decorative for reconciliation)
6311
+ */
6312
+ region: 'cn' | 'us' | 'de' | 'gb';
6313
+ };
6314
+ type ReconciliationControllerHistoryResponse = Array<ReconciliationRecordDto>;
5649
6315
  type ExportControllerExportBeancountResponse = unknown;
5650
6316
  type FileImportControllerImportFileData = {
5651
6317
  /**
@@ -5725,38 +6391,6 @@ type ImporterConfigControllerResetConfigData = {
5725
6391
  region: 'cn' | 'us' | 'de' | 'gb';
5726
6392
  };
5727
6393
  type ImporterConfigControllerResetConfigResponse = ImporterConfigDto;
5728
- type PlatformControllerFindAllResponse = unknown;
5729
- type PlatformControllerCreateData = {
5730
- requestBody: CreatePlatformDto;
5731
- };
5732
- type PlatformControllerCreateResponse = unknown;
5733
- type PlatformControllerGetPlatformListResponse = unknown;
5734
- type PlatformControllerMatchPlatformsData = {
5735
- /**
5736
- * Search query — Chinese name, English name, or abbreviation
5737
- */
5738
- q: string;
5739
- /**
5740
- * Region code for category override lookup
5741
- */
5742
- region?: string;
5743
- };
5744
- type PlatformControllerMatchPlatformsResponse = unknown;
5745
- type PlatformControllerUpdateData = {
5746
- /**
5747
- * Platform ID
5748
- */
5749
- id: string;
5750
- requestBody: UpdatePlatformDto;
5751
- };
5752
- type PlatformControllerUpdateResponse = unknown;
5753
- type PlatformControllerDeleteData = {
5754
- /**
5755
- * Platform ID
5756
- */
5757
- id: string;
5758
- };
5759
- type PlatformControllerDeleteResponse = void;
5760
6394
  type ProviderSyncControllerSyncData = {
5761
6395
  /**
5762
6396
  * Provider name
@@ -5787,6 +6421,38 @@ type ProviderSyncControllerIsProviderSupportedData = {
5787
6421
  region: 'cn' | 'us' | 'de' | 'gb';
5788
6422
  };
5789
6423
  type ProviderSyncControllerIsProviderSupportedResponse = unknown;
6424
+ type ExternalAccountLinkControllerCreateData = {
6425
+ /**
6426
+ * Region code for tenant context
6427
+ */
6428
+ region: 'cn' | 'us' | 'de' | 'gb';
6429
+ requestBody: CreateExternalAccountLinkDto;
6430
+ };
6431
+ type ExternalAccountLinkControllerCreateResponse = ExternalAccountLinkResponseDto;
6432
+ type ExternalAccountLinkControllerFindAllData = {
6433
+ provider: string;
6434
+ /**
6435
+ * Region code for tenant context
6436
+ */
6437
+ region: 'cn' | 'us' | 'de' | 'gb';
6438
+ };
6439
+ type ExternalAccountLinkControllerFindAllResponse = ExternalAccountLinkListResponseDto;
6440
+ type ExternalAccountLinkControllerFindOneData = {
6441
+ id: string;
6442
+ /**
6443
+ * Region code for tenant context
6444
+ */
6445
+ region: 'cn' | 'us' | 'de' | 'gb';
6446
+ };
6447
+ type ExternalAccountLinkControllerFindOneResponse = ExternalAccountLinkResponseDto;
6448
+ type ExternalAccountLinkControllerRemoveData = {
6449
+ id: string;
6450
+ /**
6451
+ * Region code for tenant context
6452
+ */
6453
+ region: 'cn' | 'us' | 'de' | 'gb';
6454
+ };
6455
+ type ExternalAccountLinkControllerRemoveResponse = void;
5790
6456
  type TelemetryControllerReportTelemetryData = {
5791
6457
  /**
5792
6458
  * Region code for tenant context
@@ -5847,192 +6513,90 @@ type NlpControllerGetSessionData = {
5847
6513
  sessionId?: string;
5848
6514
  };
5849
6515
  type NlpControllerGetSessionResponse = unknown;
5850
- type DashboardControllerGetNetWorthData = {
5851
- /**
5852
- * Date for balance calculation (ISO 8601 format)
5853
- */
5854
- date?: string;
5855
- /**
5856
- * Region code for tenant context
5857
- */
5858
- region: 'cn' | 'us' | 'de' | 'gb';
5859
- };
5860
- type DashboardControllerGetNetWorthResponse = NetWorthResponseDto;
5861
- type DashboardControllerGetAccountsData = {
5862
- /**
5863
- * Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
5864
- */
5865
- accountId?: string;
5866
- /**
5867
- * Date for balance calculation (ISO 8601 format)
5868
- */
5869
- date?: string;
5870
- /**
5871
- * Grouping strategy
5872
- */
5873
- groupBy?: 'platform' | 'assetClass' | 'holdingAssetClass' | 'holdingAssetClassByAccount';
5874
- /**
5875
- * Region code for tenant context
5876
- */
5877
- region: 'cn' | 'us' | 'de' | 'gb';
5878
- };
5879
- type DashboardControllerGetAccountsResponse = AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
5880
- type DashboardControllerGetCashFlowData = {
5881
- /**
5882
- * Period in YYYY-MM format
5883
- */
5884
- period: string;
5885
- /**
5886
- * Region code for tenant context
5887
- */
5888
- region: 'cn' | 'us' | 'de' | 'gb';
5889
- };
5890
- type DashboardControllerGetCashFlowResponse = CashFlowResponseDto;
5891
- type DashboardControllerGetExpensesData = {
5892
- /**
5893
- * Account root to aggregate (expense → ^Expenses:, income → ^Income:)
5894
- */
5895
- flow?: 'expense' | 'income';
5896
- /**
5897
- * Grouping strategy
5898
- */
5899
- groupBy?: 'category';
5900
- /**
5901
- * Time window (1m = current calendar month)
5902
- */
5903
- period?: '1m' | '3m' | '6m' | '1y';
5904
- /**
5905
- * Region code for tenant context
5906
- */
5907
- region: 'cn' | 'us' | 'de' | 'gb';
6516
+ type PlatformControllerFindAllResponse = unknown;
6517
+ type PlatformControllerCreateData = {
6518
+ requestBody: CreatePlatformDto;
5908
6519
  };
5909
- type DashboardControllerGetExpensesResponse = ExpensesByCategoryResponseDto;
5910
- type HoldingPnlControllerGetHoldingPnlData = {
5911
- /**
5912
- * Scope to a single account
5913
- */
5914
- accountId?: string;
5915
- /**
5916
- * As-of date (ISO 8601), defaults to today
5917
- */
5918
- asOf?: string;
5919
- /**
5920
- * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
5921
- */
5922
- method?: 'FIFO' | 'average';
6520
+ type PlatformControllerCreateResponse = unknown;
6521
+ type PlatformControllerGetPlatformListResponse = Array<PlatformListItemDto>;
6522
+ type PlatformControllerMatchPlatformsData = {
5923
6523
  /**
5924
- * Region code for tenant context
6524
+ * Search query Chinese name, English name, or abbreviation
5925
6525
  */
5926
- region: 'cn' | 'us' | 'de' | 'gb';
5927
- };
5928
- type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
5929
- type PriceControllerCreateData = {
6526
+ q: string;
5930
6527
  /**
5931
- * Region code for tenant context
6528
+ * Region code for category override lookup
5932
6529
  */
5933
- region: 'cn' | 'us' | 'de' | 'gb';
5934
- requestBody: CreateBeanPriceDto;
6530
+ region?: string;
5935
6531
  };
5936
- type PriceControllerCreateResponse = PriceResponseDto;
5937
- type PriceControllerFindAllData = {
5938
- /**
5939
- * Filter by currency (e.g., BTC, AAPL, USD)
5940
- */
5941
- currency?: string;
5942
- /**
5943
- * Filter prices from this date (ISO 8601 format)
5944
- */
5945
- dateFrom?: string;
5946
- /**
5947
- * Filter prices to this date (ISO 8601 format)
5948
- */
5949
- dateTo?: string;
5950
- /**
5951
- * Number of items per page (default: 20, max: 100)
5952
- */
5953
- limit?: number;
5954
- /**
5955
- * Page number for pagination (default: 1)
5956
- */
5957
- page?: number;
5958
- /**
5959
- * Filter by quote currency (pricing currency, e.g., USD, CNY)
5960
- */
5961
- quoteCurrency?: string;
5962
- /**
5963
- * Region code for tenant context
5964
- */
5965
- region: 'cn' | 'us' | 'de' | 'gb';
6532
+ type PlatformControllerMatchPlatformsResponse = PlatformMatchResponseDto;
6533
+ type PlatformControllerUpdateData = {
5966
6534
  /**
5967
- * Search term for currency or quoteCurrency (case-insensitive partial match)
6535
+ * Platform ID
5968
6536
  */
5969
- search?: string;
6537
+ id: string;
6538
+ requestBody: UpdatePlatformDto;
5970
6539
  };
5971
- type PriceControllerFindAllResponse = PriceListResponseDto;
5972
- type PriceControllerFindOneData = {
6540
+ type PlatformControllerUpdateResponse = unknown;
6541
+ type PlatformControllerDeleteData = {
5973
6542
  /**
5974
- * Price ID
6543
+ * Platform ID
5975
6544
  */
5976
6545
  id: string;
5977
- /**
5978
- * Region code for tenant context
5979
- */
5980
- region: 'cn' | 'us' | 'de' | 'gb';
5981
6546
  };
5982
- type PriceControllerFindOneResponse = PriceResponseDto;
5983
- type PriceControllerUpdateData = {
6547
+ type PlatformControllerDeleteResponse = void;
6548
+ type DashboardControllerGetNetWorthData = {
5984
6549
  /**
5985
- * Price ID
6550
+ * Date for balance calculation (ISO 8601 format)
5986
6551
  */
5987
- id: string;
6552
+ date?: string;
5988
6553
  /**
5989
6554
  * Region code for tenant context
5990
6555
  */
5991
6556
  region: 'cn' | 'us' | 'de' | 'gb';
5992
- requestBody: UpdateBeanPriceDto;
5993
6557
  };
5994
- type PriceControllerUpdateResponse = PriceResponseDto;
5995
- type PriceControllerDeleteData = {
6558
+ type DashboardControllerGetNetWorthResponse = NetWorthResponseDto;
6559
+ type DashboardControllerGetAccountsData = {
5996
6560
  /**
5997
- * Price ID
6561
+ * Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
5998
6562
  */
5999
- id: string;
6563
+ accountId?: string;
6000
6564
  /**
6001
- * Region code for tenant context
6565
+ * Date for balance calculation (ISO 8601 format)
6002
6566
  */
6003
- region: 'cn' | 'us' | 'de' | 'gb';
6004
- };
6005
- type PriceControllerDeleteResponse = void;
6006
- type PriceControllerBulkCreateData = {
6567
+ date?: string;
6568
+ /**
6569
+ * Grouping strategy
6570
+ */
6571
+ groupBy?: 'platform' | 'assetClass' | 'holdingAssetClass' | 'holdingAssetClassByAccount';
6007
6572
  /**
6008
6573
  * Region code for tenant context
6009
6574
  */
6010
6575
  region: 'cn' | 'us' | 'de' | 'gb';
6011
- requestBody: Array<string>;
6012
6576
  };
6013
- type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
6014
- type ReportingControllerGetPortfolioTrendsData = {
6015
- /**
6016
- * Data granularity
6017
- */
6018
- granularity?: 'day' | 'week' | 'month';
6577
+ type DashboardControllerGetAccountsResponse = AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
6578
+ type DashboardControllerGetCashFlowData = {
6019
6579
  /**
6020
- * Time period
6580
+ * Period in YYYY-MM format
6021
6581
  */
6022
- period?: '1m' | '3m' | '6m' | '1y';
6582
+ period: string;
6023
6583
  /**
6024
6584
  * Region code for tenant context
6025
6585
  */
6026
6586
  region: 'cn' | 'us' | 'de' | 'gb';
6027
6587
  };
6028
- type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
6029
- type ReportingControllerGetCashFlowTrendsData = {
6588
+ type DashboardControllerGetCashFlowResponse = CashFlowResponseDto;
6589
+ type DashboardControllerGetExpensesData = {
6030
6590
  /**
6031
- * Data granularity (accepted for API symmetry; v1 returns month buckets)
6591
+ * Account root to aggregate (expense ^Expenses:, income ^Income:)
6032
6592
  */
6033
- granularity?: 'day' | 'week' | 'month';
6593
+ flow?: 'expense' | 'income';
6034
6594
  /**
6035
- * Time period
6595
+ * Grouping strategy
6596
+ */
6597
+ groupBy?: 'category';
6598
+ /**
6599
+ * Time window (1m = current calendar month)
6036
6600
  */
6037
6601
  period?: '1m' | '3m' | '6m' | '1y';
6038
6602
  /**
@@ -6040,31 +6604,31 @@ type ReportingControllerGetCashFlowTrendsData = {
6040
6604
  */
6041
6605
  region: 'cn' | 'us' | 'de' | 'gb';
6042
6606
  };
6043
- type ReportingControllerGetCashFlowTrendsResponse = CashFlowTrendsResponseDto;
6044
- type ReportingControllerGenerateSnapshotData = {
6607
+ type DashboardControllerGetExpensesResponse = ExpensesByCategoryResponseDto;
6608
+ type HoldingPnlControllerGetHoldingPnlData = {
6045
6609
  /**
6046
- * Region code for tenant context
6610
+ * Scope to a single account
6047
6611
  */
6048
- region: 'cn' | 'us' | 'de' | 'gb';
6612
+ accountId?: string;
6049
6613
  /**
6050
- * Optional date (defaults to today)
6614
+ * As-of date (ISO 8601), defaults to today
6051
6615
  */
6052
- requestBody: GenerateSnapshotBody;
6053
- };
6054
- type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
6055
- type ReportingControllerBackfillSnapshotsData = {
6616
+ asOf?: string;
6617
+ /**
6618
+ * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
6619
+ */
6620
+ method?: 'FIFO' | 'average';
6056
6621
  /**
6057
6622
  * Region code for tenant context
6058
6623
  */
6059
6624
  region: 'cn' | 'us' | 'de' | 'gb';
6060
- requestBody: BackfillSnapshotsBody;
6061
6625
  };
6062
- type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
6626
+ type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
6063
6627
  type ApiKeysControllerCreateApiKeyResponse = unknown;
6064
6628
  type AuthControllerAccessTokenLoginData = {
6065
6629
  requestBody: AnonymousLoginDto;
6066
6630
  };
6067
- type AuthControllerAccessTokenLoginResponse = unknown;
6631
+ type AuthControllerAccessTokenLoginResponse = AnonymousLoginResponseDto;
6068
6632
  type CacheControllerFlushCacheResponse = unknown;
6069
6633
  type ExchangeRateControllerGetExchangeRateData = {
6070
6634
  /**
@@ -6091,6 +6655,29 @@ type HealthControllerResetCircuitBreakerData = {
6091
6655
  type HealthControllerResetCircuitBreakerResponse = unknown;
6092
6656
  type HealthControllerGetMetricsResponse = unknown;
6093
6657
  type InfoControllerGetInfoResponse = unknown;
6658
+ type SymbolControllerSearchData = {
6659
+ /**
6660
+ * Filter by OpenBB asset_type (e.g. stock, etf)
6661
+ */
6662
+ assetType?: string;
6663
+ /**
6664
+ * Filter by exchange code (e.g. US, HK, SS, SZ)
6665
+ */
6666
+ exchange?: string;
6667
+ /**
6668
+ * Maximum number of results (clamped 1..50)
6669
+ */
6670
+ limit?: number;
6671
+ /**
6672
+ * Search term — matched against symbol and instrument name. Empty string returns [].
6673
+ */
6674
+ q: string;
6675
+ };
6676
+ type SymbolControllerSearchResponse = Array<SymbolSearchResultDto>;
6677
+ type SymbolControllerGetQuoteData = {
6678
+ symbol: string;
6679
+ };
6680
+ type SymbolControllerGetQuoteResponse = SymbolQuoteDto;
6094
6681
  type $OpenApiTs = {
6095
6682
  '/api/v1/{region}/bean/accounts': {
6096
6683
  post: {
@@ -6155,7 +6742,7 @@ type $OpenApiTs = {
6155
6742
  */
6156
6743
  404: unknown;
6157
6744
  /**
6158
- * Account has transactions and cannot be deleted
6745
+ * Account has active transactions and cannot be deleted
6159
6746
  */
6160
6747
  409: unknown;
6161
6748
  };
@@ -6199,6 +6786,25 @@ type $OpenApiTs = {
6199
6786
  };
6200
6787
  };
6201
6788
  };
6789
+ '/api/v1/{region}/bean/accounts/{id}/opening-balance': {
6790
+ post: {
6791
+ req: AccountControllerAddOpeningBalanceData;
6792
+ res: {
6793
+ /**
6794
+ * Opening-balance transaction created
6795
+ */
6796
+ 201: OpeningBalanceResultDto;
6797
+ /**
6798
+ * Account not found
6799
+ */
6800
+ 404: unknown;
6801
+ /**
6802
+ * An opening balance already exists for this account
6803
+ */
6804
+ 409: unknown;
6805
+ };
6806
+ };
6807
+ };
6202
6808
  '/api/v1/{region}/bean/account-standards': {
6203
6809
  get: {
6204
6810
  req: AccountStandardsControllerGetTemplatesData;
@@ -6807,6 +7413,90 @@ type $OpenApiTs = {
6807
7413
  };
6808
7414
  };
6809
7415
  };
7416
+ '/api/v1/{region}/bean/prices': {
7417
+ post: {
7418
+ req: PriceControllerCreateData;
7419
+ res: {
7420
+ /**
7421
+ * Price created successfully
7422
+ */
7423
+ 201: PriceResponseDto;
7424
+ /**
7425
+ * Currency or quoteCurrency commodity not found
7426
+ */
7427
+ 404: unknown;
7428
+ /**
7429
+ * Price already exists for this currency pair and date
7430
+ */
7431
+ 409: unknown;
7432
+ };
7433
+ };
7434
+ get: {
7435
+ req: PriceControllerFindAllData;
7436
+ res: {
7437
+ /**
7438
+ * Prices retrieved successfully
7439
+ */
7440
+ 200: PriceListResponseDto;
7441
+ };
7442
+ };
7443
+ };
7444
+ '/api/v1/{region}/bean/prices/{id}': {
7445
+ get: {
7446
+ req: PriceControllerFindOneData;
7447
+ res: {
7448
+ /**
7449
+ * Price retrieved successfully
7450
+ */
7451
+ 200: PriceResponseDto;
7452
+ /**
7453
+ * Price not found
7454
+ */
7455
+ 404: unknown;
7456
+ };
7457
+ };
7458
+ put: {
7459
+ req: PriceControllerUpdateData;
7460
+ res: {
7461
+ /**
7462
+ * Price updated successfully
7463
+ */
7464
+ 200: PriceResponseDto;
7465
+ /**
7466
+ * Price not found
7467
+ */
7468
+ 404: unknown;
7469
+ /**
7470
+ * Updated price conflicts with existing price
7471
+ */
7472
+ 409: unknown;
7473
+ };
7474
+ };
7475
+ delete: {
7476
+ req: PriceControllerDeleteData;
7477
+ res: {
7478
+ /**
7479
+ * Price deleted successfully
7480
+ */
7481
+ 204: void;
7482
+ /**
7483
+ * Price not found
7484
+ */
7485
+ 404: unknown;
7486
+ };
7487
+ };
7488
+ };
7489
+ '/api/v1/{region}/bean/prices/bulk': {
7490
+ post: {
7491
+ req: PriceControllerBulkCreateData;
7492
+ res: {
7493
+ /**
7494
+ * Prices created successfully
7495
+ */
7496
+ 201: Array<PriceResponseDto>;
7497
+ };
7498
+ };
7499
+ };
6810
7500
  '/api/v1/{region}/bean/recurring-rules': {
6811
7501
  post: {
6812
7502
  req: RecurringRuleControllerCreateData;
@@ -7057,397 +7747,469 @@ type $OpenApiTs = {
7057
7747
  };
7058
7748
  };
7059
7749
  };
7060
- '/api/v1/{region}/bean/transaction-rules': {
7750
+ '/api/v1/{region}/reporting/portfolio/trends': {
7751
+ get: {
7752
+ req: ReportingControllerGetPortfolioTrendsData;
7753
+ res: {
7754
+ /**
7755
+ * Trends retrieved successfully
7756
+ */
7757
+ 200: PortfolioTrendsResponseDto;
7758
+ /**
7759
+ * User not authenticated
7760
+ */
7761
+ 401: unknown;
7762
+ };
7763
+ };
7764
+ };
7765
+ '/api/v1/{region}/reporting/cash-flow/trends': {
7766
+ get: {
7767
+ req: ReportingControllerGetCashFlowTrendsData;
7768
+ res: {
7769
+ /**
7770
+ * Cash-flow trends retrieved successfully
7771
+ */
7772
+ 200: CashFlowTrendsResponseDto;
7773
+ /**
7774
+ * User not authenticated
7775
+ */
7776
+ 401: unknown;
7777
+ };
7778
+ };
7779
+ };
7780
+ '/api/v1/{region}/reporting/snapshots/generate': {
7061
7781
  post: {
7062
- req: TransactionRuleControllerCreateData;
7782
+ req: ReportingControllerGenerateSnapshotData;
7063
7783
  res: {
7064
7784
  /**
7065
- * Rule updated successfully (upsert mode)
7785
+ * Snapshot generated successfully
7066
7786
  */
7067
- 200: TransactionRuleResponseDto;
7787
+ 200: GenerateSnapshotResponse;
7068
7788
  /**
7069
- * Validation failed
7789
+ * Invalid date format
7070
7790
  */
7071
- 400: ApiProblemResponseDto;
7791
+ 400: unknown;
7792
+ /**
7793
+ * User not authenticated
7794
+ */
7795
+ 401: unknown;
7796
+ };
7797
+ };
7798
+ };
7799
+ '/api/v1/{region}/reporting/snapshots/backfill': {
7800
+ post: {
7801
+ req: ReportingControllerBackfillSnapshotsData;
7802
+ res: {
7803
+ /**
7804
+ * Backfill completed successfully
7805
+ */
7806
+ 200: BackfillSnapshotsResponse;
7807
+ /**
7808
+ * Invalid date format or range
7809
+ */
7810
+ 400: unknown;
7811
+ /**
7812
+ * User not authenticated
7813
+ */
7814
+ 401: unknown;
7815
+ /**
7816
+ * Backfill already in progress for this user
7817
+ */
7818
+ 409: unknown;
7819
+ };
7820
+ };
7821
+ };
7822
+ '/api/v1/users': {
7823
+ delete: {
7824
+ req: UserControllerDeleteOwnUserData;
7825
+ res: {
7072
7826
  /**
7073
- * Unauthorized
7827
+ * User deleted successfully
7074
7828
  */
7075
- 401: ApiProblemResponseDto;
7829
+ 204: void;
7076
7830
  /**
7077
- * Resource conflict - another process is updating this rule
7831
+ * Invalid access token
7078
7832
  */
7079
- 409: ApiProblemResponseDto;
7833
+ 403: unknown;
7080
7834
  };
7081
7835
  };
7082
7836
  get: {
7083
- req: TransactionRuleControllerListData;
7837
+ req: UserControllerGetUserData;
7084
7838
  res: {
7085
7839
  /**
7086
- * List of rules
7087
- */
7088
- 200: TransactionRuleListResponseDto;
7089
- /**
7090
- * Unauthorized
7840
+ * User retrieved successfully
7091
7841
  */
7092
- 401: ApiProblemResponseDto;
7842
+ 200: unknown;
7093
7843
  };
7094
7844
  };
7095
- };
7096
- '/api/v1/{region}/bean/transaction-rules/validate': {
7097
7845
  post: {
7098
- req: TransactionRuleControllerValidateData;
7846
+ req: UserControllerSignupUserData;
7099
7847
  res: {
7100
7848
  /**
7101
- * Validation result
7849
+ * User created successfully
7102
7850
  */
7103
- 200: ValidateRuleResponseDto;
7851
+ 201: SignupResponseDto;
7104
7852
  /**
7105
- * Validation failed
7853
+ * Invalid Turnstile token (when Turnstile is enabled)
7106
7854
  */
7107
- 400: ApiProblemResponseDto;
7855
+ 400: unknown;
7108
7856
  /**
7109
- * Unauthorized
7857
+ * User signup is disabled
7110
7858
  */
7111
- 401: ApiProblemResponseDto;
7859
+ 403: unknown;
7112
7860
  };
7113
7861
  };
7114
7862
  };
7115
- '/api/v1/{region}/bean/transaction-rules/bulk': {
7116
- post: {
7117
- req: TransactionRuleControllerBulkCreateData;
7863
+ '/api/v1/users/{id}': {
7864
+ delete: {
7865
+ req: UserControllerDeleteUserData;
7118
7866
  res: {
7119
7867
  /**
7120
- * Bulk create completed
7121
- */
7122
- 201: BulkCreateRulesResponseDto;
7123
- /**
7124
- * Invalid bulk create data
7868
+ * User deleted successfully
7125
7869
  */
7126
- 400: ApiProblemResponseDto;
7870
+ 204: void;
7127
7871
  /**
7128
- * Unauthorized
7872
+ * Cannot delete own account or insufficient permissions
7129
7873
  */
7130
- 401: ApiProblemResponseDto;
7874
+ 403: unknown;
7131
7875
  };
7132
7876
  };
7133
7877
  };
7134
- '/api/v1/{region}/bean/transaction-rules/export/{format}': {
7878
+ '/api/v1/users/{id}/info': {
7135
7879
  get: {
7136
- req: TransactionRuleControllerExportData;
7880
+ req: UserControllerGetUserInfoData;
7137
7881
  res: {
7138
7882
  /**
7139
- * Exported rules
7140
- */
7141
- 200: ExportRulesResponseDto;
7142
- /**
7143
- * Unsupported format
7883
+ * User info retrieved successfully
7144
7884
  */
7145
- 400: ApiProblemResponseDto;
7885
+ 200: unknown;
7146
7886
  /**
7147
- * Unauthorized
7887
+ * Cannot access other user info without admin permission
7148
7888
  */
7149
- 401: ApiProblemResponseDto;
7889
+ 403: unknown;
7150
7890
  };
7151
7891
  };
7152
7892
  };
7153
- '/api/v1/{region}/bean/transaction-rules/statistics/{period}': {
7154
- get: {
7155
- req: TransactionRuleControllerGetStatisticsData;
7893
+ '/api/v1/users/setting': {
7894
+ put: {
7895
+ req: UserControllerUpdateUserSettingData;
7156
7896
  res: {
7157
7897
  /**
7158
- * Rule statistics
7898
+ * Settings updated successfully
7159
7899
  */
7160
- 200: RuleStatisticsResponseDto;
7900
+ 200: unknown;
7161
7901
  /**
7162
- * Unauthorized
7902
+ * Insufficient permissions
7163
7903
  */
7164
- 401: ApiProblemResponseDto;
7904
+ 403: unknown;
7165
7905
  };
7166
7906
  };
7167
7907
  };
7168
- '/api/v1/{region}/bean/transaction-rules/{ruleId}': {
7908
+ '/api/v1/users/settings-by-page': {
7169
7909
  get: {
7170
- req: TransactionRuleControllerGetDetailData;
7910
+ req: UserControllerGetAllUserSettingsByPageData;
7171
7911
  res: {
7172
7912
  /**
7173
- * Rule details
7174
- */
7175
- 200: TransactionRuleResponseDto;
7176
- /**
7177
- * Unauthorized
7178
- */
7179
- 401: ApiProblemResponseDto;
7180
- /**
7181
- * Forbidden - not owner of rule
7182
- */
7183
- 403: ApiProblemResponseDto;
7184
- /**
7185
- * Rule not found
7913
+ * Settings list retrieved successfully
7186
7914
  */
7187
- 404: ApiProblemResponseDto;
7915
+ 200: unknown;
7188
7916
  };
7189
7917
  };
7190
- put: {
7191
- req: TransactionRuleControllerUpdateData;
7918
+ };
7919
+ '/api/v1/users/asset-liability-summary': {
7920
+ get: {
7192
7921
  res: {
7193
7922
  /**
7194
- * Rule updated successfully
7923
+ * Summary retrieved successfully
7195
7924
  */
7196
- 200: TransactionRuleResponseDto;
7925
+ 200: unknown;
7926
+ };
7927
+ };
7928
+ };
7929
+ '/api/v1/admin/properties': {
7930
+ get: {
7931
+ res: {
7197
7932
  /**
7198
- * Validation failed
7933
+ * Properties retrieved successfully
7199
7934
  */
7200
- 400: ApiProblemResponseDto;
7935
+ 200: unknown;
7201
7936
  /**
7202
7937
  * Unauthorized
7203
7938
  */
7204
- 401: ApiProblemResponseDto;
7205
- /**
7206
- * Forbidden - not owner of rule
7207
- */
7208
- 403: ApiProblemResponseDto;
7209
- /**
7210
- * Rule not found
7211
- */
7212
- 404: ApiProblemResponseDto;
7939
+ 401: unknown;
7213
7940
  /**
7214
- * Resource conflict - rule is being modified by another process
7941
+ * Forbidden - insufficient permissions
7215
7942
  */
7216
- 409: ApiProblemResponseDto;
7943
+ 403: unknown;
7217
7944
  };
7218
7945
  };
7219
- delete: {
7220
- req: TransactionRuleControllerDeleteData;
7946
+ };
7947
+ '/api/v1/admin/properties/{key}': {
7948
+ get: {
7949
+ req: PropertyControllerGetByKeyData;
7221
7950
  res: {
7222
7951
  /**
7223
- * Rule deleted successfully
7952
+ * Property retrieved successfully
7224
7953
  */
7225
- 204: void;
7954
+ 200: unknown;
7226
7955
  /**
7227
7956
  * Unauthorized
7228
7957
  */
7229
- 401: ApiProblemResponseDto;
7230
- /**
7231
- * Forbidden - not owner of rule
7232
- */
7233
- 403: ApiProblemResponseDto;
7958
+ 401: unknown;
7234
7959
  /**
7235
- * Rule not found
7960
+ * Forbidden - insufficient permissions
7236
7961
  */
7237
- 404: ApiProblemResponseDto;
7962
+ 403: unknown;
7238
7963
  /**
7239
- * Resource conflict - rule is being modified by another process
7964
+ * Property not found
7240
7965
  */
7241
- 409: ApiProblemResponseDto;
7966
+ 404: unknown;
7242
7967
  };
7243
7968
  };
7244
- };
7245
- '/api/v1/{region}/bean/transaction-rules/{ruleId}/test': {
7246
- post: {
7247
- req: TransactionRuleControllerTestData;
7969
+ put: {
7970
+ req: PropertyControllerUpdateData;
7248
7971
  res: {
7249
7972
  /**
7250
- * Test result
7973
+ * Property updated successfully
7251
7974
  */
7252
- 200: TestRuleResponseDto;
7975
+ 200: unknown;
7253
7976
  /**
7254
7977
  * Unauthorized
7255
7978
  */
7256
- 401: ApiProblemResponseDto;
7257
- /**
7258
- * Forbidden - not owner of rule
7259
- */
7260
- 403: ApiProblemResponseDto;
7979
+ 401: unknown;
7261
7980
  /**
7262
- * Rule not found
7981
+ * Forbidden - insufficient permissions
7263
7982
  */
7264
- 404: ApiProblemResponseDto;
7983
+ 403: unknown;
7265
7984
  };
7266
7985
  };
7267
- };
7268
- '/api/v1/users': {
7269
7986
  delete: {
7270
- req: UserControllerDeleteOwnUserData;
7987
+ req: PropertyControllerDeleteData;
7271
7988
  res: {
7272
7989
  /**
7273
- * User deleted successfully
7990
+ * Property deleted successfully
7274
7991
  */
7275
7992
  204: void;
7276
7993
  /**
7277
- * Invalid access token
7994
+ * Unauthorized
7995
+ */
7996
+ 401: unknown;
7997
+ /**
7998
+ * Forbidden - insufficient permissions
7278
7999
  */
7279
8000
  403: unknown;
7280
- };
7281
- };
7282
- get: {
7283
- req: UserControllerGetUserData;
7284
- res: {
7285
8001
  /**
7286
- * User retrieved successfully
8002
+ * Property not found
7287
8003
  */
7288
- 200: unknown;
8004
+ 404: unknown;
7289
8005
  };
7290
8006
  };
8007
+ };
8008
+ '/api/v1/{region}/bean/transaction-rules': {
7291
8009
  post: {
7292
- req: UserControllerSignupUserData;
8010
+ req: TransactionRuleControllerCreateData;
7293
8011
  res: {
7294
8012
  /**
7295
- * User created successfully
8013
+ * Rule updated successfully (upsert mode)
7296
8014
  */
7297
- 201: unknown;
8015
+ 200: TransactionRuleResponseDto;
7298
8016
  /**
7299
- * Invalid Turnstile token (when Turnstile is enabled)
8017
+ * Validation failed
7300
8018
  */
7301
- 400: unknown;
8019
+ 400: ApiProblemResponseDto;
7302
8020
  /**
7303
- * User signup is disabled
8021
+ * Unauthorized
7304
8022
  */
7305
- 403: unknown;
8023
+ 401: ApiProblemResponseDto;
8024
+ /**
8025
+ * Resource conflict - another process is updating this rule
8026
+ */
8027
+ 409: ApiProblemResponseDto;
7306
8028
  };
7307
8029
  };
7308
- };
7309
- '/api/v1/users/{id}': {
7310
- delete: {
7311
- req: UserControllerDeleteUserData;
8030
+ get: {
8031
+ req: TransactionRuleControllerListData;
7312
8032
  res: {
7313
8033
  /**
7314
- * User deleted successfully
8034
+ * List of rules
7315
8035
  */
7316
- 204: void;
8036
+ 200: TransactionRuleListResponseDto;
7317
8037
  /**
7318
- * Cannot delete own account or insufficient permissions
8038
+ * Unauthorized
7319
8039
  */
7320
- 403: unknown;
8040
+ 401: ApiProblemResponseDto;
7321
8041
  };
7322
8042
  };
7323
8043
  };
7324
- '/api/v1/users/{id}/info': {
7325
- get: {
7326
- req: UserControllerGetUserInfoData;
8044
+ '/api/v1/{region}/bean/transaction-rules/validate': {
8045
+ post: {
8046
+ req: TransactionRuleControllerValidateData;
7327
8047
  res: {
7328
8048
  /**
7329
- * User info retrieved successfully
8049
+ * Validation result
7330
8050
  */
7331
- 200: unknown;
8051
+ 200: ValidateRuleResponseDto;
7332
8052
  /**
7333
- * Cannot access other user info without admin permission
8053
+ * Validation failed
7334
8054
  */
7335
- 403: unknown;
8055
+ 400: ApiProblemResponseDto;
8056
+ /**
8057
+ * Unauthorized
8058
+ */
8059
+ 401: ApiProblemResponseDto;
7336
8060
  };
7337
8061
  };
7338
8062
  };
7339
- '/api/v1/users/setting': {
7340
- put: {
7341
- req: UserControllerUpdateUserSettingData;
8063
+ '/api/v1/{region}/bean/transaction-rules/bulk': {
8064
+ post: {
8065
+ req: TransactionRuleControllerBulkCreateData;
7342
8066
  res: {
7343
8067
  /**
7344
- * Settings updated successfully
8068
+ * Bulk create completed
7345
8069
  */
7346
- 200: unknown;
8070
+ 201: BulkCreateRulesResponseDto;
7347
8071
  /**
7348
- * Insufficient permissions
8072
+ * Invalid bulk create data
7349
8073
  */
7350
- 403: unknown;
8074
+ 400: ApiProblemResponseDto;
8075
+ /**
8076
+ * Unauthorized
8077
+ */
8078
+ 401: ApiProblemResponseDto;
7351
8079
  };
7352
8080
  };
7353
8081
  };
7354
- '/api/v1/users/settings-by-page': {
8082
+ '/api/v1/{region}/bean/transaction-rules/export/{format}': {
7355
8083
  get: {
7356
- req: UserControllerGetAllUserSettingsByPageData;
8084
+ req: TransactionRuleControllerExportData;
7357
8085
  res: {
7358
8086
  /**
7359
- * Settings list retrieved successfully
8087
+ * Exported rules
7360
8088
  */
7361
- 200: unknown;
8089
+ 200: ExportRulesResponseDto;
8090
+ /**
8091
+ * Unsupported format
8092
+ */
8093
+ 400: ApiProblemResponseDto;
8094
+ /**
8095
+ * Unauthorized
8096
+ */
8097
+ 401: ApiProblemResponseDto;
7362
8098
  };
7363
8099
  };
7364
8100
  };
7365
- '/api/v1/users/asset-liability-summary': {
8101
+ '/api/v1/{region}/bean/transaction-rules/statistics/{period}': {
7366
8102
  get: {
8103
+ req: TransactionRuleControllerGetStatisticsData;
7367
8104
  res: {
7368
8105
  /**
7369
- * Summary retrieved successfully
8106
+ * Rule statistics
7370
8107
  */
7371
- 200: unknown;
8108
+ 200: RuleStatisticsResponseDto;
8109
+ /**
8110
+ * Unauthorized
8111
+ */
8112
+ 401: ApiProblemResponseDto;
7372
8113
  };
7373
8114
  };
7374
8115
  };
7375
- '/api/v1/admin/properties': {
8116
+ '/api/v1/{region}/bean/transaction-rules/{ruleId}': {
7376
8117
  get: {
8118
+ req: TransactionRuleControllerGetDetailData;
7377
8119
  res: {
7378
8120
  /**
7379
- * Properties retrieved successfully
8121
+ * Rule details
7380
8122
  */
7381
- 200: unknown;
8123
+ 200: TransactionRuleResponseDto;
7382
8124
  /**
7383
8125
  * Unauthorized
7384
8126
  */
7385
- 401: unknown;
8127
+ 401: ApiProblemResponseDto;
7386
8128
  /**
7387
- * Forbidden - insufficient permissions
8129
+ * Forbidden - not owner of rule
7388
8130
  */
7389
- 403: unknown;
8131
+ 403: ApiProblemResponseDto;
8132
+ /**
8133
+ * Rule not found
8134
+ */
8135
+ 404: ApiProblemResponseDto;
7390
8136
  };
7391
8137
  };
7392
- };
7393
- '/api/v1/admin/properties/{key}': {
7394
- get: {
7395
- req: PropertyControllerGetByKeyData;
8138
+ put: {
8139
+ req: TransactionRuleControllerUpdateData;
7396
8140
  res: {
7397
8141
  /**
7398
- * Property retrieved successfully
8142
+ * Rule updated successfully
7399
8143
  */
7400
- 200: unknown;
8144
+ 200: TransactionRuleResponseDto;
8145
+ /**
8146
+ * Validation failed
8147
+ */
8148
+ 400: ApiProblemResponseDto;
7401
8149
  /**
7402
8150
  * Unauthorized
7403
8151
  */
7404
- 401: unknown;
8152
+ 401: ApiProblemResponseDto;
7405
8153
  /**
7406
- * Forbidden - insufficient permissions
8154
+ * Forbidden - not owner of rule
7407
8155
  */
7408
- 403: unknown;
8156
+ 403: ApiProblemResponseDto;
7409
8157
  /**
7410
- * Property not found
8158
+ * Rule not found
7411
8159
  */
7412
- 404: unknown;
8160
+ 404: ApiProblemResponseDto;
8161
+ /**
8162
+ * Resource conflict - rule is being modified by another process
8163
+ */
8164
+ 409: ApiProblemResponseDto;
7413
8165
  };
7414
8166
  };
7415
- put: {
7416
- req: PropertyControllerUpdateData;
8167
+ delete: {
8168
+ req: TransactionRuleControllerDeleteData;
7417
8169
  res: {
7418
8170
  /**
7419
- * Property updated successfully
8171
+ * Rule deleted successfully
7420
8172
  */
7421
- 200: unknown;
8173
+ 204: void;
7422
8174
  /**
7423
8175
  * Unauthorized
7424
8176
  */
7425
- 401: unknown;
8177
+ 401: ApiProblemResponseDto;
7426
8178
  /**
7427
- * Forbidden - insufficient permissions
8179
+ * Forbidden - not owner of rule
7428
8180
  */
7429
- 403: unknown;
8181
+ 403: ApiProblemResponseDto;
8182
+ /**
8183
+ * Rule not found
8184
+ */
8185
+ 404: ApiProblemResponseDto;
8186
+ /**
8187
+ * Resource conflict - rule is being modified by another process
8188
+ */
8189
+ 409: ApiProblemResponseDto;
7430
8190
  };
7431
8191
  };
7432
- delete: {
7433
- req: PropertyControllerDeleteData;
8192
+ };
8193
+ '/api/v1/{region}/bean/transaction-rules/{ruleId}/test': {
8194
+ post: {
8195
+ req: TransactionRuleControllerTestData;
7434
8196
  res: {
7435
8197
  /**
7436
- * Property deleted successfully
8198
+ * Test result
7437
8199
  */
7438
- 204: void;
8200
+ 200: TestRuleResponseDto;
7439
8201
  /**
7440
8202
  * Unauthorized
7441
8203
  */
7442
- 401: unknown;
8204
+ 401: ApiProblemResponseDto;
7443
8205
  /**
7444
- * Forbidden - insufficient permissions
8206
+ * Forbidden - not owner of rule
7445
8207
  */
7446
- 403: unknown;
8208
+ 403: ApiProblemResponseDto;
7447
8209
  /**
7448
- * Property not found
8210
+ * Rule not found
7449
8211
  */
7450
- 404: unknown;
8212
+ 404: ApiProblemResponseDto;
7451
8213
  };
7452
8214
  };
7453
8215
  };
@@ -7547,6 +8309,85 @@ type $OpenApiTs = {
7547
8309
  };
7548
8310
  };
7549
8311
  };
8312
+ '/api/v1/{region}/bean/onboarding': {
8313
+ post: {
8314
+ req: OnboardingControllerBootstrapData;
8315
+ res: {
8316
+ /**
8317
+ * Onboarding bootstrap result.
8318
+ */
8319
+ 201: unknown;
8320
+ /**
8321
+ * Invalid region/account path/duplicate paths.
8322
+ */
8323
+ 422: unknown;
8324
+ };
8325
+ };
8326
+ };
8327
+ '/api/v1/{region}/bean/reconciliations': {
8328
+ post: {
8329
+ req: ReconciliationControllerComputeData;
8330
+ res: {
8331
+ /**
8332
+ * Reconciliation preview
8333
+ */
8334
+ 200: ReconciliationComputeResultDto;
8335
+ /**
8336
+ * Account not found
8337
+ */
8338
+ 404: unknown;
8339
+ };
8340
+ };
8341
+ };
8342
+ '/api/v1/{region}/bean/reconciliations/assert': {
8343
+ post: {
8344
+ req: ReconciliationControllerAssertData;
8345
+ res: {
8346
+ /**
8347
+ * Balance assertion recorded
8348
+ */
8349
+ 201: ReconciliationRecordDto;
8350
+ /**
8351
+ * Account not found
8352
+ */
8353
+ 404: unknown;
8354
+ };
8355
+ };
8356
+ };
8357
+ '/api/v1/{region}/bean/reconciliations/pad': {
8358
+ post: {
8359
+ req: ReconciliationControllerPadData;
8360
+ res: {
8361
+ /**
8362
+ * Pad adjusting entry generated
8363
+ */
8364
+ 201: PadResultDto;
8365
+ /**
8366
+ * Book already within tolerance — no pad needed
8367
+ */
8368
+ 400: unknown;
8369
+ /**
8370
+ * Account not found
8371
+ */
8372
+ 404: unknown;
8373
+ };
8374
+ };
8375
+ };
8376
+ '/api/v1/{region}/bean/accounts/{accountId}/reconciliations': {
8377
+ get: {
8378
+ req: ReconciliationControllerHistoryData;
8379
+ res: {
8380
+ /**
8381
+ * Reconciliation history
8382
+ */
8383
+ 200: Array<ReconciliationRecordDto>;
8384
+ /**
8385
+ * Account not found
8386
+ */
8387
+ 404: unknown;
8388
+ };
8389
+ };
8390
+ };
7550
8391
  '/api/v1/{region}/bean/export/beancount': {
7551
8392
  get: {
7552
8393
  res: {
@@ -7689,83 +8530,11 @@ type $OpenApiTs = {
7689
8530
  /**
7690
8531
  * Configuration reset successfully
7691
8532
  */
7692
- 200: ImporterConfigDto;
7693
- /**
7694
- * Invalid input - Unsupported importer
7695
- */
7696
- 400: ApiProblemResponseDto;
7697
- };
7698
- };
7699
- };
7700
- '/api/v1/bean/platforms': {
7701
- get: {
7702
- res: {
7703
- /**
7704
- * List of platforms with binding and account counts
7705
- */
7706
- 200: unknown;
7707
- };
7708
- };
7709
- post: {
7710
- req: PlatformControllerCreateData;
7711
- res: {
7712
- /**
7713
- * Platform created successfully
7714
- */
7715
- 201: unknown;
7716
- /**
7717
- * Platform already exists
7718
- */
7719
- 409: unknown;
7720
- };
7721
- };
7722
- };
7723
- '/api/v1/bean/platforms/list': {
7724
- get: {
7725
- res: {
7726
- /**
7727
- * List of platforms with user binding status
7728
- */
7729
- 200: unknown;
7730
- };
7731
- };
7732
- };
7733
- '/api/v1/bean/platforms/match': {
7734
- get: {
7735
- req: PlatformControllerMatchPlatformsData;
7736
- res: {
7737
- /**
7738
- * List of matching platforms with suggested segment names
7739
- */
7740
- 200: unknown;
7741
- };
7742
- };
7743
- };
7744
- '/api/v1/bean/platforms/{id}': {
7745
- put: {
7746
- req: PlatformControllerUpdateData;
7747
- res: {
7748
- /**
7749
- * Platform updated successfully
7750
- */
7751
- 200: unknown;
7752
- /**
7753
- * Platform not found
7754
- */
7755
- 404: unknown;
7756
- };
7757
- };
7758
- delete: {
7759
- req: PlatformControllerDeleteData;
7760
- res: {
7761
- /**
7762
- * Platform deleted successfully
7763
- */
7764
- 204: void;
8533
+ 200: ImporterConfigDto;
7765
8534
  /**
7766
- * Platform not found
8535
+ * Invalid input - Unsupported importer
7767
8536
  */
7768
- 404: unknown;
8537
+ 400: ApiProblemResponseDto;
7769
8538
  };
7770
8539
  };
7771
8540
  };
@@ -7822,6 +8591,54 @@ type $OpenApiTs = {
7822
8591
  };
7823
8592
  };
7824
8593
  };
8594
+ '/api/v1/{region}/bean/external-account-links': {
8595
+ post: {
8596
+ req: ExternalAccountLinkControllerCreateData;
8597
+ res: {
8598
+ /**
8599
+ * Link created.
8600
+ */
8601
+ 201: ExternalAccountLinkResponseDto;
8602
+ /**
8603
+ * beanAccountId not owned, or an active link already exists.
8604
+ */
8605
+ 422: unknown;
8606
+ };
8607
+ };
8608
+ get: {
8609
+ req: ExternalAccountLinkControllerFindAllData;
8610
+ res: {
8611
+ /**
8612
+ * Links retrieved.
8613
+ */
8614
+ 200: ExternalAccountLinkListResponseDto;
8615
+ };
8616
+ };
8617
+ };
8618
+ '/api/v1/{region}/bean/external-account-links/{id}': {
8619
+ get: {
8620
+ req: ExternalAccountLinkControllerFindOneData;
8621
+ res: {
8622
+ /**
8623
+ * Link retrieved.
8624
+ */
8625
+ 200: ExternalAccountLinkResponseDto;
8626
+ /**
8627
+ * Link not found or not owned by the user.
8628
+ */
8629
+ 422: unknown;
8630
+ };
8631
+ };
8632
+ delete: {
8633
+ req: ExternalAccountLinkControllerRemoveData;
8634
+ res: {
8635
+ /**
8636
+ * Link soft-deleted; historical transactions are unaffected.
8637
+ */
8638
+ 204: void;
8639
+ };
8640
+ };
8641
+ };
7825
8642
  '/api/v1/{region}/bean/import/parser-telemetry': {
7826
8643
  post: {
7827
8644
  req: TelemetryControllerReportTelemetryData;
@@ -7910,185 +8727,101 @@ type $OpenApiTs = {
7910
8727
  };
7911
8728
  };
7912
8729
  };
7913
- '/api/v1/{region}/dashboard/net-worth': {
7914
- get: {
7915
- req: DashboardControllerGetNetWorthData;
7916
- res: {
7917
- /**
7918
- * Net worth retrieved successfully
7919
- */
7920
- 200: NetWorthResponseDto;
7921
- /**
7922
- * User not authenticated
7923
- */
7924
- 401: unknown;
7925
- };
7926
- };
7927
- };
7928
- '/api/v1/{region}/dashboard/accounts': {
7929
- get: {
7930
- req: DashboardControllerGetAccountsData;
7931
- res: {
7932
- /**
7933
- * Accounts retrieved successfully. Response type depends on groupBy parameter.
7934
- */
7935
- 200: AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
7936
- /**
7937
- * User not authenticated
7938
- */
7939
- 401: unknown;
7940
- };
7941
- };
7942
- };
7943
- '/api/v1/{region}/dashboard/cash-flow': {
7944
- get: {
7945
- req: DashboardControllerGetCashFlowData;
7946
- res: {
7947
- /**
7948
- * Cash flow retrieved successfully
7949
- */
7950
- 200: CashFlowResponseDto;
7951
- /**
7952
- * Invalid period format
7953
- */
7954
- 400: unknown;
7955
- /**
7956
- * User not authenticated
7957
- */
7958
- 401: unknown;
7959
- };
7960
- };
7961
- };
7962
- '/api/v1/{region}/dashboard/expenses': {
7963
- get: {
7964
- req: DashboardControllerGetExpensesData;
7965
- res: {
7966
- /**
7967
- * Expenses retrieved successfully
7968
- */
7969
- 200: ExpensesByCategoryResponseDto;
7970
- /**
7971
- * Invalid groupBy or period
7972
- */
7973
- 400: unknown;
7974
- /**
7975
- * User not authenticated
7976
- */
7977
- 401: unknown;
7978
- };
7979
- };
7980
- };
7981
- '/api/v1/{region}/investment/holdings/pnl': {
8730
+ '/api/v1/bean/platforms': {
7982
8731
  get: {
7983
- req: HoldingPnlControllerGetHoldingPnlData;
7984
8732
  res: {
7985
8733
  /**
7986
- * Holding P&L retrieved successfully
7987
- */
7988
- 200: HoldingPnlResponseDto;
7989
- /**
7990
- * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
7991
- */
7992
- 400: unknown;
7993
- /**
7994
- * User not authenticated
8734
+ * List of platforms with binding and account counts
7995
8735
  */
7996
- 401: unknown;
8736
+ 200: unknown;
7997
8737
  };
7998
8738
  };
7999
- };
8000
- '/api/v1/{region}/bean/prices': {
8001
8739
  post: {
8002
- req: PriceControllerCreateData;
8740
+ req: PlatformControllerCreateData;
8003
8741
  res: {
8004
8742
  /**
8005
- * Price created successfully
8006
- */
8007
- 201: PriceResponseDto;
8008
- /**
8009
- * Currency or quoteCurrency commodity not found
8743
+ * Platform created successfully
8010
8744
  */
8011
- 404: unknown;
8745
+ 201: unknown;
8012
8746
  /**
8013
- * Price already exists for this currency pair and date
8747
+ * Platform already exists
8014
8748
  */
8015
8749
  409: unknown;
8016
8750
  };
8017
8751
  };
8752
+ };
8753
+ '/api/v1/bean/platforms/list': {
8018
8754
  get: {
8019
- req: PriceControllerFindAllData;
8020
8755
  res: {
8021
8756
  /**
8022
- * Prices retrieved successfully
8757
+ * List of platforms with user binding status
8023
8758
  */
8024
- 200: PriceListResponseDto;
8759
+ 200: Array<PlatformListItemDto>;
8025
8760
  };
8026
8761
  };
8027
8762
  };
8028
- '/api/v1/{region}/bean/prices/{id}': {
8763
+ '/api/v1/bean/platforms/match': {
8029
8764
  get: {
8030
- req: PriceControllerFindOneData;
8765
+ req: PlatformControllerMatchPlatformsData;
8031
8766
  res: {
8032
8767
  /**
8033
- * Price retrieved successfully
8034
- */
8035
- 200: PriceResponseDto;
8036
- /**
8037
- * Price not found
8768
+ * Matching platforms with overall match type and truncation flag
8038
8769
  */
8039
- 404: unknown;
8770
+ 200: PlatformMatchResponseDto;
8040
8771
  };
8041
8772
  };
8773
+ };
8774
+ '/api/v1/bean/platforms/{id}': {
8042
8775
  put: {
8043
- req: PriceControllerUpdateData;
8776
+ req: PlatformControllerUpdateData;
8044
8777
  res: {
8045
8778
  /**
8046
- * Price updated successfully
8779
+ * Platform updated successfully
8047
8780
  */
8048
- 200: PriceResponseDto;
8781
+ 200: unknown;
8049
8782
  /**
8050
- * Price not found
8783
+ * Platform not found
8051
8784
  */
8052
8785
  404: unknown;
8053
- /**
8054
- * Updated price conflicts with existing price
8055
- */
8056
- 409: unknown;
8057
8786
  };
8058
8787
  };
8059
8788
  delete: {
8060
- req: PriceControllerDeleteData;
8789
+ req: PlatformControllerDeleteData;
8061
8790
  res: {
8062
8791
  /**
8063
- * Price deleted successfully
8792
+ * Platform deleted successfully
8064
8793
  */
8065
8794
  204: void;
8066
8795
  /**
8067
- * Price not found
8796
+ * Platform not found
8068
8797
  */
8069
8798
  404: unknown;
8070
8799
  };
8071
8800
  };
8072
8801
  };
8073
- '/api/v1/{region}/bean/prices/bulk': {
8074
- post: {
8075
- req: PriceControllerBulkCreateData;
8802
+ '/api/v1/{region}/dashboard/net-worth': {
8803
+ get: {
8804
+ req: DashboardControllerGetNetWorthData;
8076
8805
  res: {
8077
8806
  /**
8078
- * Prices created successfully
8807
+ * Net worth retrieved successfully
8079
8808
  */
8080
- 201: Array<PriceResponseDto>;
8809
+ 200: NetWorthResponseDto;
8810
+ /**
8811
+ * User not authenticated
8812
+ */
8813
+ 401: unknown;
8081
8814
  };
8082
8815
  };
8083
8816
  };
8084
- '/api/v1/{region}/reporting/portfolio/trends': {
8817
+ '/api/v1/{region}/dashboard/accounts': {
8085
8818
  get: {
8086
- req: ReportingControllerGetPortfolioTrendsData;
8819
+ req: DashboardControllerGetAccountsData;
8087
8820
  res: {
8088
8821
  /**
8089
- * Trends retrieved successfully
8822
+ * Accounts retrieved successfully. Response type depends on groupBy parameter.
8090
8823
  */
8091
- 200: PortfolioTrendsResponseDto;
8824
+ 200: AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
8092
8825
  /**
8093
8826
  * User not authenticated
8094
8827
  */
@@ -8096,14 +8829,18 @@ type $OpenApiTs = {
8096
8829
  };
8097
8830
  };
8098
8831
  };
8099
- '/api/v1/{region}/reporting/cash-flow/trends': {
8832
+ '/api/v1/{region}/dashboard/cash-flow': {
8100
8833
  get: {
8101
- req: ReportingControllerGetCashFlowTrendsData;
8834
+ req: DashboardControllerGetCashFlowData;
8102
8835
  res: {
8103
8836
  /**
8104
- * Cash-flow trends retrieved successfully
8837
+ * Cash flow retrieved successfully
8105
8838
  */
8106
- 200: CashFlowTrendsResponseDto;
8839
+ 200: CashFlowResponseDto;
8840
+ /**
8841
+ * Invalid period format
8842
+ */
8843
+ 400: unknown;
8107
8844
  /**
8108
8845
  * User not authenticated
8109
8846
  */
@@ -8111,16 +8848,16 @@ type $OpenApiTs = {
8111
8848
  };
8112
8849
  };
8113
8850
  };
8114
- '/api/v1/{region}/reporting/snapshots/generate': {
8115
- post: {
8116
- req: ReportingControllerGenerateSnapshotData;
8851
+ '/api/v1/{region}/dashboard/expenses': {
8852
+ get: {
8853
+ req: DashboardControllerGetExpensesData;
8117
8854
  res: {
8118
8855
  /**
8119
- * Snapshot generated successfully
8856
+ * Expenses retrieved successfully
8120
8857
  */
8121
- 200: GenerateSnapshotResponse;
8858
+ 200: ExpensesByCategoryResponseDto;
8122
8859
  /**
8123
- * Invalid date format
8860
+ * Invalid groupBy or period
8124
8861
  */
8125
8862
  400: unknown;
8126
8863
  /**
@@ -8130,26 +8867,22 @@ type $OpenApiTs = {
8130
8867
  };
8131
8868
  };
8132
8869
  };
8133
- '/api/v1/{region}/reporting/snapshots/backfill': {
8134
- post: {
8135
- req: ReportingControllerBackfillSnapshotsData;
8870
+ '/api/v1/{region}/investment/holdings/pnl': {
8871
+ get: {
8872
+ req: HoldingPnlControllerGetHoldingPnlData;
8136
8873
  res: {
8137
8874
  /**
8138
- * Backfill completed successfully
8875
+ * Holding P&L retrieved successfully
8139
8876
  */
8140
- 200: BackfillSnapshotsResponse;
8877
+ 200: HoldingPnlResponseDto;
8141
8878
  /**
8142
- * Invalid date format or range
8879
+ * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
8143
8880
  */
8144
8881
  400: unknown;
8145
8882
  /**
8146
8883
  * User not authenticated
8147
8884
  */
8148
8885
  401: unknown;
8149
- /**
8150
- * Backfill already in progress for this user
8151
- */
8152
- 409: unknown;
8153
8886
  };
8154
8887
  };
8155
8888
  };
@@ -8174,7 +8907,7 @@ type $OpenApiTs = {
8174
8907
  /**
8175
8908
  * Login successful
8176
8909
  */
8177
- 200: unknown;
8910
+ 200: AnonymousLoginResponseDto;
8178
8911
  /**
8179
8912
  * Invalid access token
8180
8913
  */
@@ -8321,6 +9054,32 @@ type $OpenApiTs = {
8321
9054
  };
8322
9055
  };
8323
9056
  };
9057
+ '/api/v1/market/symbols/search': {
9058
+ get: {
9059
+ req: SymbolControllerSearchData;
9060
+ res: {
9061
+ /**
9062
+ * Ranked search results
9063
+ */
9064
+ 200: Array<SymbolSearchResultDto>;
9065
+ };
9066
+ };
9067
+ };
9068
+ '/api/v1/market/symbols/{symbol}/quote': {
9069
+ get: {
9070
+ req: SymbolControllerGetQuoteData;
9071
+ res: {
9072
+ /**
9073
+ * Symbol quote
9074
+ */
9075
+ 200: SymbolQuoteDto;
9076
+ /**
9077
+ * Symbol not found in the openbb catalog
9078
+ */
9079
+ 404: unknown;
9080
+ };
9081
+ };
9082
+ };
8324
9083
  };
8325
9084
 
8326
9085
  declare class BeanAccountsService {
@@ -8342,7 +9101,7 @@ declare class BeanAccountsService {
8342
9101
  * @param data.type Filter by account type
8343
9102
  * @param data.status Filter by status
8344
9103
  * @param data.isCustom Filter by custom (user-created) accounts only
8345
- * @param data.search Search term for path or i18nKey
9104
+ * @param data.search Search term for account path
8346
9105
  * @param data.limit Maximum number of results
8347
9106
  * @param data.offset Number of results to skip
8348
9107
  * @returns AccountListResponseDto Accounts retrieved successfully
@@ -8372,7 +9131,7 @@ declare class BeanAccountsService {
8372
9131
  static accountControllerUpdate(data: AccountControllerUpdateData): CancelablePromise<AccountControllerUpdateResponse>;
8373
9132
  /**
8374
9133
  * Delete account
8375
- * Deletes an account (only if no transactions)
9134
+ * Deletes an account (only if no active transactions; voided/superseded residual postings are cleaned up)
8376
9135
  * @param data The data for the request.
8377
9136
  * @param data.id Account UUID
8378
9137
  * @param data.region Region code for tenant context
@@ -8402,6 +9161,17 @@ declare class BeanAccountsService {
8402
9161
  * @throws ApiError
8403
9162
  */
8404
9163
  static accountControllerReopen(data: AccountControllerReopenData): CancelablePromise<AccountControllerReopenResponse>;
9164
+ /**
9165
+ * Post an opening-balance transaction
9166
+ * Posts a double-entry opening-balance transaction against Equity:Opening-Balances for an existing Assets/Liabilities account. At most one active opening balance per account.
9167
+ * @param data The data for the request.
9168
+ * @param data.id Account UUID
9169
+ * @param data.region Region code for tenant context
9170
+ * @param data.requestBody
9171
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
9172
+ * @throws ApiError
9173
+ */
9174
+ static accountControllerAddOpeningBalance(data: AccountControllerAddOpeningBalanceData): CancelablePromise<AccountControllerAddOpeningBalanceResponse>;
8405
9175
  }
8406
9176
  declare class BeanTransactionsService {
8407
9177
  /**
@@ -8503,7 +9273,7 @@ declare class BeanBalancesService {
8503
9273
  * Query account balance
8504
9274
  * Calculate account balance at a specific date for a single currency
8505
9275
  * @param data The data for the request.
8506
- * @param data.account Account name (e.g., "Assets:Bank:Checking")
9276
+ * @param data.account Account name (e.g., "Assets:Checking")
8507
9277
  * @param data.region Region code for tenant context
8508
9278
  * @param data.date Date to calculate balance at (ISO 8601 format)
8509
9279
  * @param data.currency Currency to query (e.g., "USD", "CNY")
@@ -8733,4 +9503,4 @@ type OpenAPIConfig = {
8733
9503
  };
8734
9504
  declare const OpenAPI: OpenAPIConfig;
8735
9505
 
8736
- export { type $OpenApiTs, type AccountControllerCloseData, type AccountControllerCloseResponse, type AccountControllerCreateData, type AccountControllerCreateResponse, type AccountControllerDeleteData, type AccountControllerDeleteResponse, type AccountControllerFindAllData, type AccountControllerFindAllResponse, type AccountControllerFindOneData, type AccountControllerFindOneResponse, type AccountControllerReopenData, type AccountControllerReopenResponse, type AccountControllerUpdateData, type AccountControllerUpdateResponse, type AccountExchangeRateWarningDto, type AccountItemDto, type AccountItemWithAssetClassDto, type AccountListResponseDto, type AccountResponseDto, type AccountStandardListResponseDto, type AccountStandardResponseDto, type AccountStandardsControllerGetRegionsData, type AccountStandardsControllerGetRegionsResponse, type AccountStandardsControllerGetTemplateMetadataData, type AccountStandardsControllerGetTemplateMetadataResponse, type AccountStandardsControllerGetTemplatesData, type AccountStandardsControllerGetTemplatesResponse, type AccountsResponseDto, type AccountsSummaryDto, type AmountDto, type AmountRangeDto, type AnonymousLoginDto, type ApiKeysControllerCreateApiKeyResponse, type ApiProblemResponseDto, type AssetClassAccountsResponseDto, type AssetClassGroupDto, type AssetClassSummaryDto, type AuthControllerAccessTokenLoginData, type AuthControllerAccessTokenLoginResponse, type BackfillSnapshotsBody, type BackfillSnapshotsResponse, type BalanceByCurrencyDto, type BalanceControllerGetBalanceData, type BalanceControllerGetBalanceResponse, type BalanceControllerGetMultiCurrencyBalanceData, type BalanceControllerGetMultiCurrencyBalanceResponse, type BalanceResponseDto, type BatchCreateTransactionDto, type BatchResolveDto, type BatchResolveResultDto, type BatchTransactionErrorDto, type BatchTransactionResponseDto, BeanAccountsService, BeanBalancesService, BeanCommoditiesService, BeanTransactionsService, type BulkCreateRulesDto, type BulkCreateRulesResponseDto, type CacheControllerFlushCacheResponse, type CashFlowByCurrencyDto, type CashFlowPointDto, type CashFlowResponseDto, type CashFlowTrendSummaryDto, type CashFlowTrendsResponseDto, type CategoryGroupDto, type CloseAccountDto, type CommodityControllerBulkCreateData, type CommodityControllerBulkCreateResponse, type CommodityControllerCreateData, type CommodityControllerCreateResponse, type CommodityControllerDeleteData, type CommodityControllerDeleteResponse, type CommodityControllerFindAllData, type CommodityControllerFindAllResponse, type CommodityControllerFindOneData, type CommodityControllerFindOneResponse, type CommodityControllerGetOrCreateData, type CommodityControllerGetOrCreateResponse, type CommodityControllerUpdateData, type CommodityControllerUpdateResponse, type CommodityListResponseDto, type CommodityResponseDto, type ConfirmMatchDto, type ConvertedCashFlowDto, type ConvertedNetWorthDto, type CorrectTransactionDto, type CostDetailDto, type CostSpecDto, type CreateAccountDto, type CreateBeanEventDto, type CreateBeanPriceDto, type CreateCommodityDto, type CreatePayeeDto, type CreatePayeeProfileDto, type CreatePlatformDto, type CreatePostingDto, type CreateRecurringRuleDto, type CreateRuleFromTransactionDto, type CreateTransactionDto, type CreateTransactionRuleDto, type CurrencyBalanceDto, type CurrentPriceDto, type DashboardControllerGetAccountsData, type DashboardControllerGetAccountsResponse, type DashboardControllerGetCashFlowData, type DashboardControllerGetCashFlowResponse, type DashboardControllerGetExpensesData, type DashboardControllerGetExpensesResponse, type DashboardControllerGetNetWorthData, type DashboardControllerGetNetWorthResponse, type DecisionOptionDto, type DeleteOwnUserDto, type EnterNowDto, type EventControllerCreateData, type EventControllerCreateResponse, type EventControllerDeleteData, type EventControllerDeleteResponse, type EventControllerFindAllData, type EventControllerFindAllResponse, type EventControllerFindOneData, type EventControllerFindOneResponse, type EventControllerGetSliceData, type EventControllerGetSliceResponse, type EventControllerUpdateData, type EventControllerUpdateResponse, type EventListResponseDto, type EventResponseDto, type ExchangeRateControllerGetExchangeRateData, type ExchangeRateControllerGetExchangeRateResponse, type ExchangeRateWarningDto, type ExpectedTransactionControllerConfirmMatchData, type ExpectedTransactionControllerConfirmMatchResponse, type ExpectedTransactionControllerEnterNowData, type ExpectedTransactionControllerEnterNowResponse, type ExpectedTransactionControllerFindAllData, type ExpectedTransactionControllerFindAllResponse, type ExpectedTransactionControllerFindOneData, type ExpectedTransactionControllerFindOneResponse, type ExpectedTransactionControllerFindOverdueData, type ExpectedTransactionControllerFindOverdueResponse, type ExpectedTransactionControllerSkipData, type ExpectedTransactionControllerSkipResponse, type ExpectedTransactionControllerUndoSkipData, type ExpectedTransactionControllerUndoSkipResponse, type ExpectedTransactionControllerUnmatchData, type ExpectedTransactionControllerUnmatchResponse, type ExpectedTransactionListResponseDto, type ExpectedTransactionResponseDto, type ExpectedTransactionRuleDto, type ExpensesByCategoryResponseDto, type ExpensesByCategorySummaryDto, type ExportControllerExportBeancountResponse, type ExportRulesResponseDto, type FileImportControllerIdentifyFileData, type FileImportControllerIdentifyFileResponse, type FileImportControllerImportBeancountData, type FileImportControllerImportBeancountResponse, type FileImportControllerImportFileData, type FileImportControllerImportFileResponse, type FileImportDto, type ForecastControllerGetForecastData, type ForecastControllerGetForecastResponse, type ForecastItemDto, type ForecastResponseDto, type FxRateDto, type GenerateSnapshotBody, type GenerateSnapshotResponse, type HealthControllerCheckDatabaseResponse, type HealthControllerCheckOpenBbResponse, type HealthControllerCheckRedisResponse, type HealthControllerGetCircuitBreakersHealthResponse, type HealthControllerGetHealthResponse, type HealthControllerGetMetricsResponse, type HealthControllerResetCircuitBreakerData, type HealthControllerResetCircuitBreakerResponse, HealthService, type HoldingAssetClassAccountSliceDto, type HoldingAssetClassCrossAccountResponseDto, type HoldingPnlControllerGetHoldingPnlData, type HoldingPnlControllerGetHoldingPnlResponse, type HoldingPnlResponseDto, type HoldingPnlRowDto, type HoldingPnlWarningDto, type IdentifyResultDto, type ImportErrorDto, type ImportResultDto, type ImporterConfigControllerGetConfigData, type ImporterConfigControllerGetConfigResponse, type ImporterConfigControllerResetConfigData, type ImporterConfigControllerResetConfigResponse, type ImporterConfigControllerUpdateConfigData, type ImporterConfigControllerUpdateConfigResponse, type ImporterConfigDataDto, type ImporterConfigDto, type InfoControllerGetInfoResponse, type MapperDefaultsDto, type MonetaryDto, type MonthlyForecastDto, type MultiCurrencyBalanceResponseDto, type MultiCurrencyPointDto, type NetWorthByCurrencyDto, type NetWorthResponseDto, type NlpAccountConfirmationDataDto, type NlpAlternativePayeeDto, type NlpControllerClearSessionData, type NlpControllerClearSessionResponse, type NlpControllerGetSessionData, type NlpControllerGetSessionResponse, type NlpControllerProcessNaturalLanguageData, type NlpControllerProcessNaturalLanguageResponse, type NlpDefaultAccountsDto, type NlpDuplicateConfirmationDataDto, type NlpParsedDataDto, type NlpPayeeConfirmationDataDto, type NlpResponseDto, type NlpRuleConfirmationDataDto, type NlpSimilarityDto, type NlpSourceTransactionDto, type NlpSuggestedAccountDto, type NlpSuggestedAccountsDto, type NlpSuggestedPayeeDto, type NlpTargetTransactionDto, type NlpTransactionInfoDto, OpenAPI, type OpenAPIConfig, type ParserTelemetryReportDto, type PayeeAutocompleteResponseDto, type PayeeControllerAutocompleteData, type PayeeControllerAutocompleteResponse, type PayeeControllerCreateData, type PayeeControllerCreateResponse, type PayeeControllerDeleteData, type PayeeControllerDeleteResponse, type PayeeControllerFindAllData, type PayeeControllerFindAllResponse, type PayeeControllerFindOneData, type PayeeControllerFindOneResponse, type PayeeControllerGetTopPayeesData, type PayeeControllerGetTopPayeesResponse, type PayeeControllerUpdateData, type PayeeControllerUpdateResponse, type PayeeListResponseDto, type PayeeProfileAdminControllerCreateData, type PayeeProfileAdminControllerCreateResponse, type PayeeProfileAdminControllerDeleteData, type PayeeProfileAdminControllerDeleteResponse, type PayeeProfileAdminControllerFindAllData, type PayeeProfileAdminControllerFindAllResponse, type PayeeProfileAdminControllerFindOneData, type PayeeProfileAdminControllerFindOneResponse, type PayeeProfileAdminControllerUnverifyData, type PayeeProfileAdminControllerUnverifyResponse, type PayeeProfileAdminControllerUpdateData, type PayeeProfileAdminControllerUpdateResponse, type PayeeProfileAdminControllerVerifyData, type PayeeProfileAdminControllerVerifyResponse, type PayeeProfileListResponseDto, type PayeeProfileResponseDto, type PayeeResponseDto, type PayeeStatsResponseDto, type PlatformControllerCreateData, type PlatformControllerCreateResponse, type PlatformControllerDeleteData, type PlatformControllerDeleteResponse, type PlatformControllerFindAllResponse, type PlatformControllerGetPlatformListResponse, type PlatformControllerMatchPlatformsData, type PlatformControllerMatchPlatformsResponse, type PlatformControllerUpdateData, type PlatformControllerUpdateResponse, type PlatformGroupDto, type PortfolioTrendsResponseDto, type PostingDetailDto, type PostingResponseDto, type PriceControllerBulkCreateData, type PriceControllerBulkCreateResponse, type PriceControllerCreateData, type PriceControllerCreateResponse, type PriceControllerDeleteData, type PriceControllerDeleteResponse, type PriceControllerFindAllData, type PriceControllerFindAllResponse, type PriceControllerFindOneData, type PriceControllerFindOneResponse, type PriceControllerUpdateData, type PriceControllerUpdateResponse, type PriceListResponseDto, type PriceResponseDto, type ProcessNlpDto, type PropertyControllerDeleteData, type PropertyControllerDeleteResponse, type PropertyControllerGetAllResponse, type PropertyControllerGetByKeyData, type PropertyControllerGetByKeyResponse, type PropertyControllerUpdateData, type PropertyControllerUpdateResponse, type ProviderSyncConfigDto, type ProviderSyncControllerGetSupportedProvidersData, type ProviderSyncControllerGetSupportedProvidersResponse, type ProviderSyncControllerIsProviderSupportedData, type ProviderSyncControllerIsProviderSupportedResponse, type ProviderSyncControllerSyncData, type ProviderSyncControllerSyncResponse, type ProviderSyncDto, type ProviderSyncResponseDto, ProviderSyncService, type RecurringMatchInfoDto, type RecurringRuleControllerCreateData, type RecurringRuleControllerCreateFromTransactionData, type RecurringRuleControllerCreateFromTransactionResponse, type RecurringRuleControllerCreateResponse, type RecurringRuleControllerDeleteData, type RecurringRuleControllerDeleteResponse, type RecurringRuleControllerFindAllData, type RecurringRuleControllerFindAllResponse, type RecurringRuleControllerFindOneData, type RecurringRuleControllerFindOneResponse, type RecurringRuleControllerGetWithStatsData, type RecurringRuleControllerGetWithStatsResponse, type RecurringRuleControllerUpdateData, type RecurringRuleControllerUpdateResponse, type RecurringRuleResponseDto, type RecurringRuleWithStatsResponseDto, type RecurringSuggestionDto, type RegionConfigDto, type RegionInfoDto, type RegionsMetadataResponseDto, type ReopenAccountDto, type ReportingControllerBackfillSnapshotsData, type ReportingControllerBackfillSnapshotsResponse, type ReportingControllerGenerateSnapshotData, type ReportingControllerGenerateSnapshotResponse, type ReportingControllerGetCashFlowTrendsData, type ReportingControllerGetCashFlowTrendsResponse, type ReportingControllerGetPortfolioTrendsData, type ReportingControllerGetPortfolioTrendsResponse, type ResolveResultDto, type ResolveReviewDto, type ReviewControllerBatchResolveData, type ReviewControllerBatchResolveResponse, type ReviewControllerFindAllData, type ReviewControllerFindAllResponse, type ReviewControllerFindOneData, type ReviewControllerFindOneResponse, type ReviewControllerGetStatsData, type ReviewControllerGetStatsResponse, type ReviewControllerResolveData, type ReviewControllerResolveResponse, type ReviewControllerUndoData, type ReviewControllerUndoResponse, type ReviewDetailDto, type ReviewItemPreviewDto, type ReviewListResponseDto, type ReviewStatsDto, type ReviewSummaryDto, type RuleStatisticsResponseDto, type SignupDto, type SupportedProvidersResponseDto, type TagSuggestionDto, type TagSuggestionsResponseDto, type TelemetryControllerGetCoverageMetricsData, type TelemetryControllerGetCoverageMetricsResponse, type TelemetryControllerReportCoverageMissData, type TelemetryControllerReportCoverageMissResponse, type TelemetryControllerReportTelemetryData, type TelemetryControllerReportTelemetryResponse, type TemplateMetadataDto, type TemplateMetadataResponseDto, type TestRuleDto, type TestRuleResponseDto, type TimeSeriesPointDto, type TransactionControllerCorrectData, type TransactionControllerCorrectResponse, type TransactionControllerCreateBatchData, type TransactionControllerCreateBatchResponse, type TransactionControllerCreateData, type TransactionControllerCreateResponse, type TransactionControllerDeleteData, type TransactionControllerDeleteResponse, type TransactionControllerGetDetailData, type TransactionControllerGetDetailResponse, type TransactionControllerListData, type TransactionControllerListResponse, type TransactionControllerSuggestTagsData, type TransactionControllerSuggestTagsResponse, type TransactionControllerUpdateData, type TransactionControllerUpdateResponse, type TransactionDetailDto, type TransactionListResponseDto, type TransactionResponseDto, type TransactionRuleControllerBulkCreateData, type TransactionRuleControllerBulkCreateResponse, type TransactionRuleControllerCreateData, type TransactionRuleControllerCreateResponse, type TransactionRuleControllerDeleteData, type TransactionRuleControllerDeleteResponse, type TransactionRuleControllerExportData, type TransactionRuleControllerExportResponse, type TransactionRuleControllerGetDetailData, type TransactionRuleControllerGetDetailResponse, type TransactionRuleControllerGetStatisticsData, type TransactionRuleControllerGetStatisticsResponse, type TransactionRuleControllerListData, type TransactionRuleControllerListResponse, type TransactionRuleControllerTestData, type TransactionRuleControllerTestResponse, type TransactionRuleControllerUpdateData, type TransactionRuleControllerUpdateResponse, type TransactionRuleControllerValidateData, type TransactionRuleControllerValidateResponse, type TransactionRuleListResponseDto, type TransactionRuleResponseDto, type TransactionSummaryDto, type TrendSummaryDto, type UncoveredFormatMissDto, type UndoResultDto, type UpdateAccountDto, type UpdateBeanEventDto, type UpdateBeanPriceDto, type UpdateCommodityDto, type UpdateConfigDataDto, type UpdateImporterConfigDto, type UpdateMapperDefaultsDto, type UpdatePayeeDto, type UpdatePayeeProfileDto, type UpdatePlatformDto, type UpdatePropertyDto, type UpdateRecurringRuleDto, type UpdateTransactionDto, type UpdateTransactionRuleDto, type UpdateUserSettingDto, type UserControllerDeleteOwnUserData, type UserControllerDeleteOwnUserResponse, type UserControllerDeleteUserData, type UserControllerDeleteUserResponse, type UserControllerGetAllUserSettingsByPageData, type UserControllerGetAllUserSettingsByPageResponse, type UserControllerGetAssetLiabilitySummaryResponse, type UserControllerGetUserData, type UserControllerGetUserInfoData, type UserControllerGetUserInfoResponse, type UserControllerGetUserResponse, type UserControllerSignupUserData, type UserControllerSignupUserResponse, type UserControllerUpdateUserSettingData, type UserControllerUpdateUserSettingResponse, type ValidateRuleDto, type ValidateRuleResponseDto, type VersionedConfigDto, type action, type action2, type assetClass, type assetSubType, type bookingMethod, type branchType, type category, type chartToken, type colorScheme, type confidenceLevel, type conflictStrategy, type dataSource, type equitySubType, type flag, type flag2, type frequency, type importerId, type intent, type investmentAction, type learningSource, type liabilitySubType, type matchLogic, type method, type mode, type paymentSource, type period, type source, type source2, type source3, type status, type status2, type status3, type status4, type suggestedFrequency, type type, type type2, type type3, type type4, type value, type viewMode };
9506
+ export { type $OpenApiTs, type AccountControllerAddOpeningBalanceData, type AccountControllerAddOpeningBalanceResponse, type AccountControllerCloseData, type AccountControllerCloseResponse, type AccountControllerCreateData, type AccountControllerCreateResponse, type AccountControllerDeleteData, type AccountControllerDeleteResponse, type AccountControllerFindAllData, type AccountControllerFindAllResponse, type AccountControllerFindOneData, type AccountControllerFindOneResponse, type AccountControllerReopenData, type AccountControllerReopenResponse, type AccountControllerUpdateData, type AccountControllerUpdateResponse, type AccountExchangeRateWarningDto, type AccountItemDto, type AccountItemWithAssetClassDto, type AccountListResponseDto, type AccountResponseDto, type AccountStandardListResponseDto, type AccountStandardResponseDto, type AccountStandardsControllerGetRegionsData, type AccountStandardsControllerGetRegionsResponse, type AccountStandardsControllerGetTemplateMetadataData, type AccountStandardsControllerGetTemplateMetadataResponse, type AccountStandardsControllerGetTemplatesData, type AccountStandardsControllerGetTemplatesResponse, type AccountsResponseDto, type AccountsSummaryDto, type ActualBalanceDto, type AmountDto, type AmountRangeDto, type AnonymousLoginDto, type AnonymousLoginResponseDto, type ApiKeysControllerCreateApiKeyResponse, type ApiProblemResponseDto, type AssertReconciliationDto, type AssetClassAccountsResponseDto, type AssetClassGroupDto, type AssetClassSummaryDto, type AuthControllerAccessTokenLoginData, type AuthControllerAccessTokenLoginResponse, type BackfillSnapshotsBody, type BackfillSnapshotsResponse, type BalanceByCurrencyDto, type BalanceControllerGetBalanceData, type BalanceControllerGetBalanceResponse, type BalanceControllerGetMultiCurrencyBalanceData, type BalanceControllerGetMultiCurrencyBalanceResponse, type BalanceResponseDto, type BatchCreateTransactionDto, type BatchResolveDto, type BatchResolveResultDto, type BatchTransactionErrorDto, type BatchTransactionResponseDto, BeanAccountsService, BeanBalancesService, BeanCommoditiesService, BeanTransactionsService, type BulkCreateRulesDto, type BulkCreateRulesResponseDto, type CacheControllerFlushCacheResponse, type CashFlowByCurrencyDto, type CashFlowPointDto, type CashFlowResponseDto, type CashFlowTrendSummaryDto, type CashFlowTrendsResponseDto, type CategoryGroupDto, type CloseAccountDto, type CommodityControllerBulkCreateData, type CommodityControllerBulkCreateResponse, type CommodityControllerCreateData, type CommodityControllerCreateResponse, type CommodityControllerDeleteData, type CommodityControllerDeleteResponse, type CommodityControllerFindAllData, type CommodityControllerFindAllResponse, type CommodityControllerFindOneData, type CommodityControllerFindOneResponse, type CommodityControllerGetOrCreateData, type CommodityControllerGetOrCreateResponse, type CommodityControllerUpdateData, type CommodityControllerUpdateResponse, type CommodityListResponseDto, type CommodityResponseDto, type ComputeReconciliationDto, type ConfirmMatchDto, type ConvertedCashFlowDto, type ConvertedNetWorthDto, type CorrectTransactionDto, type CostDetailDto, type CostSpecDto, type CreateAccountDto, type CreateBeanEventDto, type CreateBeanPriceDto, type CreateCommodityDto, type CreateExternalAccountLinkDto, type CreateOpeningBalanceDto, type CreatePayeeDto, type CreatePayeeProfileDto, type CreatePlatformDto, type CreatePostingDto, type CreateRecurringRuleDto, type CreateRuleFromTransactionDto, type CreateTransactionDto, type CreateTransactionRuleDto, type CurrencyBalanceDto, type CurrentPriceDto, type DashboardControllerGetAccountsData, type DashboardControllerGetAccountsResponse, type DashboardControllerGetCashFlowData, type DashboardControllerGetCashFlowResponse, type DashboardControllerGetExpensesData, type DashboardControllerGetExpensesResponse, type DashboardControllerGetNetWorthData, type DashboardControllerGetNetWorthResponse, type DecisionOptionDto, type DeleteOwnUserDto, type EnterNowDto, type EventControllerCreateData, type EventControllerCreateResponse, type EventControllerDeleteData, type EventControllerDeleteResponse, type EventControllerFindAllData, type EventControllerFindAllResponse, type EventControllerFindOneData, type EventControllerFindOneResponse, type EventControllerGetSliceData, type EventControllerGetSliceResponse, type EventControllerUpdateData, type EventControllerUpdateResponse, type EventListResponseDto, type EventResponseDto, type ExchangeRateControllerGetExchangeRateData, type ExchangeRateControllerGetExchangeRateResponse, type ExchangeRateWarningDto, type ExpectedTransactionControllerConfirmMatchData, type ExpectedTransactionControllerConfirmMatchResponse, type ExpectedTransactionControllerEnterNowData, type ExpectedTransactionControllerEnterNowResponse, type ExpectedTransactionControllerFindAllData, type ExpectedTransactionControllerFindAllResponse, type ExpectedTransactionControllerFindOneData, type ExpectedTransactionControllerFindOneResponse, type ExpectedTransactionControllerFindOverdueData, type ExpectedTransactionControllerFindOverdueResponse, type ExpectedTransactionControllerSkipData, type ExpectedTransactionControllerSkipResponse, type ExpectedTransactionControllerUndoSkipData, type ExpectedTransactionControllerUndoSkipResponse, type ExpectedTransactionControllerUnmatchData, type ExpectedTransactionControllerUnmatchResponse, type ExpectedTransactionListResponseDto, type ExpectedTransactionResponseDto, type ExpectedTransactionRuleDto, type ExpensesByCategoryResponseDto, type ExpensesByCategorySummaryDto, type ExportControllerExportBeancountResponse, type ExportRulesResponseDto, type ExternalAccountLinkControllerCreateData, type ExternalAccountLinkControllerCreateResponse, type ExternalAccountLinkControllerFindAllData, type ExternalAccountLinkControllerFindAllResponse, type ExternalAccountLinkControllerFindOneData, type ExternalAccountLinkControllerFindOneResponse, type ExternalAccountLinkControllerRemoveData, type ExternalAccountLinkControllerRemoveResponse, type ExternalAccountLinkListResponseDto, type ExternalAccountLinkResponseDto, type FileImportControllerIdentifyFileData, type FileImportControllerIdentifyFileResponse, type FileImportControllerImportBeancountData, type FileImportControllerImportBeancountResponse, type FileImportControllerImportFileData, type FileImportControllerImportFileResponse, type FileImportDto, type ForecastControllerGetForecastData, type ForecastControllerGetForecastResponse, type ForecastItemDto, type ForecastResponseDto, type FxRateDto, type GenerateSnapshotBody, type GenerateSnapshotResponse, type HealthControllerCheckDatabaseResponse, type HealthControllerCheckOpenBbResponse, type HealthControllerCheckRedisResponse, type HealthControllerGetCircuitBreakersHealthResponse, type HealthControllerGetHealthResponse, type HealthControllerGetMetricsResponse, type HealthControllerResetCircuitBreakerData, type HealthControllerResetCircuitBreakerResponse, HealthService, type HoldingAssetClassAccountSliceDto, type HoldingAssetClassCrossAccountResponseDto, type HoldingPnlControllerGetHoldingPnlData, type HoldingPnlControllerGetHoldingPnlResponse, type HoldingPnlResponseDto, type HoldingPnlRowDto, type HoldingPnlWarningDto, type IdentifyResultDto, type ImportErrorDto, type ImportResultDto, type ImporterConfigControllerGetConfigData, type ImporterConfigControllerGetConfigResponse, type ImporterConfigControllerResetConfigData, type ImporterConfigControllerResetConfigResponse, type ImporterConfigControllerUpdateConfigData, type ImporterConfigControllerUpdateConfigResponse, type ImporterConfigDataDto, type ImporterConfigDto, type InfoControllerGetInfoResponse, type MapperDefaultsDto, type MonetaryDto, type MonthlyForecastDto, type MultiCurrencyBalanceResponseDto, type MultiCurrencyPointDto, type NetWorthByCurrencyDto, type NetWorthResponseDto, type NlpAccountConfirmationDataDto, type NlpAlternativePayeeDto, type NlpControllerClearSessionData, type NlpControllerClearSessionResponse, type NlpControllerGetSessionData, type NlpControllerGetSessionResponse, type NlpControllerProcessNaturalLanguageData, type NlpControllerProcessNaturalLanguageResponse, type NlpDefaultAccountsDto, type NlpDuplicateConfirmationDataDto, type NlpParsedDataDto, type NlpPayeeConfirmationDataDto, type NlpResponseDto, type NlpRuleConfirmationDataDto, type NlpSimilarityDto, type NlpSourceTransactionDto, type NlpSuggestedAccountDto, type NlpSuggestedAccountsDto, type NlpSuggestedPayeeDto, type NlpTargetTransactionDto, type NlpTransactionInfoDto, type OnboardingAccountDto, type OnboardingControllerBootstrapData, type OnboardingControllerBootstrapResponse, type OnboardingDto, OpenAPI, type OpenAPIConfig, type OpeningBalanceResultDto, type PadReconciliationDto, type PadResultDto, type ParserTelemetryReportDto, type PayeeAutocompleteResponseDto, type PayeeControllerAutocompleteData, type PayeeControllerAutocompleteResponse, type PayeeControllerCreateData, type PayeeControllerCreateResponse, type PayeeControllerDeleteData, type PayeeControllerDeleteResponse, type PayeeControllerFindAllData, type PayeeControllerFindAllResponse, type PayeeControllerFindOneData, type PayeeControllerFindOneResponse, type PayeeControllerGetTopPayeesData, type PayeeControllerGetTopPayeesResponse, type PayeeControllerUpdateData, type PayeeControllerUpdateResponse, type PayeeListResponseDto, type PayeeProfileAdminControllerCreateData, type PayeeProfileAdminControllerCreateResponse, type PayeeProfileAdminControllerDeleteData, type PayeeProfileAdminControllerDeleteResponse, type PayeeProfileAdminControllerFindAllData, type PayeeProfileAdminControllerFindAllResponse, type PayeeProfileAdminControllerFindOneData, type PayeeProfileAdminControllerFindOneResponse, type PayeeProfileAdminControllerUnverifyData, type PayeeProfileAdminControllerUnverifyResponse, type PayeeProfileAdminControllerUpdateData, type PayeeProfileAdminControllerUpdateResponse, type PayeeProfileAdminControllerVerifyData, type PayeeProfileAdminControllerVerifyResponse, type PayeeProfileListResponseDto, type PayeeProfileResponseDto, type PayeeResponseDto, type PayeeStatsResponseDto, type PlatformControllerCreateData, type PlatformControllerCreateResponse, type PlatformControllerDeleteData, type PlatformControllerDeleteResponse, type PlatformControllerFindAllResponse, type PlatformControllerGetPlatformListResponse, type PlatformControllerMatchPlatformsData, type PlatformControllerMatchPlatformsResponse, type PlatformControllerUpdateData, type PlatformControllerUpdateResponse, type PlatformGroupDto, type PlatformListItemDto, type PlatformMatchResponseDto, type PlatformMatchResultDto, type PortfolioTrendsResponseDto, type PostingDetailDto, type PostingResponseDto, type PriceControllerBulkCreateData, type PriceControllerBulkCreateResponse, type PriceControllerCreateData, type PriceControllerCreateResponse, type PriceControllerDeleteData, type PriceControllerDeleteResponse, type PriceControllerFindAllData, type PriceControllerFindAllResponse, type PriceControllerFindOneData, type PriceControllerFindOneResponse, type PriceControllerUpdateData, type PriceControllerUpdateResponse, type PriceListResponseDto, type PriceResponseDto, type ProcessNlpDto, type PropertyControllerDeleteData, type PropertyControllerDeleteResponse, type PropertyControllerGetAllResponse, type PropertyControllerGetByKeyData, type PropertyControllerGetByKeyResponse, type PropertyControllerUpdateData, type PropertyControllerUpdateResponse, type ProviderSyncConfigDto, type ProviderSyncControllerGetSupportedProvidersData, type ProviderSyncControllerGetSupportedProvidersResponse, type ProviderSyncControllerIsProviderSupportedData, type ProviderSyncControllerIsProviderSupportedResponse, type ProviderSyncControllerSyncData, type ProviderSyncControllerSyncResponse, type ProviderSyncDto, type ProviderSyncResponseDto, ProviderSyncService, type ReconciliationComputeResultDto, type ReconciliationControllerAssertData, type ReconciliationControllerAssertResponse, type ReconciliationControllerComputeData, type ReconciliationControllerComputeResponse, type ReconciliationControllerHistoryData, type ReconciliationControllerHistoryResponse, type ReconciliationControllerPadData, type ReconciliationControllerPadResponse, type ReconciliationRecordDto, type RecurringMatchInfoDto, type RecurringRuleControllerCreateData, type RecurringRuleControllerCreateFromTransactionData, type RecurringRuleControllerCreateFromTransactionResponse, type RecurringRuleControllerCreateResponse, type RecurringRuleControllerDeleteData, type RecurringRuleControllerDeleteResponse, type RecurringRuleControllerFindAllData, type RecurringRuleControllerFindAllResponse, type RecurringRuleControllerFindOneData, type RecurringRuleControllerFindOneResponse, type RecurringRuleControllerGetWithStatsData, type RecurringRuleControllerGetWithStatsResponse, type RecurringRuleControllerUpdateData, type RecurringRuleControllerUpdateResponse, type RecurringRuleResponseDto, type RecurringRuleWithStatsResponseDto, type RecurringSuggestionDto, type RegionConfigDto, type RegionInfoDto, type RegionsMetadataResponseDto, type ReopenAccountDto, type ReportingControllerBackfillSnapshotsData, type ReportingControllerBackfillSnapshotsResponse, type ReportingControllerGenerateSnapshotData, type ReportingControllerGenerateSnapshotResponse, type ReportingControllerGetCashFlowTrendsData, type ReportingControllerGetCashFlowTrendsResponse, type ReportingControllerGetPortfolioTrendsData, type ReportingControllerGetPortfolioTrendsResponse, type ResolveResultDto, type ResolveReviewDto, type ReviewControllerBatchResolveData, type ReviewControllerBatchResolveResponse, type ReviewControllerFindAllData, type ReviewControllerFindAllResponse, type ReviewControllerFindOneData, type ReviewControllerFindOneResponse, type ReviewControllerGetStatsData, type ReviewControllerGetStatsResponse, type ReviewControllerResolveData, type ReviewControllerResolveResponse, type ReviewControllerUndoData, type ReviewControllerUndoResponse, type ReviewDetailDto, type ReviewItemPreviewDto, type ReviewListResponseDto, type ReviewStatsDto, type ReviewSummaryDto, type RuleStatisticsResponseDto, type SignupDto, type SignupResponseDto, type SupportedProvidersResponseDto, type SymbolControllerGetQuoteData, type SymbolControllerGetQuoteResponse, type SymbolControllerSearchData, type SymbolControllerSearchResponse, type SymbolQuoteDto, type SymbolSearchResultDto, type TagSuggestionDto, type TagSuggestionsResponseDto, type TelemetryControllerGetCoverageMetricsData, type TelemetryControllerGetCoverageMetricsResponse, type TelemetryControllerReportCoverageMissData, type TelemetryControllerReportCoverageMissResponse, type TelemetryControllerReportTelemetryData, type TelemetryControllerReportTelemetryResponse, type TemplateMetadataDto, type TemplateMetadataResponseDto, type TestRuleDto, type TestRuleResponseDto, type TimeSeriesPointDto, type TransactionControllerCorrectData, type TransactionControllerCorrectResponse, type TransactionControllerCreateBatchData, type TransactionControllerCreateBatchResponse, type TransactionControllerCreateData, type TransactionControllerCreateResponse, type TransactionControllerDeleteData, type TransactionControllerDeleteResponse, type TransactionControllerGetDetailData, type TransactionControllerGetDetailResponse, type TransactionControllerListData, type TransactionControllerListResponse, type TransactionControllerSuggestTagsData, type TransactionControllerSuggestTagsResponse, type TransactionControllerUpdateData, type TransactionControllerUpdateResponse, type TransactionDetailDto, type TransactionListResponseDto, type TransactionListSummaryDto, type TransactionResponseDto, type TransactionRuleControllerBulkCreateData, type TransactionRuleControllerBulkCreateResponse, type TransactionRuleControllerCreateData, type TransactionRuleControllerCreateResponse, type TransactionRuleControllerDeleteData, type TransactionRuleControllerDeleteResponse, type TransactionRuleControllerExportData, type TransactionRuleControllerExportResponse, type TransactionRuleControllerGetDetailData, type TransactionRuleControllerGetDetailResponse, type TransactionRuleControllerGetStatisticsData, type TransactionRuleControllerGetStatisticsResponse, type TransactionRuleControllerListData, type TransactionRuleControllerListResponse, type TransactionRuleControllerTestData, type TransactionRuleControllerTestResponse, type TransactionRuleControllerUpdateData, type TransactionRuleControllerUpdateResponse, type TransactionRuleControllerValidateData, type TransactionRuleControllerValidateResponse, type TransactionRuleListResponseDto, type TransactionRuleResponseDto, type TransactionSummaryDto, type TrendSummaryDto, type UncoveredFormatMissDto, type UndoResultDto, type UpdateAccountDto, type UpdateBeanEventDto, type UpdateBeanPriceDto, type UpdateCommodityDto, type UpdateConfigDataDto, type UpdateImporterConfigDto, type UpdateMapperDefaultsDto, type UpdatePayeeDto, type UpdatePayeeProfileDto, type UpdatePlatformDto, type UpdatePropertyDto, type UpdateRecurringRuleDto, type UpdateTransactionDto, type UpdateTransactionRuleDto, type UpdateUserSettingDto, type UserControllerDeleteOwnUserData, type UserControllerDeleteOwnUserResponse, type UserControllerDeleteUserData, type UserControllerDeleteUserResponse, type UserControllerGetAllUserSettingsByPageData, type UserControllerGetAllUserSettingsByPageResponse, type UserControllerGetAssetLiabilitySummaryResponse, type UserControllerGetUserData, type UserControllerGetUserInfoData, type UserControllerGetUserInfoResponse, type UserControllerGetUserResponse, type UserControllerSignupUserData, type UserControllerSignupUserResponse, type UserControllerUpdateUserSettingData, type UserControllerUpdateUserSettingResponse, type ValidateRuleDto, type ValidateRuleResponseDto, type VersionedConfigDto, type action, type action2, type assetClass, type assetSubClass, type assetSubType, type bookingMethod, type branchType, type category, type chartToken, type colorScheme, type confidenceLevel, type conflictStrategy, type dataSource, type equitySubType, type flag, type flag2, type frequency, type importerId, type intent, type investmentAction, type learningSource, type liabilitySubType, type matchLogic, type matchType, type matchType2, type method, type mode, type paymentSource, type period, type productCategory, type provider, type role, type source, type source2, type source3, type status, type status2, type status3, type status4, type suggestedAction, type suggestedFrequency, type type, type type2, type type3, type type4, type value, type viewMode };