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

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' | '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' | '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
  */
@@ -266,10 +270,6 @@ type AccountStandardListResponseDto = {
266
270
  region: string;
267
271
  };
268
272
  type TemplateMetadataDto = {
269
- /**
270
- * Whether this path can be extended
271
- */
272
- extendable: boolean;
273
273
  /**
274
274
  * Root account type
275
275
  */
@@ -779,6 +779,48 @@ type flag2 = 'CLEARED' | 'PENDING' | 'PADDING' | 'SUMMARIZE' | 'TRANSFER' | 'CON
779
779
  * Transaction status
780
780
  */
781
781
  type status2 = 'ACTIVE' | 'VOIDED' | 'SUPERSEDED';
782
+ type BalanceByCurrencyDto = {
783
+ /**
784
+ * ISO 4217 currency code
785
+ */
786
+ currency: string;
787
+ /**
788
+ * Balance amount
789
+ */
790
+ balance: string;
791
+ };
792
+ type ExchangeRateWarningDto = {
793
+ /**
794
+ * Warning type
795
+ */
796
+ type: string;
797
+ /**
798
+ * Currency without exchange rate
799
+ */
800
+ currency: string;
801
+ /**
802
+ * Total amount affected
803
+ */
804
+ totalAmount: string;
805
+ };
806
+ type TransactionListSummaryDto = {
807
+ /**
808
+ * 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.
809
+ */
810
+ totalAmount: string;
811
+ /**
812
+ * Base currency (ISO 4217)
813
+ */
814
+ currency: string;
815
+ /**
816
+ * Raw (unconverted) balance per currency
817
+ */
818
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
819
+ /**
820
+ * Currencies missing an FX rate (omitted when empty)
821
+ */
822
+ warnings?: Array<ExchangeRateWarningDto>;
823
+ };
782
824
  type TransactionListResponseDto = {
783
825
  /**
784
826
  * List of transactions
@@ -796,6 +838,10 @@ type TransactionListResponseDto = {
796
838
  * Number of items skipped
797
839
  */
798
840
  offset: number;
841
+ /**
842
+ * 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.
843
+ */
844
+ summary?: TransactionListSummaryDto;
799
845
  };
800
846
  type TagSuggestionDto = {
801
847
  /**
@@ -1642,6 +1688,104 @@ type UpdateCommodityDto = {
1642
1688
  [key: string]: unknown;
1643
1689
  };
1644
1690
  };
1691
+ type CreateBeanPriceDto = {
1692
+ /**
1693
+ * Currency being priced (e.g., USD, AAPL, BTC)
1694
+ */
1695
+ currency: string;
1696
+ /**
1697
+ * Quote currency (pricing currency, e.g., CNY, EUR)
1698
+ */
1699
+ quoteCurrency: string;
1700
+ /**
1701
+ * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
1702
+ */
1703
+ amount: number;
1704
+ /**
1705
+ * Price date (ISO 8601 format)
1706
+ */
1707
+ date: string;
1708
+ /**
1709
+ * Metadata (validated by Zod schema, max field lengths enforced)
1710
+ */
1711
+ metadata?: {
1712
+ [key: string]: unknown;
1713
+ };
1714
+ };
1715
+ type PriceResponseDto = {
1716
+ /**
1717
+ * Unique identifier
1718
+ */
1719
+ id: string;
1720
+ /**
1721
+ * User ID (owner of the price)
1722
+ */
1723
+ userId: string;
1724
+ /**
1725
+ * Currency being priced (e.g., USD, AAPL, BTC)
1726
+ */
1727
+ currency: string;
1728
+ /**
1729
+ * Quote currency (pricing currency, e.g., USD, CNY)
1730
+ */
1731
+ quoteCurrency: string;
1732
+ /**
1733
+ * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
1734
+ */
1735
+ amount: number;
1736
+ /**
1737
+ * Price date (ISO 8601 format). Represents the date this price was valid.
1738
+ */
1739
+ date: string;
1740
+ /**
1741
+ * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
1742
+ */
1743
+ meta: {
1744
+ [key: string]: unknown;
1745
+ };
1746
+ /**
1747
+ * Creation timestamp
1748
+ */
1749
+ createdAt: string;
1750
+ /**
1751
+ * Last update timestamp
1752
+ */
1753
+ updatedAt: string;
1754
+ };
1755
+ type PriceListResponseDto = {
1756
+ /**
1757
+ * List of prices
1758
+ */
1759
+ items: Array<PriceResponseDto>;
1760
+ /**
1761
+ * Total number of prices
1762
+ */
1763
+ total: number;
1764
+ };
1765
+ type UpdateBeanPriceDto = {
1766
+ /**
1767
+ * Currency being priced
1768
+ */
1769
+ currency?: string;
1770
+ /**
1771
+ * Quote currency (pricing currency)
1772
+ */
1773
+ quoteCurrency?: string;
1774
+ /**
1775
+ * Price amount (MUST be >= 0 per Beancount spec)
1776
+ */
1777
+ amount?: number;
1778
+ /**
1779
+ * Price date (ISO 8601 format)
1780
+ */
1781
+ date?: string;
1782
+ /**
1783
+ * Metadata
1784
+ */
1785
+ metadata?: {
1786
+ [key: string]: unknown;
1787
+ };
1788
+ };
1645
1789
  type CreateRecurringRuleDto = {
1646
1790
  /**
1647
1791
  * Rule name (unique per user)
@@ -2239,76 +2383,368 @@ type ForecastResponseDto = {
2239
2383
  */
2240
2384
  periodEnd: string;
2241
2385
  };
2242
- type CreateTransactionRuleDto = {
2243
- name: string;
2244
- description?: string;
2245
- narrationKeywords?: Array<unknown[]>;
2246
- payeeKeywords?: Array<unknown[]>;
2247
- categoryKeywords?: Array<unknown[]>;
2386
+ type CurrencyBalanceDto = {
2248
2387
  /**
2249
- * Payment method keywords (e.g., HuaBei, YuEBao)
2388
+ * ISO 4217 currency code
2250
2389
  */
2251
- methodKeywords?: Array<unknown[]>;
2390
+ currency: string;
2252
2391
  /**
2253
- * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2392
+ * Balance amount
2254
2393
  */
2255
- categoryAccount?: string;
2256
- matchLogic: 'OR' | 'AND';
2394
+ balance: string;
2395
+ };
2396
+ type TimeSeriesPointDto = {
2257
2397
  /**
2258
- * Minimum transaction amount (inclusive)
2398
+ * Date in YYYY-MM-DD format
2259
2399
  */
2260
- amountMin?: number;
2400
+ date: string;
2261
2401
  /**
2262
- * Maximum transaction amount (inclusive)
2402
+ * Value at this date (in base currency)
2263
2403
  */
2264
- amountMax?: number;
2265
- priority: number;
2266
- additionalTags?: Array<unknown[]>;
2267
- additionalMetadata?: {
2404
+ value: string;
2405
+ /**
2406
+ * Change from previous point
2407
+ */
2408
+ change?: {
2268
2409
  [key: string]: unknown;
2269
2410
  };
2270
2411
  /**
2271
- * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2412
+ * Total assets at this date (in base currency)
2272
2413
  */
2273
- upsertByPayee?: boolean;
2274
- };
2275
- type matchLogic = 'OR' | 'AND';
2276
- type AmountRangeDto = {
2414
+ assets?: string;
2277
2415
  /**
2278
- * Minimum amount
2416
+ * Total liabilities at this date (in base currency)
2279
2417
  */
2280
- min?: number;
2418
+ liabilities?: string;
2281
2419
  /**
2282
- * Maximum amount
2420
+ * Multi-currency breakdown for this point
2283
2421
  */
2284
- max?: number;
2422
+ byCurrency?: Array<CurrencyBalanceDto>;
2285
2423
  };
2286
- type TransactionRuleResponseDto = {
2424
+ type TrendSummaryDto = {
2287
2425
  /**
2288
- * Rule ID
2426
+ * Value at start of period
2289
2427
  */
2290
- id: string;
2428
+ startValue: string;
2291
2429
  /**
2292
- * Rule name
2430
+ * Value at end of period
2293
2431
  */
2294
- name: string;
2432
+ endValue: string;
2295
2433
  /**
2296
- * Rule description
2434
+ * Total change over period
2297
2435
  */
2298
- description?: string;
2436
+ totalChange: string;
2299
2437
  /**
2300
- * Keywords to match in transaction narration
2438
+ * Total change percentage
2301
2439
  */
2302
- narrationKeywords: Array<string>;
2440
+ totalChangePercentage: string;
2441
+ };
2442
+ type MultiCurrencyPointDto = {
2303
2443
  /**
2304
- * Keywords to match in payee name
2444
+ * Date in YYYY-MM-DD format
2305
2445
  */
2306
- payeeKeywords: Array<string>;
2446
+ date: string;
2307
2447
  /**
2308
- * Keywords to match in category
2448
+ * Balances by currency
2309
2449
  */
2310
- categoryKeywords: Array<string>;
2311
- /**
2450
+ byCurrency: Array<CurrencyBalanceDto>;
2451
+ };
2452
+ type PortfolioTrendsResponseDto = {
2453
+ /**
2454
+ * Time series data points
2455
+ */
2456
+ series: Array<TimeSeriesPointDto>;
2457
+ /**
2458
+ * Period summary
2459
+ */
2460
+ summary: TrendSummaryDto;
2461
+ /**
2462
+ * Period requested
2463
+ */
2464
+ period: string;
2465
+ /**
2466
+ * Data granularity
2467
+ */
2468
+ granularity: string;
2469
+ /**
2470
+ * Base currency for converted values
2471
+ */
2472
+ currency: string;
2473
+ /**
2474
+ * Multi-currency time series (each point has currency breakdown)
2475
+ */
2476
+ byCurrency?: Array<MultiCurrencyPointDto>;
2477
+ /**
2478
+ * Exchange rate warnings
2479
+ */
2480
+ warnings?: Array<ExchangeRateWarningDto>;
2481
+ };
2482
+ type CashFlowPointDto = {
2483
+ /**
2484
+ * Month key (YYYY-MM)
2485
+ */
2486
+ month: string;
2487
+ /**
2488
+ * Income in base currency (absolute, converted)
2489
+ */
2490
+ income: string;
2491
+ /**
2492
+ * Expense in base currency (absolute, converted)
2493
+ */
2494
+ expense: string;
2495
+ /**
2496
+ * netSavings = income − expense (savings positive)
2497
+ */
2498
+ netSavings: string;
2499
+ };
2500
+ type CashFlowTrendSummaryDto = {
2501
+ /**
2502
+ * Total income across the period
2503
+ */
2504
+ totalIncome: string;
2505
+ /**
2506
+ * Total expense across the period
2507
+ */
2508
+ totalExpense: string;
2509
+ /**
2510
+ * income − expense across the period
2511
+ */
2512
+ totalNetSavings: string;
2513
+ /**
2514
+ * totalNetSavings divided by the window length (N months, incl. zero-filled)
2515
+ */
2516
+ averageMonthlyNetSavings: string;
2517
+ };
2518
+ type CashFlowTrendsResponseDto = {
2519
+ /**
2520
+ * Monthly cash-flow series (fixed N-month window, zero-filled)
2521
+ */
2522
+ series: Array<CashFlowPointDto>;
2523
+ /**
2524
+ * Period totals
2525
+ */
2526
+ summary: CashFlowTrendSummaryDto;
2527
+ /**
2528
+ * Period requested
2529
+ */
2530
+ period: string;
2531
+ /**
2532
+ * Data granularity (v1 returns month buckets)
2533
+ */
2534
+ granularity: string;
2535
+ /**
2536
+ * Base currency for converted values
2537
+ */
2538
+ currency: string;
2539
+ /**
2540
+ * Exchange rate warnings (e.g. missing rate for a currency)
2541
+ */
2542
+ warnings?: Array<ExchangeRateWarningDto>;
2543
+ };
2544
+ type GenerateSnapshotBody = unknown;
2545
+ type GenerateSnapshotResponse = unknown;
2546
+ type BackfillSnapshotsBody = unknown;
2547
+ type BackfillSnapshotsResponse = unknown;
2548
+ type DeleteOwnUserDto = {
2549
+ /**
2550
+ * Access token for user verification
2551
+ */
2552
+ accessToken: string;
2553
+ };
2554
+ type SignupDto = {
2555
+ /**
2556
+ * Cloudflare Turnstile verification token (optional when Turnstile disabled)
2557
+ */
2558
+ turnstileToken?: string;
2559
+ };
2560
+ type SignupResponseDto = {
2561
+ /**
2562
+ * JWT auth token
2563
+ */
2564
+ authToken: string;
2565
+ /**
2566
+ * Auto-generated access token
2567
+ */
2568
+ accessToken: string;
2569
+ /**
2570
+ * Assigned user role
2571
+ */
2572
+ role: 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2573
+ };
2574
+ /**
2575
+ * Assigned user role
2576
+ */
2577
+ type role = 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2578
+ type UpdateUserSettingDto = {
2579
+ /**
2580
+ * Security ID
2581
+ */
2582
+ secId?: number;
2583
+ /**
2584
+ * Annual interest rate
2585
+ */
2586
+ annualInterestRate?: number;
2587
+ /**
2588
+ * Currency code
2589
+ */
2590
+ currency?: string;
2591
+ /**
2592
+ * Base currency code
2593
+ */
2594
+ baseCurrency?: string;
2595
+ /**
2596
+ * Benchmark symbol
2597
+ */
2598
+ benchmark?: string;
2599
+ /**
2600
+ * Color scheme
2601
+ */
2602
+ colorScheme?: 'DARK' | 'LIGHT';
2603
+ /**
2604
+ * Date range filter
2605
+ */
2606
+ dateRange?: string;
2607
+ /**
2608
+ * Emergency fund amount
2609
+ */
2610
+ emergencyFund?: number;
2611
+ /**
2612
+ * Account filter IDs
2613
+ */
2614
+ 'filters.accounts'?: Array<string>;
2615
+ /**
2616
+ * Asset class filters
2617
+ */
2618
+ 'filters.assetClasses'?: Array<string>;
2619
+ /**
2620
+ * Data source filter
2621
+ */
2622
+ 'filters.dataSource'?: string;
2623
+ /**
2624
+ * Symbol filter
2625
+ */
2626
+ 'filters.symbol'?: string;
2627
+ /**
2628
+ * Tag filters
2629
+ */
2630
+ 'filters.tags'?: Array<string>;
2631
+ /**
2632
+ * Enable experimental features
2633
+ */
2634
+ isExperimentalFeatures?: boolean;
2635
+ /**
2636
+ * Enable restricted view mode
2637
+ */
2638
+ isRestrictedView?: boolean;
2639
+ /**
2640
+ * Language code
2641
+ */
2642
+ language?: string;
2643
+ /**
2644
+ * Locale code
2645
+ */
2646
+ locale?: string;
2647
+ /**
2648
+ * Projected total amount
2649
+ */
2650
+ projectedTotalAmount?: number;
2651
+ /**
2652
+ * Retirement date in ISO 8601 format
2653
+ */
2654
+ retirementDate?: string;
2655
+ /**
2656
+ * Savings rate percentage
2657
+ */
2658
+ savingsRate?: number;
2659
+ /**
2660
+ * View mode
2661
+ */
2662
+ viewMode?: 'DEFAULT' | 'ZEN';
2663
+ };
2664
+ /**
2665
+ * Color scheme
2666
+ */
2667
+ type colorScheme = 'DARK' | 'LIGHT';
2668
+ /**
2669
+ * View mode
2670
+ */
2671
+ type viewMode = 'DEFAULT' | 'ZEN';
2672
+ type UpdatePropertyDto = {
2673
+ /**
2674
+ * Property value
2675
+ */
2676
+ value: string;
2677
+ };
2678
+ type CreateTransactionRuleDto = {
2679
+ name: string;
2680
+ description?: string;
2681
+ narrationKeywords?: Array<unknown[]>;
2682
+ payeeKeywords?: Array<unknown[]>;
2683
+ categoryKeywords?: Array<unknown[]>;
2684
+ /**
2685
+ * Payment method keywords (e.g., HuaBei, YuEBao)
2686
+ */
2687
+ methodKeywords?: Array<unknown[]>;
2688
+ /**
2689
+ * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2690
+ */
2691
+ categoryAccount?: string;
2692
+ matchLogic: 'OR' | 'AND';
2693
+ /**
2694
+ * Minimum transaction amount (inclusive)
2695
+ */
2696
+ amountMin?: number;
2697
+ /**
2698
+ * Maximum transaction amount (inclusive)
2699
+ */
2700
+ amountMax?: number;
2701
+ priority: number;
2702
+ additionalTags?: Array<unknown[]>;
2703
+ additionalMetadata?: {
2704
+ [key: string]: unknown;
2705
+ };
2706
+ /**
2707
+ * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2708
+ */
2709
+ upsertByPayee?: boolean;
2710
+ };
2711
+ type matchLogic = 'OR' | 'AND';
2712
+ type AmountRangeDto = {
2713
+ /**
2714
+ * Minimum amount
2715
+ */
2716
+ min?: number;
2717
+ /**
2718
+ * Maximum amount
2719
+ */
2720
+ max?: number;
2721
+ };
2722
+ type TransactionRuleResponseDto = {
2723
+ /**
2724
+ * Rule ID
2725
+ */
2726
+ id: string;
2727
+ /**
2728
+ * Rule name
2729
+ */
2730
+ name: string;
2731
+ /**
2732
+ * Rule description
2733
+ */
2734
+ description?: string;
2735
+ /**
2736
+ * Keywords to match in transaction narration
2737
+ */
2738
+ narrationKeywords: Array<string>;
2739
+ /**
2740
+ * Keywords to match in payee name
2741
+ */
2742
+ payeeKeywords: Array<string>;
2743
+ /**
2744
+ * Keywords to match in category
2745
+ */
2746
+ categoryKeywords: Array<string>;
2747
+ /**
2312
2748
  * Keywords to match in payment method
2313
2749
  */
2314
2750
  methodKeywords: Array<string>;
@@ -2577,203 +3013,235 @@ type TestRuleResponseDto = {
2577
3013
  [key: string]: unknown;
2578
3014
  };
2579
3015
  };
2580
- type DeleteOwnUserDto = {
3016
+ type CreateBeanEventDto = {
2581
3017
  /**
2582
- * Access token for user verification
3018
+ * Life event date (ISO 8601)
2583
3019
  */
2584
- accessToken: string;
2585
- };
2586
- type SignupDto = {
3020
+ date: string;
2587
3021
  /**
2588
- * Cloudflare Turnstile verification token (optional when Turnstile disabled)
3022
+ * Life event type (e.g., "employer", "location", "marital-status") — user-defined, no enum constraint at engine layer
2589
3023
  */
2590
- turnstileToken?: string;
2591
- };
2592
- type UpdateUserSettingDto = {
3024
+ type: string;
2593
3025
  /**
2594
- * Security ID
3026
+ * Life event description. Empty string is a VALID value (distinct from absence).
2595
3027
  */
2596
- secId?: number;
3028
+ description: string;
2597
3029
  /**
2598
- * Annual interest rate
3030
+ * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
2599
3031
  */
2600
- annualInterestRate?: number;
3032
+ meta?: {
3033
+ [key: string]: unknown;
3034
+ };
3035
+ };
3036
+ type EventResponseDto = {
2601
3037
  /**
2602
- * Currency code
3038
+ * Unique identifier
2603
3039
  */
2604
- currency?: string;
3040
+ id: string;
2605
3041
  /**
2606
- * Base currency code
3042
+ * User ID (owner of the life event)
2607
3043
  */
2608
- baseCurrency?: string;
3044
+ userId: string;
2609
3045
  /**
2610
- * Benchmark symbol
3046
+ * Life event date (ISO 8601 format)
2611
3047
  */
2612
- benchmark?: string;
3048
+ date: string;
2613
3049
  /**
2614
- * Color scheme
3050
+ * Life event type (user-defined, e.g., "employer", "location")
2615
3051
  */
2616
- colorScheme?: 'DARK' | 'LIGHT';
3052
+ type: string;
2617
3053
  /**
2618
- * Date range filter
3054
+ * Life event description. May be an empty string (a valid value distinct from absence).
2619
3055
  */
2620
- dateRange?: string;
3056
+ description: string;
2621
3057
  /**
2622
- * Emergency fund amount
3058
+ * Product-side metadata (free-form JSON)
2623
3059
  */
2624
- emergencyFund?: number;
3060
+ meta: {
3061
+ [key: string]: unknown;
3062
+ };
2625
3063
  /**
2626
- * Account filter IDs
3064
+ * Creation timestamp
2627
3065
  */
2628
- 'filters.accounts'?: Array<string>;
3066
+ createdAt: string;
2629
3067
  /**
2630
- * Asset class filters
3068
+ * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
2631
3069
  */
2632
- 'filters.assetClasses'?: Array<string>;
3070
+ updatedAt: string;
3071
+ };
3072
+ type EventListResponseDto = {
2633
3073
  /**
2634
- * Data source filter
3074
+ * List of life events
2635
3075
  */
2636
- 'filters.dataSource'?: string;
3076
+ items: Array<EventResponseDto>;
2637
3077
  /**
2638
- * Symbol filter
3078
+ * Total number of life events matching the query
2639
3079
  */
2640
- 'filters.symbol'?: string;
3080
+ total: number;
3081
+ };
3082
+ type UpdateBeanEventDto = {
2641
3083
  /**
2642
- * Tag filters
3084
+ * Life event date (ISO 8601)
2643
3085
  */
2644
- 'filters.tags'?: Array<string>;
3086
+ date?: string;
2645
3087
  /**
2646
- * Enable experimental features
3088
+ * Life event type (user-defined)
2647
3089
  */
2648
- isExperimentalFeatures?: boolean;
3090
+ type?: string;
2649
3091
  /**
2650
- * Enable restricted view mode
3092
+ * Life event description. Empty string is a VALID value (distinct from absence).
2651
3093
  */
2652
- isRestrictedView?: boolean;
3094
+ description?: string;
2653
3095
  /**
2654
- * Language code
3096
+ * Product-side metadata (free-form JSON)
2655
3097
  */
2656
- language?: string;
3098
+ meta?: {
3099
+ [key: string]: unknown;
3100
+ };
3101
+ };
3102
+ type OnboardingAccountDto = {
2657
3103
  /**
2658
- * Locale code
3104
+ * Account path (Assets/Liabilities only; format validated by the account service)
2659
3105
  */
2660
- locale?: string;
3106
+ path: string;
2661
3107
  /**
2662
- * Projected total amount
3108
+ * ISO 4217 currency code (3 letters)
2663
3109
  */
2664
- projectedTotalAmount?: number;
3110
+ currency: string;
2665
3111
  /**
2666
- * Retirement date in ISO 8601 format
3112
+ * Opening balance as a non-negative Decimal string (e.g. "1000.00")
2667
3113
  */
2668
- retirementDate?: string;
3114
+ openingBalance?: string;
2669
3115
  /**
2670
- * Savings rate percentage
3116
+ * Platform ID to bind the account to (references Platform.id); omit for unbound
2671
3117
  */
2672
- savingsRate?: number;
3118
+ platformId?: string;
3119
+ };
3120
+ type OnboardingDto = {
2673
3121
  /**
2674
- * View mode
3122
+ * Asset/Liability accounts to register with opening balances
2675
3123
  */
2676
- viewMode?: 'DEFAULT' | 'ZEN';
2677
- };
2678
- /**
2679
- * Color scheme
2680
- */
2681
- type colorScheme = 'DARK' | 'LIGHT';
2682
- /**
2683
- * View mode
2684
- */
2685
- type viewMode = 'DEFAULT' | 'ZEN';
2686
- type UpdatePropertyDto = {
3124
+ accounts?: Array<OnboardingAccountDto>;
2687
3125
  /**
2688
- * Property value
3126
+ * Skip asset registration; only bootstrap the core account set
2689
3127
  */
2690
- value: string;
3128
+ skipAssetRegistration?: boolean;
2691
3129
  };
2692
- type CreateBeanEventDto = {
3130
+ type ActualBalanceDto = {
2693
3131
  /**
2694
- * Life event date (ISO 8601)
3132
+ * Actual balance amount as a decimal string (preserves precision for tolerance inference).
2695
3133
  */
2696
- date: string;
3134
+ amount: string;
2697
3135
  /**
2698
- * Life event type (e.g., "employer", "location", "marital-status") — user-defined, no enum constraint at engine layer
3136
+ * Currency code (ISO 4217 or commodity ticker).
2699
3137
  */
2700
- type: string;
3138
+ ccy: string;
3139
+ };
3140
+ type ComputeReconciliationDto = {
2701
3141
  /**
2702
- * Life event description. Empty string is a VALID value (distinct from absence).
3142
+ * BeanAccount id to reconcile.
2703
3143
  */
2704
- description: string;
3144
+ accountId: string;
2705
3145
  /**
2706
- * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
3146
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2707
3147
  */
2708
- meta?: {
2709
- [key: string]: unknown;
2710
- };
3148
+ asOfDate: string;
3149
+ /**
3150
+ * Actual balance from the external statement.
3151
+ */
3152
+ actualBalance: ActualBalanceDto;
2711
3153
  };
2712
- type EventResponseDto = {
3154
+ type ReconciliationComputeResultDto = {
3155
+ accountId: string;
3156
+ asOfDate: string;
2713
3157
  /**
2714
- * Unique identifier
3158
+ * System-computed book balance (decimal string).
2715
3159
  */
2716
- id: string;
3160
+ bookBalance: string;
2717
3161
  /**
2718
- * User ID (owner of the life event)
3162
+ * User-entered actual balance (decimal string).
2719
3163
  */
2720
- userId: string;
3164
+ actualBalance: string;
3165
+ currency: string;
2721
3166
  /**
2722
- * Life event date (ISO 8601 format)
3167
+ * Diff = book − actual (decimal string).
2723
3168
  */
2724
- date: string;
3169
+ diff: string;
2725
3170
  /**
2726
- * Life event type (user-defined, e.g., "employer", "location")
3171
+ * Applied tolerance (decimal string).
2727
3172
  */
2728
- type: string;
3173
+ tolerance: string;
2729
3174
  /**
2730
- * Life event description. May be an empty string (a valid value distinct from absence).
3175
+ * true when |diff| tolerance.
2731
3176
  */
2732
- description: string;
3177
+ withinTolerance: boolean;
2733
3178
  /**
2734
- * Product-side metadata (free-form JSON)
3179
+ * Suggested next action: assert when within tolerance, pad otherwise.
2735
3180
  */
2736
- meta: {
2737
- [key: string]: unknown;
2738
- };
3181
+ suggestedAction: 'assert' | 'pad';
3182
+ };
3183
+ /**
3184
+ * Suggested next action: assert when within tolerance, pad otherwise.
3185
+ */
3186
+ type suggestedAction = 'assert' | 'pad';
3187
+ type AssertReconciliationDto = {
2739
3188
  /**
2740
- * Creation timestamp
3189
+ * BeanAccount id to reconcile.
2741
3190
  */
2742
- createdAt: string;
3191
+ accountId: string;
2743
3192
  /**
2744
- * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
3193
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2745
3194
  */
2746
- updatedAt: string;
3195
+ asOfDate: string;
3196
+ /**
3197
+ * Actual balance from the external statement.
3198
+ */
3199
+ actualBalance: ActualBalanceDto;
3200
+ /**
3201
+ * Optional explicit tolerance override. Omit to infer from amount precision (Beancount default).
3202
+ */
3203
+ tolerance?: string;
2747
3204
  };
2748
- type EventListResponseDto = {
3205
+ type ReconciliationRecordDto = {
3206
+ id: string;
3207
+ accountId: string;
3208
+ date: string;
2749
3209
  /**
2750
- * List of life events
3210
+ * Asserted (actual) amount.
2751
3211
  */
2752
- items: Array<EventResponseDto>;
3212
+ amount: string;
3213
+ currency: string;
3214
+ tolerance?: string;
2753
3215
  /**
2754
- * Total number of life events matching the query
3216
+ * book actual.
2755
3217
  */
2756
- total: number;
3218
+ diffAmount?: string;
3219
+ diffCurrency?: string;
3220
+ createdAt: string;
2757
3221
  };
2758
- type UpdateBeanEventDto = {
3222
+ type PadReconciliationDto = {
2759
3223
  /**
2760
- * Life event date (ISO 8601)
3224
+ * BeanAccount id to reconcile.
2761
3225
  */
2762
- date?: string;
3226
+ accountId: string;
2763
3227
  /**
2764
- * Life event type (user-defined)
3228
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2765
3229
  */
2766
- type?: string;
3230
+ asOfDate: string;
2767
3231
  /**
2768
- * Life event description. Empty string is a VALID value (distinct from absence).
3232
+ * Actual balance from the external statement.
2769
3233
  */
2770
- description?: string;
3234
+ actualBalance: ActualBalanceDto;
2771
3235
  /**
2772
- * Product-side metadata (free-form JSON)
3236
+ * Pad source account. Defaults to Equity:Opening-Balances (official Beancount convention).
2773
3237
  */
2774
- meta?: {
2775
- [key: string]: unknown;
2776
- };
3238
+ sourceAccount?: string;
3239
+ };
3240
+ type PadResultDto = {
3241
+ /**
3242
+ * Created pad adjusting transaction id.
3243
+ */
3244
+ transactionId: string;
2777
3245
  };
2778
3246
  type FileImportDto = {
2779
3247
  /**
@@ -3019,70 +3487,6 @@ type UpdateImporterConfigDto = {
3019
3487
  */
3020
3488
  data?: UpdateConfigDataDto;
3021
3489
  };
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
3490
  type ProviderSyncConfigDto = {
3087
3491
  /**
3088
3492
  * Source account for the first posting
@@ -3104,6 +3508,10 @@ type ProviderSyncConfigDto = {
3104
3508
  * Filter pending transactions
3105
3509
  */
3106
3510
  filterPending?: boolean;
3511
+ /**
3512
+ * External account ID for per-batch providers (e.g. GoCardless). Overrides sourceAccount when an ExternalAccountLink mapping exists.
3513
+ */
3514
+ externalAccountId?: string;
3107
3515
  };
3108
3516
  type ProviderSyncDto = {
3109
3517
  /**
@@ -3155,6 +3563,41 @@ type SupportedProvidersResponseDto = {
3155
3563
  */
3156
3564
  providers: Array<string>;
3157
3565
  };
3566
+ type CreateExternalAccountLinkDto = {
3567
+ /**
3568
+ * Open Banking provider (whitelist)
3569
+ */
3570
+ provider: 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3571
+ /**
3572
+ * External account ID from the provider
3573
+ */
3574
+ externalAccountId: string;
3575
+ /**
3576
+ * Target BeanAccount ID (must belong to the JWT user)
3577
+ */
3578
+ beanAccountId: string;
3579
+ };
3580
+ /**
3581
+ * Open Banking provider (whitelist)
3582
+ */
3583
+ type provider = 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3584
+ type ExternalAccountLinkResponseDto = {
3585
+ id: string;
3586
+ provider: string;
3587
+ externalAccountId: string;
3588
+ beanAccountId: string;
3589
+ isActive: boolean;
3590
+ createdAt: string;
3591
+ updatedAt: string;
3592
+ };
3593
+ type ExternalAccountLinkListResponseDto = {
3594
+ items: Array<ExternalAccountLinkResponseDto>;
3595
+ total: number;
3596
+ /**
3597
+ * Filter by provider (query param)
3598
+ */
3599
+ provider?: string;
3600
+ };
3158
3601
  type ParserTelemetryReportDto = unknown;
3159
3602
  type UncoveredFormatMissDto = unknown;
3160
3603
  type ProcessNlpDto = {
@@ -3172,6 +3615,14 @@ type ProcessNlpDto = {
3172
3615
  parsedData?: {
3173
3616
  [key: string]: unknown;
3174
3617
  };
3618
+ /**
3619
+ * 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.
3620
+ */
3621
+ selectedRuleId?: string;
3622
+ /**
3623
+ * 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.
3624
+ */
3625
+ selectedAccount?: string;
3175
3626
  };
3176
3627
  type NlpTransactionInfoDto = {
3177
3628
  /**
@@ -3405,9 +3856,9 @@ type NlpAccountConfirmationDataDto = {
3405
3856
  */
3406
3857
  invalidAccount: string;
3407
3858
  /**
3408
- * Suggested replacement account
3859
+ * Suggested replacement account (omitted when no clear candidate)
3409
3860
  */
3410
- suggestedAccount: string;
3861
+ suggestedAccount?: string;
3411
3862
  /**
3412
3863
  * Similar accounts for user selection
3413
3864
  */
@@ -3529,7 +3980,7 @@ type NlpSuggestedAccountDto = {
3529
3980
  */
3530
3981
  account: string;
3531
3982
  /**
3532
- * Confidence score for this suggestion (0-1)
3983
+ * Confidence score for this suggestion (0-1). Present = predicted (confirm/confirm_rule/confirm_account); omitted = actual persisted account (created). (#586)
3533
3984
  */
3534
3985
  confidence?: number;
3535
3986
  };
@@ -3545,21 +3996,21 @@ type NlpSuggestedAccountsDto = {
3545
3996
  };
3546
3997
  type NlpDefaultAccountsDto = {
3547
3998
  /**
3548
- * Default asset account
3999
+ * Default OPEN asset account (MRU when multiple), or null when none/ambiguous
3549
4000
  */
3550
- asset: string;
4001
+ asset: string | null;
3551
4002
  /**
3552
- * Default expense account
4003
+ * Default OPEN expense account (MRU when multiple), or null when none/ambiguous
3553
4004
  */
3554
- expense: string;
4005
+ expense: string | null;
3555
4006
  /**
3556
- * Default income account
4007
+ * Default OPEN income account (MRU when multiple), or null when none/ambiguous
3557
4008
  */
3558
- income: string;
4009
+ income: string | null;
3559
4010
  /**
3560
- * Default liability account
4011
+ * Default OPEN liability account (MRU when multiple), or null when none/ambiguous
3561
4012
  */
3562
- liability: string;
4013
+ liability: string | null;
3563
4014
  };
3564
4015
  type NlpResponseDto = {
3565
4016
  /**
@@ -3569,7 +4020,7 @@ type NlpResponseDto = {
3569
4020
  /**
3570
4021
  * Action taken or requested
3571
4022
  */
3572
- action: 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
4023
+ action: 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel' | 'aborted';
3573
4024
  /**
3574
4025
  * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3575
4026
  */
@@ -3658,47 +4109,191 @@ type NlpResponseDto = {
3658
4109
  */
3659
4110
  recurringSuggestion?: RecurringSuggestionDto;
3660
4111
  /**
3661
- * Suggested accounts for this transaction. Contains recommended source and destination accounts based on the detected intent and rules.
4112
+ * 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
4113
  */
3663
4114
  suggestedAccounts?: NlpSuggestedAccountsDto;
3664
4115
  /**
3665
- * Default accounts for the user/region. These are fallback accounts used when no specific suggestion is available.
4116
+ * Default fallback accounts for the user/region (#586). v1 returns universal constants; per-user personalization is planned.
4117
+ */
4118
+ defaultAccounts?: NlpDefaultAccountsDto;
4119
+ };
4120
+ /**
4121
+ * Response status
4122
+ */
4123
+ type status4 = 'success' | 'pending' | 'error';
4124
+ /**
4125
+ * Action taken or requested
4126
+ */
4127
+ type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel' | 'aborted';
4128
+ /**
4129
+ * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
4130
+ */
4131
+ type intent = 'expense' | 'asset' | 'income' | 'liability' | 'equity';
4132
+ /**
4133
+ * Asset sub-type (only present when intent is "asset"). Determines which asset-related form to render.
4134
+ */
4135
+ type assetSubType = 'transfer' | 'banking' | 'investment';
4136
+ /**
4137
+ * Liability sub-type (only present when intent is "liability"). borrow: borrowing money (Liabilities → Assets), repay: repaying debt (Assets → Liabilities).
4138
+ */
4139
+ type liabilitySubType = 'borrow' | 'repay';
4140
+ /**
4141
+ * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
4142
+ */
4143
+ type equitySubType = 'opening' | 'adjustment';
4144
+ type PlatformListItemDto = {
4145
+ /**
4146
+ * Global platform ID
4147
+ */
4148
+ id: string;
4149
+ /**
4150
+ * Platform name
4151
+ */
4152
+ name: string;
4153
+ /**
4154
+ * Platform URL
4155
+ */
4156
+ url: string;
4157
+ /**
4158
+ * Platform type
4159
+ */
4160
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4161
+ /**
4162
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4163
+ */
4164
+ canonical: string;
4165
+ /**
4166
+ * Suggested path segment — canonical with first char uppercased (ACC_COMP_NAME_RE)
4167
+ */
4168
+ suggestedSegment: string;
4169
+ /**
4170
+ * Logo URL
4171
+ */
4172
+ logoUrl: string | null;
4173
+ /**
4174
+ * Whether user has accounts using this platform
4175
+ */
4176
+ isBound: boolean;
4177
+ };
4178
+ /**
4179
+ * Platform type
4180
+ */
4181
+ type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4182
+ type PlatformMatchResultDto = {
4183
+ /**
4184
+ * Global platform ID
4185
+ */
4186
+ id: string;
4187
+ /**
4188
+ * Platform name (e.g., "ICBC")
4189
+ */
4190
+ name: string;
4191
+ /**
4192
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4193
+ */
4194
+ canonical: string;
4195
+ /**
4196
+ * Platform type
4197
+ */
4198
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4199
+ /**
4200
+ * Suggested path segment — canonical, already in ACCOUNT_RE format
4201
+ */
4202
+ suggestedSegment: string;
4203
+ /**
4204
+ * Logo URL
4205
+ */
4206
+ logoUrl: string | null;
4207
+ /**
4208
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4209
+ */
4210
+ matchType: 'exact' | 'prefix' | 'substring';
4211
+ };
4212
+ /**
4213
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4214
+ */
4215
+ type matchType = 'exact' | 'prefix' | 'substring';
4216
+ type PlatformMatchResponseDto = {
4217
+ /**
4218
+ * Ranked matches, best tier first (at most 10 rows)
4219
+ */
4220
+ platforms: Array<PlatformMatchResultDto>;
4221
+ /**
4222
+ * Overall match quality — top row's tier, or 'none' when no hits
4223
+ */
4224
+ matchType: 'none' | 'exact' | 'prefix' | 'substring';
4225
+ /**
4226
+ * Total matches before LIMIT (truncation transparency)
4227
+ */
4228
+ total: number;
4229
+ /**
4230
+ * true when total > platforms.length (more matches exist)
4231
+ */
4232
+ hasMore: boolean;
4233
+ };
4234
+ /**
4235
+ * Overall match quality — top row's tier, or 'none' when no hits
4236
+ */
4237
+ type matchType2 = 'none' | 'exact' | 'prefix' | 'substring';
4238
+ type CreatePlatformDto = {
4239
+ /**
4240
+ * Platform name
4241
+ */
4242
+ name: string;
4243
+ /**
4244
+ * Platform canonical identifier (lowercase, kebab-case)
4245
+ */
4246
+ canonical: string;
4247
+ /**
4248
+ * Platform aliases (multi-language names for lookup)
4249
+ */
4250
+ aliases: Array<string>;
4251
+ /**
4252
+ * Platform URL
4253
+ */
4254
+ url: string;
4255
+ /**
4256
+ * Platform type
4257
+ */
4258
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4259
+ /**
4260
+ * Platform logo URL
4261
+ */
4262
+ logoUrl?: string;
4263
+ /**
4264
+ * Whether the platform is active
4265
+ */
4266
+ isActive?: boolean;
4267
+ };
4268
+ type UpdatePlatformDto = {
4269
+ /**
4270
+ * Platform name
4271
+ */
4272
+ name?: string;
4273
+ /**
4274
+ * Platform canonical identifier (lowercase, kebab-case)
4275
+ */
4276
+ canonical?: string;
4277
+ /**
4278
+ * Platform aliases (multi-language names for lookup)
4279
+ */
4280
+ aliases?: Array<string>;
4281
+ /**
4282
+ * Platform URL
4283
+ */
4284
+ url?: string;
4285
+ /**
4286
+ * Platform type
3666
4287
  */
3667
- defaultAccounts?: NlpDefaultAccountsDto;
3668
- };
3669
- /**
3670
- * Response status
3671
- */
3672
- type status4 = 'success' | 'pending' | 'error';
3673
- /**
3674
- * Action taken or requested
3675
- */
3676
- type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
3677
- /**
3678
- * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3679
- */
3680
- type intent = 'expense' | 'asset' | 'income' | 'liability' | 'equity';
3681
- /**
3682
- * Asset sub-type (only present when intent is "asset"). Determines which asset-related form to render.
3683
- */
3684
- type assetSubType = 'transfer' | 'banking' | 'investment';
3685
- /**
3686
- * Liability sub-type (only present when intent is "liability"). borrow: borrowing money (Liabilities → Assets), repay: repaying debt (Assets → Liabilities).
3687
- */
3688
- type liabilitySubType = 'borrow' | 'repay';
3689
- /**
3690
- * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
3691
- */
3692
- type equitySubType = 'opening' | 'adjustment';
3693
- type BalanceByCurrencyDto = {
4288
+ type?: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3694
4289
  /**
3695
- * ISO 4217 currency code
4290
+ * Platform logo URL
3696
4291
  */
3697
- currency: string;
4292
+ logoUrl?: string;
3698
4293
  /**
3699
- * Balance amount
4294
+ * Whether the platform is active
3700
4295
  */
3701
- balance: string;
4296
+ isActive?: boolean;
3702
4297
  };
3703
4298
  type NetWorthByCurrencyDto = {
3704
4299
  /**
@@ -3738,20 +4333,6 @@ type ConvertedNetWorthDto = {
3738
4333
  [key: string]: unknown;
3739
4334
  };
3740
4335
  };
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
4336
  type NetWorthResponseDto = {
3756
4337
  /**
3757
4338
  * Total net worth (assets - liabilities, converted to base currency)
@@ -3815,6 +4396,10 @@ type AccountItemDto = {
3815
4396
  * Currency code
3816
4397
  */
3817
4398
  currency: string;
4399
+ /**
4400
+ * FX-converted balance in base currency; omitted when not convertible
4401
+ */
4402
+ convertedBalance?: string;
3818
4403
  };
3819
4404
  type PlatformGroupDto = {
3820
4405
  /**
@@ -3913,6 +4498,10 @@ type AccountItemWithAssetClassDto = {
3913
4498
  * Currency code
3914
4499
  */
3915
4500
  currency: string;
4501
+ /**
4502
+ * FX-converted balance in base currency; omitted when not convertible
4503
+ */
4504
+ convertedBalance?: string;
3916
4505
  /**
3917
4506
  * Asset class
3918
4507
  */
@@ -4286,332 +4875,204 @@ type HoldingPnlRowDto = {
4286
4875
  [key: string]: unknown;
4287
4876
  } | null;
4288
4877
  /**
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
4878
+ * Unrealized P&L % (Decimal string)
4489
4879
  */
4490
- startValue: string;
4880
+ unrealizedPnlPct?: {
4881
+ [key: string]: unknown;
4882
+ } | null;
4491
4883
  /**
4492
- * Value at end of period
4884
+ * Historical FX rate applied to cost basis
4493
4885
  */
4494
- endValue: string;
4886
+ costFxRate?: FxRateDto | null;
4495
4887
  /**
4496
- * Total change over period
4888
+ * FX rate applied to market value
4497
4889
  */
4498
- totalChange: string;
4890
+ marketFxRate?: FxRateDto | null;
4499
4891
  /**
4500
- * Total change percentage
4892
+ * Share of invested assets % (Decimal string); only for invested chartTokens
4501
4893
  */
4502
- totalChangePercentage: string;
4503
- };
4504
- type MultiCurrencyPointDto = {
4894
+ pctOfInvestedAssets?: {
4895
+ [key: string]: unknown;
4896
+ } | null;
4505
4897
  /**
4506
- * Date in YYYY-MM-DD format
4898
+ * 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
4899
  */
4508
- date: string;
4900
+ realizedPnl?: MonetaryDto | null;
4901
+ };
4902
+ /**
4903
+ * Chart segment token (libs/common resolver)
4904
+ */
4905
+ type chartToken = 'equity' | 'fund' | 'bond' | 'cash' | 'other';
4906
+ type HoldingPnlWarningDto = {
4509
4907
  /**
4510
- * Balances by currency
4908
+ * Warning type
4511
4909
  */
4512
- byCurrency: Array<CurrencyBalanceDto>;
4910
+ type: 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4911
+ symbol?: {
4912
+ [key: string]: unknown;
4913
+ } | null;
4914
+ accountId?: {
4915
+ [key: string]: unknown;
4916
+ } | null;
4917
+ currency?: {
4918
+ [key: string]: unknown;
4919
+ } | null;
4513
4920
  };
4514
- type PortfolioTrendsResponseDto = {
4921
+ /**
4922
+ * Warning type
4923
+ */
4924
+ type type4 = 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4925
+ type HoldingPnlResponseDto = {
4926
+ asOfDate: string;
4927
+ baseCurrency: string;
4515
4928
  /**
4516
- * Time series data points
4929
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4517
4930
  */
4518
- series: Array<TimeSeriesPointDto>;
4931
+ method: 'average' | 'FIFO';
4932
+ rows: Array<HoldingPnlRowDto>;
4933
+ warnings: Array<HoldingPnlWarningDto>;
4934
+ };
4935
+ /**
4936
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4937
+ */
4938
+ type method = 'average' | 'FIFO';
4939
+ type AnonymousLoginDto = {
4519
4940
  /**
4520
- * Period summary
4941
+ * Access token for anonymous login
4521
4942
  */
4522
- summary: TrendSummaryDto;
4943
+ accessToken: string;
4944
+ };
4945
+ type AnonymousLoginResponseDto = {
4523
4946
  /**
4524
- * Period requested
4947
+ * JWT auth token
4525
4948
  */
4526
- period: string;
4949
+ authToken: string;
4950
+ };
4951
+ type SymbolSearchResultDto = {
4952
+ symbol: string;
4953
+ name?: {
4954
+ [key: string]: unknown;
4955
+ } | null;
4956
+ exchange?: {
4957
+ [key: string]: unknown;
4958
+ } | null;
4527
4959
  /**
4528
- * Data granularity
4960
+ * OpenBB asset_type (e.g. stock, etf)
4529
4961
  */
4530
- granularity: string;
4962
+ assetType?: {
4963
+ [key: string]: unknown;
4964
+ } | null;
4531
4965
  /**
4532
- * Base currency for converted values
4966
+ * IGN asset class (region.types.ts ASSET_CLASSES)
4533
4967
  */
4534
- currency: string;
4968
+ assetClass?: {
4969
+ [key: string]: unknown;
4970
+ } | null;
4535
4971
  /**
4536
- * Multi-currency time series (each point has currency breakdown)
4972
+ * IGN asset sub-class (region.types.ts ASSET_SUB_CLASSES)
4537
4973
  */
4538
- byCurrency?: Array<MultiCurrencyPointDto>;
4974
+ assetSubClass?: {
4975
+ [key: string]: unknown;
4976
+ } | null;
4539
4977
  /**
4540
- * Exchange rate warnings
4978
+ * Trading currency (extra_data or inferred from exchange)
4541
4979
  */
4542
- warnings?: Array<ExchangeRateWarningDto>;
4980
+ currency?: {
4981
+ [key: string]: unknown;
4982
+ } | null;
4543
4983
  };
4544
- type CashFlowPointDto = {
4545
- /**
4546
- * Month key (YYYY-MM)
4547
- */
4548
- month: string;
4984
+ type SymbolQuoteDto = {
4985
+ symbol?: string;
4986
+ name?: {
4987
+ [key: string]: unknown;
4988
+ } | null;
4989
+ exchange?: {
4990
+ [key: string]: unknown;
4991
+ } | null;
4549
4992
  /**
4550
- * Income in base currency (absolute, converted)
4993
+ * OpenBB asset_type
4551
4994
  */
4552
- income: string;
4995
+ assetType?: {
4996
+ [key: string]: unknown;
4997
+ } | null;
4553
4998
  /**
4554
- * Expense in base currency (absolute, converted)
4999
+ * IGN asset class
4555
5000
  */
4556
- expense: string;
5001
+ assetClass?: {
5002
+ [key: string]: unknown;
5003
+ } | null;
4557
5004
  /**
4558
- * netSavings = income − expense (savings positive)
5005
+ * IGN asset sub-class
4559
5006
  */
4560
- netSavings: string;
4561
- };
4562
- type CashFlowTrendSummaryDto = {
5007
+ assetSubClass?: {
5008
+ [key: string]: unknown;
5009
+ } | null;
4563
5010
  /**
4564
- * Total income across the period
5011
+ * Trading currency (extra_data or inferred from exchange)
4565
5012
  */
4566
- totalIncome: string;
5013
+ currency?: {
5014
+ [key: string]: unknown;
5015
+ } | null;
4567
5016
  /**
4568
- * Total expense across the period
5017
+ * Latest price (Decimal string)
4569
5018
  */
4570
- totalExpense: string;
5019
+ price?: {
5020
+ [key: string]: unknown;
5021
+ } | null;
4571
5022
  /**
4572
- * income expense across the period
5023
+ * Date the price was observed (ISO yyyy-MM-dd)
4573
5024
  */
4574
- totalNetSavings: string;
5025
+ priceDate?: {
5026
+ [key: string]: unknown;
5027
+ } | null;
4575
5028
  /**
4576
- * totalNetSavings divided by the window length (N months, incl. zero-filled)
5029
+ * 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
5030
  */
4578
- averageMonthlyNetSavings: string;
4579
- };
4580
- type CashFlowTrendsResponseDto = {
5031
+ changePercent?: {
5032
+ [key: string]: unknown;
5033
+ } | null;
4581
5034
  /**
4582
- * Monthly cash-flow series (fixed N-month window, zero-filled)
5035
+ * Previous close (Decimal string)
4583
5036
  */
4584
- series: Array<CashFlowPointDto>;
5037
+ prevClose?: {
5038
+ [key: string]: unknown;
5039
+ } | null;
4585
5040
  /**
4586
- * Period totals
5041
+ * Day open (Decimal string)
4587
5042
  */
4588
- summary: CashFlowTrendSummaryDto;
5043
+ open?: {
5044
+ [key: string]: unknown;
5045
+ } | null;
4589
5046
  /**
4590
- * Period requested
5047
+ * Day high (Decimal string)
4591
5048
  */
4592
- period: string;
5049
+ high?: {
5050
+ [key: string]: unknown;
5051
+ } | null;
4593
5052
  /**
4594
- * Data granularity (v1 returns month buckets)
5053
+ * Day low (Decimal string)
4595
5054
  */
4596
- granularity: string;
5055
+ low?: {
5056
+ [key: string]: unknown;
5057
+ } | null;
4597
5058
  /**
4598
- * Base currency for converted values
5059
+ * Day volume (Decimal string)
4599
5060
  */
4600
- currency: string;
5061
+ volume?: {
5062
+ [key: string]: unknown;
5063
+ } | null;
4601
5064
  /**
4602
- * Exchange rate warnings (e.g. missing rate for a currency)
5065
+ * 52-week high (Decimal string)
4603
5066
  */
4604
- warnings?: Array<ExchangeRateWarningDto>;
4605
- };
4606
- type GenerateSnapshotBody = unknown;
4607
- type GenerateSnapshotResponse = unknown;
4608
- type BackfillSnapshotsBody = unknown;
4609
- type BackfillSnapshotsResponse = unknown;
4610
- type AnonymousLoginDto = {
5067
+ yearHigh?: {
5068
+ [key: string]: unknown;
5069
+ } | null;
4611
5070
  /**
4612
- * Access token for anonymous login
5071
+ * 52-week low (Decimal string)
4613
5072
  */
4614
- accessToken: string;
5073
+ yearLow?: {
5074
+ [key: string]: unknown;
5075
+ } | null;
4615
5076
  };
4616
5077
  type AccountControllerCreateData = {
4617
5078
  /**
@@ -4639,7 +5100,7 @@ type AccountControllerFindAllData = {
4639
5100
  */
4640
5101
  region: 'cn' | 'us' | 'de' | 'gb';
4641
5102
  /**
4642
- * Search term for path or i18nKey
5103
+ * Search term for account path
4643
5104
  */
4644
5105
  search?: string;
4645
5106
  /**
@@ -4710,6 +5171,18 @@ type AccountControllerReopenData = {
4710
5171
  requestBody: ReopenAccountDto;
4711
5172
  };
4712
5173
  type AccountControllerReopenResponse = AccountResponseDto;
5174
+ type AccountControllerAddOpeningBalanceData = {
5175
+ /**
5176
+ * Account UUID
5177
+ */
5178
+ id: string;
5179
+ /**
5180
+ * Region code for tenant context
5181
+ */
5182
+ region: 'cn' | 'us' | 'de' | 'gb';
5183
+ requestBody: CreateOpeningBalanceDto;
5184
+ };
5185
+ type AccountControllerAddOpeningBalanceResponse = OpeningBalanceResultDto;
4713
5186
  type AccountStandardsControllerGetTemplatesData = {
4714
5187
  /**
4715
5188
  * Region code (cn, us, de)
@@ -4871,7 +5344,7 @@ type TransactionControllerDeleteData = {
4871
5344
  type TransactionControllerDeleteResponse = void;
4872
5345
  type BalanceControllerGetBalanceData = {
4873
5346
  /**
4874
- * Account name (e.g., "Assets:Bank:Checking")
5347
+ * Account name (e.g., "Assets:Checking")
4875
5348
  */
4876
5349
  account: string;
4877
5350
  /**
@@ -5113,76 +5586,161 @@ type CommodityControllerCreateData = {
5113
5586
  * Region code for tenant context
5114
5587
  */
5115
5588
  region: 'cn' | 'us' | 'de' | 'gb';
5116
- requestBody: CreateCommodityDto;
5589
+ requestBody: CreateCommodityDto;
5590
+ };
5591
+ type CommodityControllerCreateResponse = CommodityResponseDto;
5592
+ type CommodityControllerFindAllData = {
5593
+ /**
5594
+ * Region code for tenant context
5595
+ */
5596
+ region: 'cn' | 'us' | 'de' | 'gb';
5597
+ /**
5598
+ * Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
5599
+ */
5600
+ search?: string;
5601
+ /**
5602
+ * Filter by exact symbol match
5603
+ */
5604
+ symbol?: string;
5605
+ };
5606
+ type CommodityControllerFindAllResponse = CommodityListResponseDto;
5607
+ type CommodityControllerFindOneData = {
5608
+ /**
5609
+ * Region code for tenant context
5610
+ */
5611
+ region: 'cn' | 'us' | 'de' | 'gb';
5612
+ /**
5613
+ * Commodity symbol
5614
+ */
5615
+ symbol: string;
5616
+ };
5617
+ type CommodityControllerFindOneResponse = CommodityResponseDto;
5618
+ type CommodityControllerUpdateData = {
5619
+ /**
5620
+ * Region code for tenant context
5621
+ */
5622
+ region: 'cn' | 'us' | 'de' | 'gb';
5623
+ requestBody: UpdateCommodityDto;
5624
+ /**
5625
+ * Commodity symbol
5626
+ */
5627
+ symbol: string;
5628
+ };
5629
+ type CommodityControllerUpdateResponse = CommodityResponseDto;
5630
+ type CommodityControllerDeleteData = {
5631
+ /**
5632
+ * Region code for tenant context
5633
+ */
5634
+ region: 'cn' | 'us' | 'de' | 'gb';
5635
+ /**
5636
+ * Commodity symbol
5637
+ */
5638
+ symbol: string;
5639
+ };
5640
+ type CommodityControllerDeleteResponse = void;
5641
+ type CommodityControllerGetOrCreateData = {
5642
+ /**
5643
+ * Region code for tenant context
5644
+ */
5645
+ region: 'cn' | 'us' | 'de' | 'gb';
5646
+ /**
5647
+ * Commodity symbol
5648
+ */
5649
+ symbol: string;
5650
+ };
5651
+ type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
5652
+ type CommodityControllerBulkCreateData = {
5653
+ /**
5654
+ * Region code for tenant context
5655
+ */
5656
+ region: 'cn' | 'us' | 'de' | 'gb';
5657
+ };
5658
+ type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5659
+ type PriceControllerCreateData = {
5660
+ /**
5661
+ * Region code for tenant context
5662
+ */
5663
+ region: 'cn' | 'us' | 'de' | 'gb';
5664
+ requestBody: CreateBeanPriceDto;
5117
5665
  };
5118
- type CommodityControllerCreateResponse = CommodityResponseDto;
5119
- type CommodityControllerFindAllData = {
5666
+ type PriceControllerCreateResponse = PriceResponseDto;
5667
+ type PriceControllerFindAllData = {
5120
5668
  /**
5121
- * Region code for tenant context
5669
+ * Filter by currency (e.g., BTC, AAPL, USD)
5122
5670
  */
5123
- region: 'cn' | 'us' | 'de' | 'gb';
5671
+ currency?: string;
5124
5672
  /**
5125
- * Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
5673
+ * Filter prices from this date (ISO 8601 format)
5126
5674
  */
5127
- search?: string;
5675
+ dateFrom?: string;
5128
5676
  /**
5129
- * Filter by exact symbol match
5677
+ * Filter prices to this date (ISO 8601 format)
5130
5678
  */
5131
- symbol?: string;
5132
- };
5133
- type CommodityControllerFindAllResponse = CommodityListResponseDto;
5134
- type CommodityControllerFindOneData = {
5679
+ dateTo?: string;
5135
5680
  /**
5136
- * Region code for tenant context
5681
+ * Number of items per page (default: 20, max: 100)
5137
5682
  */
5138
- region: 'cn' | 'us' | 'de' | 'gb';
5683
+ limit?: number;
5139
5684
  /**
5140
- * Commodity symbol
5685
+ * Page number for pagination (default: 1)
5141
5686
  */
5142
- symbol: string;
5143
- };
5144
- type CommodityControllerFindOneResponse = CommodityResponseDto;
5145
- type CommodityControllerUpdateData = {
5687
+ page?: number;
5688
+ /**
5689
+ * Filter by quote currency (pricing currency, e.g., USD, CNY)
5690
+ */
5691
+ quoteCurrency?: string;
5146
5692
  /**
5147
5693
  * Region code for tenant context
5148
5694
  */
5149
5695
  region: 'cn' | 'us' | 'de' | 'gb';
5150
- requestBody: UpdateCommodityDto;
5151
5696
  /**
5152
- * Commodity symbol
5697
+ * Search term for currency or quoteCurrency (case-insensitive partial match)
5153
5698
  */
5154
- symbol: string;
5699
+ search?: string;
5155
5700
  };
5156
- type CommodityControllerUpdateResponse = CommodityResponseDto;
5157
- type CommodityControllerDeleteData = {
5701
+ type PriceControllerFindAllResponse = PriceListResponseDto;
5702
+ type PriceControllerFindOneData = {
5703
+ /**
5704
+ * Price ID
5705
+ */
5706
+ id: string;
5158
5707
  /**
5159
5708
  * Region code for tenant context
5160
5709
  */
5161
5710
  region: 'cn' | 'us' | 'de' | 'gb';
5711
+ };
5712
+ type PriceControllerFindOneResponse = PriceResponseDto;
5713
+ type PriceControllerUpdateData = {
5162
5714
  /**
5163
- * Commodity symbol
5715
+ * Price ID
5164
5716
  */
5165
- symbol: string;
5166
- };
5167
- type CommodityControllerDeleteResponse = void;
5168
- type CommodityControllerGetOrCreateData = {
5717
+ id: string;
5169
5718
  /**
5170
5719
  * Region code for tenant context
5171
5720
  */
5172
5721
  region: 'cn' | 'us' | 'de' | 'gb';
5722
+ requestBody: UpdateBeanPriceDto;
5723
+ };
5724
+ type PriceControllerUpdateResponse = PriceResponseDto;
5725
+ type PriceControllerDeleteData = {
5173
5726
  /**
5174
- * Commodity symbol
5727
+ * Price ID
5175
5728
  */
5176
- symbol: string;
5729
+ id: string;
5730
+ /**
5731
+ * Region code for tenant context
5732
+ */
5733
+ region: 'cn' | 'us' | 'de' | 'gb';
5177
5734
  };
5178
- type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
5179
- type CommodityControllerBulkCreateData = {
5735
+ type PriceControllerDeleteResponse = void;
5736
+ type PriceControllerBulkCreateData = {
5180
5737
  /**
5181
5738
  * Region code for tenant context
5182
5739
  */
5183
5740
  region: 'cn' | 'us' | 'de' | 'gb';
5741
+ requestBody: Array<string>;
5184
5742
  };
5185
- type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5743
+ type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
5186
5744
  type RecurringRuleControllerCreateData = {
5187
5745
  /**
5188
5746
  * Region code for tenant context
@@ -5376,6 +5934,120 @@ type ForecastControllerGetForecastData = {
5376
5934
  region: 'cn' | 'us' | 'de' | 'gb';
5377
5935
  };
5378
5936
  type ForecastControllerGetForecastResponse = ForecastResponseDto;
5937
+ type ReportingControllerGetPortfolioTrendsData = {
5938
+ /**
5939
+ * Data granularity
5940
+ */
5941
+ granularity?: 'day' | 'week' | 'month';
5942
+ /**
5943
+ * Time period
5944
+ */
5945
+ period?: '1m' | '3m' | '6m' | '1y';
5946
+ /**
5947
+ * Region code for tenant context
5948
+ */
5949
+ region: 'cn' | 'us' | 'de' | 'gb';
5950
+ };
5951
+ type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
5952
+ type ReportingControllerGetCashFlowTrendsData = {
5953
+ /**
5954
+ * Data granularity (accepted for API symmetry; v1 returns month buckets)
5955
+ */
5956
+ granularity?: 'day' | 'week' | 'month';
5957
+ /**
5958
+ * Time period
5959
+ */
5960
+ period?: '1m' | '3m' | '6m' | '1y';
5961
+ /**
5962
+ * Region code for tenant context
5963
+ */
5964
+ region: 'cn' | 'us' | 'de' | 'gb';
5965
+ };
5966
+ type ReportingControllerGetCashFlowTrendsResponse = CashFlowTrendsResponseDto;
5967
+ type ReportingControllerGenerateSnapshotData = {
5968
+ /**
5969
+ * Region code for tenant context
5970
+ */
5971
+ region: 'cn' | 'us' | 'de' | 'gb';
5972
+ /**
5973
+ * Optional date (defaults to today)
5974
+ */
5975
+ requestBody: GenerateSnapshotBody;
5976
+ };
5977
+ type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
5978
+ type ReportingControllerBackfillSnapshotsData = {
5979
+ /**
5980
+ * Region code for tenant context
5981
+ */
5982
+ region: 'cn' | 'us' | 'de' | 'gb';
5983
+ requestBody: BackfillSnapshotsBody;
5984
+ };
5985
+ type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
5986
+ type UserControllerDeleteOwnUserData = {
5987
+ requestBody: DeleteOwnUserDto;
5988
+ };
5989
+ type UserControllerDeleteOwnUserResponse = void;
5990
+ type UserControllerGetUserData = {
5991
+ acceptLanguage: string;
5992
+ };
5993
+ type UserControllerGetUserResponse = unknown;
5994
+ type UserControllerSignupUserData = {
5995
+ requestBody: SignupDto;
5996
+ };
5997
+ type UserControllerSignupUserResponse = SignupResponseDto;
5998
+ type UserControllerDeleteUserData = {
5999
+ /**
6000
+ * User ID to delete
6001
+ */
6002
+ id: string;
6003
+ };
6004
+ type UserControllerDeleteUserResponse = void;
6005
+ type UserControllerGetUserInfoData = {
6006
+ /**
6007
+ * User ID
6008
+ */
6009
+ id: string;
6010
+ };
6011
+ type UserControllerGetUserInfoResponse = unknown;
6012
+ type UserControllerUpdateUserSettingData = {
6013
+ requestBody: UpdateUserSettingDto;
6014
+ };
6015
+ type UserControllerUpdateUserSettingResponse = unknown;
6016
+ type UserControllerGetAllUserSettingsByPageData = {
6017
+ /**
6018
+ * Page number
6019
+ */
6020
+ pageNo: number;
6021
+ /**
6022
+ * Page size
6023
+ */
6024
+ pageSize: number;
6025
+ };
6026
+ type UserControllerGetAllUserSettingsByPageResponse = unknown;
6027
+ type UserControllerGetAssetLiabilitySummaryResponse = unknown;
6028
+ type PropertyControllerGetAllResponse = unknown;
6029
+ type PropertyControllerGetByKeyData = {
6030
+ /**
6031
+ * Property key
6032
+ */
6033
+ key: string;
6034
+ };
6035
+ type PropertyControllerGetByKeyResponse = unknown;
6036
+ type PropertyControllerUpdateData = {
6037
+ /**
6038
+ * Property key
6039
+ */
6040
+ key: string;
6041
+ requestBody: UpdatePropertyDto;
6042
+ };
6043
+ type PropertyControllerUpdateResponse = unknown;
6044
+ type PropertyControllerDeleteData = {
6045
+ /**
6046
+ * Property key
6047
+ */
6048
+ key: string;
6049
+ };
6050
+ type PropertyControllerDeleteResponse = void;
5379
6051
  type TransactionRuleControllerCreateData = {
5380
6052
  /**
5381
6053
  * Region code for tenant context
@@ -5467,99 +6139,34 @@ type TransactionRuleControllerUpdateData = {
5467
6139
  region: 'cn' | 'us' | 'de' | 'gb';
5468
6140
  requestBody: UpdateTransactionRuleDto;
5469
6141
  /**
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
6142
+ * Rule ID to update
5535
6143
  */
5536
- pageSize: number;
6144
+ ruleId: string;
5537
6145
  };
5538
- type UserControllerGetAllUserSettingsByPageResponse = unknown;
5539
- type UserControllerGetAssetLiabilitySummaryResponse = unknown;
5540
- type PropertyControllerGetAllResponse = unknown;
5541
- type PropertyControllerGetByKeyData = {
6146
+ type TransactionRuleControllerUpdateResponse = TransactionRuleResponseDto;
6147
+ type TransactionRuleControllerDeleteData = {
5542
6148
  /**
5543
- * Property key
6149
+ * Region code for tenant context
5544
6150
  */
5545
- key: string;
5546
- };
5547
- type PropertyControllerGetByKeyResponse = unknown;
5548
- type PropertyControllerUpdateData = {
6151
+ region: 'cn' | 'us' | 'de' | 'gb';
5549
6152
  /**
5550
- * Property key
6153
+ * Rule ID to delete
5551
6154
  */
5552
- key: string;
5553
- requestBody: UpdatePropertyDto;
6155
+ ruleId: string;
5554
6156
  };
5555
- type PropertyControllerUpdateResponse = unknown;
5556
- type PropertyControllerDeleteData = {
6157
+ type TransactionRuleControllerDeleteResponse = void;
6158
+ type TransactionRuleControllerTestData = {
5557
6159
  /**
5558
- * Property key
6160
+ * Region code for tenant context
5559
6161
  */
5560
- key: string;
6162
+ region: 'cn' | 'us' | 'de' | 'gb';
6163
+ requestBody: TestRuleDto;
6164
+ /**
6165
+ * Rule ID to test
6166
+ */
6167
+ ruleId: string;
5561
6168
  };
5562
- type PropertyControllerDeleteResponse = void;
6169
+ type TransactionRuleControllerTestResponse = TestRuleResponseDto;
5563
6170
  type EventControllerCreateData = {
5564
6171
  /**
5565
6172
  * Region code for tenant context (decorative for life events)
@@ -5646,6 +6253,49 @@ type EventControllerGetSliceData = {
5646
6253
  region: 'cn' | 'us' | 'de' | 'gb';
5647
6254
  };
5648
6255
  type EventControllerGetSliceResponse = unknown;
6256
+ type OnboardingControllerBootstrapData = {
6257
+ /**
6258
+ * Region code for tenant context
6259
+ */
6260
+ region: 'cn' | 'us' | 'de' | 'gb';
6261
+ requestBody: OnboardingDto;
6262
+ };
6263
+ type OnboardingControllerBootstrapResponse = unknown;
6264
+ type ReconciliationControllerComputeData = {
6265
+ /**
6266
+ * Region code for tenant context (decorative for reconciliation)
6267
+ */
6268
+ region: 'cn' | 'us' | 'de' | 'gb';
6269
+ requestBody: ComputeReconciliationDto;
6270
+ };
6271
+ type ReconciliationControllerComputeResponse = ReconciliationComputeResultDto;
6272
+ type ReconciliationControllerAssertData = {
6273
+ /**
6274
+ * Region code for tenant context (decorative for reconciliation)
6275
+ */
6276
+ region: 'cn' | 'us' | 'de' | 'gb';
6277
+ requestBody: AssertReconciliationDto;
6278
+ };
6279
+ type ReconciliationControllerAssertResponse = ReconciliationRecordDto;
6280
+ type ReconciliationControllerPadData = {
6281
+ /**
6282
+ * Region code for tenant context (decorative for reconciliation)
6283
+ */
6284
+ region: 'cn' | 'us' | 'de' | 'gb';
6285
+ requestBody: PadReconciliationDto;
6286
+ };
6287
+ type ReconciliationControllerPadResponse = PadResultDto;
6288
+ type ReconciliationControllerHistoryData = {
6289
+ /**
6290
+ * BeanAccount id
6291
+ */
6292
+ accountId: string;
6293
+ /**
6294
+ * Region code for tenant context (decorative for reconciliation)
6295
+ */
6296
+ region: 'cn' | 'us' | 'de' | 'gb';
6297
+ };
6298
+ type ReconciliationControllerHistoryResponse = Array<ReconciliationRecordDto>;
5649
6299
  type ExportControllerExportBeancountResponse = unknown;
5650
6300
  type FileImportControllerImportFileData = {
5651
6301
  /**
@@ -5725,38 +6375,6 @@ type ImporterConfigControllerResetConfigData = {
5725
6375
  region: 'cn' | 'us' | 'de' | 'gb';
5726
6376
  };
5727
6377
  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
6378
  type ProviderSyncControllerSyncData = {
5761
6379
  /**
5762
6380
  * Provider name
@@ -5787,6 +6405,38 @@ type ProviderSyncControllerIsProviderSupportedData = {
5787
6405
  region: 'cn' | 'us' | 'de' | 'gb';
5788
6406
  };
5789
6407
  type ProviderSyncControllerIsProviderSupportedResponse = unknown;
6408
+ type ExternalAccountLinkControllerCreateData = {
6409
+ /**
6410
+ * Region code for tenant context
6411
+ */
6412
+ region: 'cn' | 'us' | 'de' | 'gb';
6413
+ requestBody: CreateExternalAccountLinkDto;
6414
+ };
6415
+ type ExternalAccountLinkControllerCreateResponse = ExternalAccountLinkResponseDto;
6416
+ type ExternalAccountLinkControllerFindAllData = {
6417
+ provider: string;
6418
+ /**
6419
+ * Region code for tenant context
6420
+ */
6421
+ region: 'cn' | 'us' | 'de' | 'gb';
6422
+ };
6423
+ type ExternalAccountLinkControllerFindAllResponse = ExternalAccountLinkListResponseDto;
6424
+ type ExternalAccountLinkControllerFindOneData = {
6425
+ id: string;
6426
+ /**
6427
+ * Region code for tenant context
6428
+ */
6429
+ region: 'cn' | 'us' | 'de' | 'gb';
6430
+ };
6431
+ type ExternalAccountLinkControllerFindOneResponse = ExternalAccountLinkResponseDto;
6432
+ type ExternalAccountLinkControllerRemoveData = {
6433
+ id: string;
6434
+ /**
6435
+ * Region code for tenant context
6436
+ */
6437
+ region: 'cn' | 'us' | 'de' | 'gb';
6438
+ };
6439
+ type ExternalAccountLinkControllerRemoveResponse = void;
5790
6440
  type TelemetryControllerReportTelemetryData = {
5791
6441
  /**
5792
6442
  * Region code for tenant context
@@ -5847,192 +6497,90 @@ type NlpControllerGetSessionData = {
5847
6497
  sessionId?: string;
5848
6498
  };
5849
6499
  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';
6500
+ type PlatformControllerFindAllResponse = unknown;
6501
+ type PlatformControllerCreateData = {
6502
+ requestBody: CreatePlatformDto;
5908
6503
  };
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';
6504
+ type PlatformControllerCreateResponse = unknown;
6505
+ type PlatformControllerGetPlatformListResponse = Array<PlatformListItemDto>;
6506
+ type PlatformControllerMatchPlatformsData = {
5923
6507
  /**
5924
- * Region code for tenant context
6508
+ * Search query Chinese name, English name, or abbreviation
5925
6509
  */
5926
- region: 'cn' | 'us' | 'de' | 'gb';
5927
- };
5928
- type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
5929
- type PriceControllerCreateData = {
6510
+ q: string;
5930
6511
  /**
5931
- * Region code for tenant context
6512
+ * Region code for category override lookup
5932
6513
  */
5933
- region: 'cn' | 'us' | 'de' | 'gb';
5934
- requestBody: CreateBeanPriceDto;
6514
+ region?: string;
5935
6515
  };
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';
6516
+ type PlatformControllerMatchPlatformsResponse = PlatformMatchResponseDto;
6517
+ type PlatformControllerUpdateData = {
5966
6518
  /**
5967
- * Search term for currency or quoteCurrency (case-insensitive partial match)
6519
+ * Platform ID
5968
6520
  */
5969
- search?: string;
6521
+ id: string;
6522
+ requestBody: UpdatePlatformDto;
5970
6523
  };
5971
- type PriceControllerFindAllResponse = PriceListResponseDto;
5972
- type PriceControllerFindOneData = {
6524
+ type PlatformControllerUpdateResponse = unknown;
6525
+ type PlatformControllerDeleteData = {
5973
6526
  /**
5974
- * Price ID
6527
+ * Platform ID
5975
6528
  */
5976
6529
  id: string;
5977
- /**
5978
- * Region code for tenant context
5979
- */
5980
- region: 'cn' | 'us' | 'de' | 'gb';
5981
6530
  };
5982
- type PriceControllerFindOneResponse = PriceResponseDto;
5983
- type PriceControllerUpdateData = {
6531
+ type PlatformControllerDeleteResponse = void;
6532
+ type DashboardControllerGetNetWorthData = {
5984
6533
  /**
5985
- * Price ID
6534
+ * Date for balance calculation (ISO 8601 format)
5986
6535
  */
5987
- id: string;
6536
+ date?: string;
5988
6537
  /**
5989
6538
  * Region code for tenant context
5990
6539
  */
5991
6540
  region: 'cn' | 'us' | 'de' | 'gb';
5992
- requestBody: UpdateBeanPriceDto;
5993
6541
  };
5994
- type PriceControllerUpdateResponse = PriceResponseDto;
5995
- type PriceControllerDeleteData = {
6542
+ type DashboardControllerGetNetWorthResponse = NetWorthResponseDto;
6543
+ type DashboardControllerGetAccountsData = {
5996
6544
  /**
5997
- * Price ID
6545
+ * Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
5998
6546
  */
5999
- id: string;
6547
+ accountId?: string;
6000
6548
  /**
6001
- * Region code for tenant context
6549
+ * Date for balance calculation (ISO 8601 format)
6002
6550
  */
6003
- region: 'cn' | 'us' | 'de' | 'gb';
6004
- };
6005
- type PriceControllerDeleteResponse = void;
6006
- type PriceControllerBulkCreateData = {
6551
+ date?: string;
6552
+ /**
6553
+ * Grouping strategy
6554
+ */
6555
+ groupBy?: 'platform' | 'assetClass' | 'holdingAssetClass' | 'holdingAssetClassByAccount';
6007
6556
  /**
6008
6557
  * Region code for tenant context
6009
6558
  */
6010
6559
  region: 'cn' | 'us' | 'de' | 'gb';
6011
- requestBody: Array<string>;
6012
6560
  };
6013
- type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
6014
- type ReportingControllerGetPortfolioTrendsData = {
6015
- /**
6016
- * Data granularity
6017
- */
6018
- granularity?: 'day' | 'week' | 'month';
6561
+ type DashboardControllerGetAccountsResponse = AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
6562
+ type DashboardControllerGetCashFlowData = {
6019
6563
  /**
6020
- * Time period
6564
+ * Period in YYYY-MM format
6021
6565
  */
6022
- period?: '1m' | '3m' | '6m' | '1y';
6566
+ period: string;
6023
6567
  /**
6024
6568
  * Region code for tenant context
6025
6569
  */
6026
6570
  region: 'cn' | 'us' | 'de' | 'gb';
6027
6571
  };
6028
- type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
6029
- type ReportingControllerGetCashFlowTrendsData = {
6572
+ type DashboardControllerGetCashFlowResponse = CashFlowResponseDto;
6573
+ type DashboardControllerGetExpensesData = {
6030
6574
  /**
6031
- * Data granularity (accepted for API symmetry; v1 returns month buckets)
6575
+ * Account root to aggregate (expense ^Expenses:, income ^Income:)
6032
6576
  */
6033
- granularity?: 'day' | 'week' | 'month';
6577
+ flow?: 'expense' | 'income';
6034
6578
  /**
6035
- * Time period
6579
+ * Grouping strategy
6580
+ */
6581
+ groupBy?: 'category';
6582
+ /**
6583
+ * Time window (1m = current calendar month)
6036
6584
  */
6037
6585
  period?: '1m' | '3m' | '6m' | '1y';
6038
6586
  /**
@@ -6040,31 +6588,31 @@ type ReportingControllerGetCashFlowTrendsData = {
6040
6588
  */
6041
6589
  region: 'cn' | 'us' | 'de' | 'gb';
6042
6590
  };
6043
- type ReportingControllerGetCashFlowTrendsResponse = CashFlowTrendsResponseDto;
6044
- type ReportingControllerGenerateSnapshotData = {
6591
+ type DashboardControllerGetExpensesResponse = ExpensesByCategoryResponseDto;
6592
+ type HoldingPnlControllerGetHoldingPnlData = {
6045
6593
  /**
6046
- * Region code for tenant context
6594
+ * Scope to a single account
6047
6595
  */
6048
- region: 'cn' | 'us' | 'de' | 'gb';
6596
+ accountId?: string;
6049
6597
  /**
6050
- * Optional date (defaults to today)
6598
+ * As-of date (ISO 8601), defaults to today
6051
6599
  */
6052
- requestBody: GenerateSnapshotBody;
6053
- };
6054
- type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
6055
- type ReportingControllerBackfillSnapshotsData = {
6600
+ asOf?: string;
6601
+ /**
6602
+ * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
6603
+ */
6604
+ method?: 'FIFO' | 'average';
6056
6605
  /**
6057
6606
  * Region code for tenant context
6058
6607
  */
6059
6608
  region: 'cn' | 'us' | 'de' | 'gb';
6060
- requestBody: BackfillSnapshotsBody;
6061
6609
  };
6062
- type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
6610
+ type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
6063
6611
  type ApiKeysControllerCreateApiKeyResponse = unknown;
6064
6612
  type AuthControllerAccessTokenLoginData = {
6065
6613
  requestBody: AnonymousLoginDto;
6066
6614
  };
6067
- type AuthControllerAccessTokenLoginResponse = unknown;
6615
+ type AuthControllerAccessTokenLoginResponse = AnonymousLoginResponseDto;
6068
6616
  type CacheControllerFlushCacheResponse = unknown;
6069
6617
  type ExchangeRateControllerGetExchangeRateData = {
6070
6618
  /**
@@ -6091,6 +6639,29 @@ type HealthControllerResetCircuitBreakerData = {
6091
6639
  type HealthControllerResetCircuitBreakerResponse = unknown;
6092
6640
  type HealthControllerGetMetricsResponse = unknown;
6093
6641
  type InfoControllerGetInfoResponse = unknown;
6642
+ type SymbolControllerSearchData = {
6643
+ /**
6644
+ * Filter by OpenBB asset_type (e.g. stock, etf)
6645
+ */
6646
+ assetType?: string;
6647
+ /**
6648
+ * Filter by exchange code (e.g. US, HK, SS, SZ)
6649
+ */
6650
+ exchange?: string;
6651
+ /**
6652
+ * Maximum number of results (clamped 1..50)
6653
+ */
6654
+ limit?: number;
6655
+ /**
6656
+ * Search term — matched against symbol and instrument name. Empty string returns [].
6657
+ */
6658
+ q: string;
6659
+ };
6660
+ type SymbolControllerSearchResponse = Array<SymbolSearchResultDto>;
6661
+ type SymbolControllerGetQuoteData = {
6662
+ symbol: string;
6663
+ };
6664
+ type SymbolControllerGetQuoteResponse = SymbolQuoteDto;
6094
6665
  type $OpenApiTs = {
6095
6666
  '/api/v1/{region}/bean/accounts': {
6096
6667
  post: {
@@ -6155,7 +6726,7 @@ type $OpenApiTs = {
6155
6726
  */
6156
6727
  404: unknown;
6157
6728
  /**
6158
- * Account has transactions and cannot be deleted
6729
+ * Account has active transactions and cannot be deleted
6159
6730
  */
6160
6731
  409: unknown;
6161
6732
  };
@@ -6199,6 +6770,25 @@ type $OpenApiTs = {
6199
6770
  };
6200
6771
  };
6201
6772
  };
6773
+ '/api/v1/{region}/bean/accounts/{id}/opening-balance': {
6774
+ post: {
6775
+ req: AccountControllerAddOpeningBalanceData;
6776
+ res: {
6777
+ /**
6778
+ * Opening-balance transaction created
6779
+ */
6780
+ 201: OpeningBalanceResultDto;
6781
+ /**
6782
+ * Account not found
6783
+ */
6784
+ 404: unknown;
6785
+ /**
6786
+ * An opening balance already exists for this account
6787
+ */
6788
+ 409: unknown;
6789
+ };
6790
+ };
6791
+ };
6202
6792
  '/api/v1/{region}/bean/account-standards': {
6203
6793
  get: {
6204
6794
  req: AccountStandardsControllerGetTemplatesData;
@@ -6807,6 +7397,90 @@ type $OpenApiTs = {
6807
7397
  };
6808
7398
  };
6809
7399
  };
7400
+ '/api/v1/{region}/bean/prices': {
7401
+ post: {
7402
+ req: PriceControllerCreateData;
7403
+ res: {
7404
+ /**
7405
+ * Price created successfully
7406
+ */
7407
+ 201: PriceResponseDto;
7408
+ /**
7409
+ * Currency or quoteCurrency commodity not found
7410
+ */
7411
+ 404: unknown;
7412
+ /**
7413
+ * Price already exists for this currency pair and date
7414
+ */
7415
+ 409: unknown;
7416
+ };
7417
+ };
7418
+ get: {
7419
+ req: PriceControllerFindAllData;
7420
+ res: {
7421
+ /**
7422
+ * Prices retrieved successfully
7423
+ */
7424
+ 200: PriceListResponseDto;
7425
+ };
7426
+ };
7427
+ };
7428
+ '/api/v1/{region}/bean/prices/{id}': {
7429
+ get: {
7430
+ req: PriceControllerFindOneData;
7431
+ res: {
7432
+ /**
7433
+ * Price retrieved successfully
7434
+ */
7435
+ 200: PriceResponseDto;
7436
+ /**
7437
+ * Price not found
7438
+ */
7439
+ 404: unknown;
7440
+ };
7441
+ };
7442
+ put: {
7443
+ req: PriceControllerUpdateData;
7444
+ res: {
7445
+ /**
7446
+ * Price updated successfully
7447
+ */
7448
+ 200: PriceResponseDto;
7449
+ /**
7450
+ * Price not found
7451
+ */
7452
+ 404: unknown;
7453
+ /**
7454
+ * Updated price conflicts with existing price
7455
+ */
7456
+ 409: unknown;
7457
+ };
7458
+ };
7459
+ delete: {
7460
+ req: PriceControllerDeleteData;
7461
+ res: {
7462
+ /**
7463
+ * Price deleted successfully
7464
+ */
7465
+ 204: void;
7466
+ /**
7467
+ * Price not found
7468
+ */
7469
+ 404: unknown;
7470
+ };
7471
+ };
7472
+ };
7473
+ '/api/v1/{region}/bean/prices/bulk': {
7474
+ post: {
7475
+ req: PriceControllerBulkCreateData;
7476
+ res: {
7477
+ /**
7478
+ * Prices created successfully
7479
+ */
7480
+ 201: Array<PriceResponseDto>;
7481
+ };
7482
+ };
7483
+ };
6810
7484
  '/api/v1/{region}/bean/recurring-rules': {
6811
7485
  post: {
6812
7486
  req: RecurringRuleControllerCreateData;
@@ -7057,397 +7731,469 @@ type $OpenApiTs = {
7057
7731
  };
7058
7732
  };
7059
7733
  };
7060
- '/api/v1/{region}/bean/transaction-rules': {
7734
+ '/api/v1/{region}/reporting/portfolio/trends': {
7735
+ get: {
7736
+ req: ReportingControllerGetPortfolioTrendsData;
7737
+ res: {
7738
+ /**
7739
+ * Trends retrieved successfully
7740
+ */
7741
+ 200: PortfolioTrendsResponseDto;
7742
+ /**
7743
+ * User not authenticated
7744
+ */
7745
+ 401: unknown;
7746
+ };
7747
+ };
7748
+ };
7749
+ '/api/v1/{region}/reporting/cash-flow/trends': {
7750
+ get: {
7751
+ req: ReportingControllerGetCashFlowTrendsData;
7752
+ res: {
7753
+ /**
7754
+ * Cash-flow trends retrieved successfully
7755
+ */
7756
+ 200: CashFlowTrendsResponseDto;
7757
+ /**
7758
+ * User not authenticated
7759
+ */
7760
+ 401: unknown;
7761
+ };
7762
+ };
7763
+ };
7764
+ '/api/v1/{region}/reporting/snapshots/generate': {
7061
7765
  post: {
7062
- req: TransactionRuleControllerCreateData;
7766
+ req: ReportingControllerGenerateSnapshotData;
7063
7767
  res: {
7064
7768
  /**
7065
- * Rule updated successfully (upsert mode)
7769
+ * Snapshot generated successfully
7066
7770
  */
7067
- 200: TransactionRuleResponseDto;
7771
+ 200: GenerateSnapshotResponse;
7068
7772
  /**
7069
- * Validation failed
7773
+ * Invalid date format
7070
7774
  */
7071
- 400: ApiProblemResponseDto;
7775
+ 400: unknown;
7776
+ /**
7777
+ * User not authenticated
7778
+ */
7779
+ 401: unknown;
7780
+ };
7781
+ };
7782
+ };
7783
+ '/api/v1/{region}/reporting/snapshots/backfill': {
7784
+ post: {
7785
+ req: ReportingControllerBackfillSnapshotsData;
7786
+ res: {
7787
+ /**
7788
+ * Backfill completed successfully
7789
+ */
7790
+ 200: BackfillSnapshotsResponse;
7791
+ /**
7792
+ * Invalid date format or range
7793
+ */
7794
+ 400: unknown;
7795
+ /**
7796
+ * User not authenticated
7797
+ */
7798
+ 401: unknown;
7799
+ /**
7800
+ * Backfill already in progress for this user
7801
+ */
7802
+ 409: unknown;
7803
+ };
7804
+ };
7805
+ };
7806
+ '/api/v1/users': {
7807
+ delete: {
7808
+ req: UserControllerDeleteOwnUserData;
7809
+ res: {
7072
7810
  /**
7073
- * Unauthorized
7811
+ * User deleted successfully
7074
7812
  */
7075
- 401: ApiProblemResponseDto;
7813
+ 204: void;
7076
7814
  /**
7077
- * Resource conflict - another process is updating this rule
7815
+ * Invalid access token
7078
7816
  */
7079
- 409: ApiProblemResponseDto;
7817
+ 403: unknown;
7080
7818
  };
7081
7819
  };
7082
7820
  get: {
7083
- req: TransactionRuleControllerListData;
7821
+ req: UserControllerGetUserData;
7084
7822
  res: {
7085
7823
  /**
7086
- * List of rules
7087
- */
7088
- 200: TransactionRuleListResponseDto;
7089
- /**
7090
- * Unauthorized
7824
+ * User retrieved successfully
7091
7825
  */
7092
- 401: ApiProblemResponseDto;
7826
+ 200: unknown;
7093
7827
  };
7094
7828
  };
7095
- };
7096
- '/api/v1/{region}/bean/transaction-rules/validate': {
7097
7829
  post: {
7098
- req: TransactionRuleControllerValidateData;
7830
+ req: UserControllerSignupUserData;
7099
7831
  res: {
7100
7832
  /**
7101
- * Validation result
7833
+ * User created successfully
7102
7834
  */
7103
- 200: ValidateRuleResponseDto;
7835
+ 201: SignupResponseDto;
7104
7836
  /**
7105
- * Validation failed
7837
+ * Invalid Turnstile token (when Turnstile is enabled)
7106
7838
  */
7107
- 400: ApiProblemResponseDto;
7839
+ 400: unknown;
7108
7840
  /**
7109
- * Unauthorized
7841
+ * User signup is disabled
7110
7842
  */
7111
- 401: ApiProblemResponseDto;
7843
+ 403: unknown;
7112
7844
  };
7113
7845
  };
7114
7846
  };
7115
- '/api/v1/{region}/bean/transaction-rules/bulk': {
7116
- post: {
7117
- req: TransactionRuleControllerBulkCreateData;
7847
+ '/api/v1/users/{id}': {
7848
+ delete: {
7849
+ req: UserControllerDeleteUserData;
7118
7850
  res: {
7119
7851
  /**
7120
- * Bulk create completed
7121
- */
7122
- 201: BulkCreateRulesResponseDto;
7123
- /**
7124
- * Invalid bulk create data
7852
+ * User deleted successfully
7125
7853
  */
7126
- 400: ApiProblemResponseDto;
7854
+ 204: void;
7127
7855
  /**
7128
- * Unauthorized
7856
+ * Cannot delete own account or insufficient permissions
7129
7857
  */
7130
- 401: ApiProblemResponseDto;
7858
+ 403: unknown;
7131
7859
  };
7132
7860
  };
7133
7861
  };
7134
- '/api/v1/{region}/bean/transaction-rules/export/{format}': {
7862
+ '/api/v1/users/{id}/info': {
7135
7863
  get: {
7136
- req: TransactionRuleControllerExportData;
7864
+ req: UserControllerGetUserInfoData;
7137
7865
  res: {
7138
7866
  /**
7139
- * Exported rules
7140
- */
7141
- 200: ExportRulesResponseDto;
7142
- /**
7143
- * Unsupported format
7867
+ * User info retrieved successfully
7144
7868
  */
7145
- 400: ApiProblemResponseDto;
7869
+ 200: unknown;
7146
7870
  /**
7147
- * Unauthorized
7871
+ * Cannot access other user info without admin permission
7148
7872
  */
7149
- 401: ApiProblemResponseDto;
7873
+ 403: unknown;
7150
7874
  };
7151
7875
  };
7152
7876
  };
7153
- '/api/v1/{region}/bean/transaction-rules/statistics/{period}': {
7154
- get: {
7155
- req: TransactionRuleControllerGetStatisticsData;
7877
+ '/api/v1/users/setting': {
7878
+ put: {
7879
+ req: UserControllerUpdateUserSettingData;
7156
7880
  res: {
7157
7881
  /**
7158
- * Rule statistics
7882
+ * Settings updated successfully
7159
7883
  */
7160
- 200: RuleStatisticsResponseDto;
7884
+ 200: unknown;
7161
7885
  /**
7162
- * Unauthorized
7886
+ * Insufficient permissions
7163
7887
  */
7164
- 401: ApiProblemResponseDto;
7888
+ 403: unknown;
7165
7889
  };
7166
7890
  };
7167
7891
  };
7168
- '/api/v1/{region}/bean/transaction-rules/{ruleId}': {
7892
+ '/api/v1/users/settings-by-page': {
7169
7893
  get: {
7170
- req: TransactionRuleControllerGetDetailData;
7894
+ req: UserControllerGetAllUserSettingsByPageData;
7171
7895
  res: {
7172
7896
  /**
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
7897
+ * Settings list retrieved successfully
7186
7898
  */
7187
- 404: ApiProblemResponseDto;
7899
+ 200: unknown;
7188
7900
  };
7189
7901
  };
7190
- put: {
7191
- req: TransactionRuleControllerUpdateData;
7902
+ };
7903
+ '/api/v1/users/asset-liability-summary': {
7904
+ get: {
7192
7905
  res: {
7193
7906
  /**
7194
- * Rule updated successfully
7907
+ * Summary retrieved successfully
7195
7908
  */
7196
- 200: TransactionRuleResponseDto;
7909
+ 200: unknown;
7910
+ };
7911
+ };
7912
+ };
7913
+ '/api/v1/admin/properties': {
7914
+ get: {
7915
+ res: {
7197
7916
  /**
7198
- * Validation failed
7917
+ * Properties retrieved successfully
7199
7918
  */
7200
- 400: ApiProblemResponseDto;
7919
+ 200: unknown;
7201
7920
  /**
7202
7921
  * Unauthorized
7203
7922
  */
7204
- 401: ApiProblemResponseDto;
7205
- /**
7206
- * Forbidden - not owner of rule
7207
- */
7208
- 403: ApiProblemResponseDto;
7209
- /**
7210
- * Rule not found
7211
- */
7212
- 404: ApiProblemResponseDto;
7923
+ 401: unknown;
7213
7924
  /**
7214
- * Resource conflict - rule is being modified by another process
7925
+ * Forbidden - insufficient permissions
7215
7926
  */
7216
- 409: ApiProblemResponseDto;
7927
+ 403: unknown;
7217
7928
  };
7218
7929
  };
7219
- delete: {
7220
- req: TransactionRuleControllerDeleteData;
7930
+ };
7931
+ '/api/v1/admin/properties/{key}': {
7932
+ get: {
7933
+ req: PropertyControllerGetByKeyData;
7221
7934
  res: {
7222
7935
  /**
7223
- * Rule deleted successfully
7936
+ * Property retrieved successfully
7224
7937
  */
7225
- 204: void;
7938
+ 200: unknown;
7226
7939
  /**
7227
7940
  * Unauthorized
7228
7941
  */
7229
- 401: ApiProblemResponseDto;
7230
- /**
7231
- * Forbidden - not owner of rule
7232
- */
7233
- 403: ApiProblemResponseDto;
7942
+ 401: unknown;
7234
7943
  /**
7235
- * Rule not found
7944
+ * Forbidden - insufficient permissions
7236
7945
  */
7237
- 404: ApiProblemResponseDto;
7946
+ 403: unknown;
7238
7947
  /**
7239
- * Resource conflict - rule is being modified by another process
7948
+ * Property not found
7240
7949
  */
7241
- 409: ApiProblemResponseDto;
7950
+ 404: unknown;
7242
7951
  };
7243
7952
  };
7244
- };
7245
- '/api/v1/{region}/bean/transaction-rules/{ruleId}/test': {
7246
- post: {
7247
- req: TransactionRuleControllerTestData;
7953
+ put: {
7954
+ req: PropertyControllerUpdateData;
7248
7955
  res: {
7249
7956
  /**
7250
- * Test result
7957
+ * Property updated successfully
7251
7958
  */
7252
- 200: TestRuleResponseDto;
7959
+ 200: unknown;
7253
7960
  /**
7254
7961
  * Unauthorized
7255
7962
  */
7256
- 401: ApiProblemResponseDto;
7257
- /**
7258
- * Forbidden - not owner of rule
7259
- */
7260
- 403: ApiProblemResponseDto;
7963
+ 401: unknown;
7261
7964
  /**
7262
- * Rule not found
7965
+ * Forbidden - insufficient permissions
7263
7966
  */
7264
- 404: ApiProblemResponseDto;
7967
+ 403: unknown;
7265
7968
  };
7266
7969
  };
7267
- };
7268
- '/api/v1/users': {
7269
7970
  delete: {
7270
- req: UserControllerDeleteOwnUserData;
7971
+ req: PropertyControllerDeleteData;
7271
7972
  res: {
7272
7973
  /**
7273
- * User deleted successfully
7974
+ * Property deleted successfully
7274
7975
  */
7275
7976
  204: void;
7276
7977
  /**
7277
- * Invalid access token
7978
+ * Unauthorized
7979
+ */
7980
+ 401: unknown;
7981
+ /**
7982
+ * Forbidden - insufficient permissions
7278
7983
  */
7279
7984
  403: unknown;
7280
- };
7281
- };
7282
- get: {
7283
- req: UserControllerGetUserData;
7284
- res: {
7285
7985
  /**
7286
- * User retrieved successfully
7986
+ * Property not found
7287
7987
  */
7288
- 200: unknown;
7988
+ 404: unknown;
7289
7989
  };
7290
7990
  };
7991
+ };
7992
+ '/api/v1/{region}/bean/transaction-rules': {
7291
7993
  post: {
7292
- req: UserControllerSignupUserData;
7994
+ req: TransactionRuleControllerCreateData;
7293
7995
  res: {
7294
7996
  /**
7295
- * User created successfully
7997
+ * Rule updated successfully (upsert mode)
7296
7998
  */
7297
- 201: unknown;
7999
+ 200: TransactionRuleResponseDto;
7298
8000
  /**
7299
- * Invalid Turnstile token (when Turnstile is enabled)
8001
+ * Validation failed
7300
8002
  */
7301
- 400: unknown;
8003
+ 400: ApiProblemResponseDto;
7302
8004
  /**
7303
- * User signup is disabled
8005
+ * Unauthorized
7304
8006
  */
7305
- 403: unknown;
8007
+ 401: ApiProblemResponseDto;
8008
+ /**
8009
+ * Resource conflict - another process is updating this rule
8010
+ */
8011
+ 409: ApiProblemResponseDto;
7306
8012
  };
7307
8013
  };
7308
- };
7309
- '/api/v1/users/{id}': {
7310
- delete: {
7311
- req: UserControllerDeleteUserData;
8014
+ get: {
8015
+ req: TransactionRuleControllerListData;
7312
8016
  res: {
7313
8017
  /**
7314
- * User deleted successfully
8018
+ * List of rules
7315
8019
  */
7316
- 204: void;
8020
+ 200: TransactionRuleListResponseDto;
7317
8021
  /**
7318
- * Cannot delete own account or insufficient permissions
8022
+ * Unauthorized
7319
8023
  */
7320
- 403: unknown;
8024
+ 401: ApiProblemResponseDto;
7321
8025
  };
7322
8026
  };
7323
8027
  };
7324
- '/api/v1/users/{id}/info': {
7325
- get: {
7326
- req: UserControllerGetUserInfoData;
8028
+ '/api/v1/{region}/bean/transaction-rules/validate': {
8029
+ post: {
8030
+ req: TransactionRuleControllerValidateData;
7327
8031
  res: {
7328
8032
  /**
7329
- * User info retrieved successfully
8033
+ * Validation result
7330
8034
  */
7331
- 200: unknown;
8035
+ 200: ValidateRuleResponseDto;
7332
8036
  /**
7333
- * Cannot access other user info without admin permission
8037
+ * Validation failed
7334
8038
  */
7335
- 403: unknown;
8039
+ 400: ApiProblemResponseDto;
8040
+ /**
8041
+ * Unauthorized
8042
+ */
8043
+ 401: ApiProblemResponseDto;
7336
8044
  };
7337
8045
  };
7338
8046
  };
7339
- '/api/v1/users/setting': {
7340
- put: {
7341
- req: UserControllerUpdateUserSettingData;
8047
+ '/api/v1/{region}/bean/transaction-rules/bulk': {
8048
+ post: {
8049
+ req: TransactionRuleControllerBulkCreateData;
7342
8050
  res: {
7343
8051
  /**
7344
- * Settings updated successfully
8052
+ * Bulk create completed
7345
8053
  */
7346
- 200: unknown;
8054
+ 201: BulkCreateRulesResponseDto;
7347
8055
  /**
7348
- * Insufficient permissions
8056
+ * Invalid bulk create data
7349
8057
  */
7350
- 403: unknown;
8058
+ 400: ApiProblemResponseDto;
8059
+ /**
8060
+ * Unauthorized
8061
+ */
8062
+ 401: ApiProblemResponseDto;
7351
8063
  };
7352
8064
  };
7353
8065
  };
7354
- '/api/v1/users/settings-by-page': {
8066
+ '/api/v1/{region}/bean/transaction-rules/export/{format}': {
7355
8067
  get: {
7356
- req: UserControllerGetAllUserSettingsByPageData;
8068
+ req: TransactionRuleControllerExportData;
7357
8069
  res: {
7358
8070
  /**
7359
- * Settings list retrieved successfully
8071
+ * Exported rules
7360
8072
  */
7361
- 200: unknown;
8073
+ 200: ExportRulesResponseDto;
8074
+ /**
8075
+ * Unsupported format
8076
+ */
8077
+ 400: ApiProblemResponseDto;
8078
+ /**
8079
+ * Unauthorized
8080
+ */
8081
+ 401: ApiProblemResponseDto;
7362
8082
  };
7363
8083
  };
7364
8084
  };
7365
- '/api/v1/users/asset-liability-summary': {
8085
+ '/api/v1/{region}/bean/transaction-rules/statistics/{period}': {
7366
8086
  get: {
8087
+ req: TransactionRuleControllerGetStatisticsData;
7367
8088
  res: {
7368
8089
  /**
7369
- * Summary retrieved successfully
8090
+ * Rule statistics
7370
8091
  */
7371
- 200: unknown;
8092
+ 200: RuleStatisticsResponseDto;
8093
+ /**
8094
+ * Unauthorized
8095
+ */
8096
+ 401: ApiProblemResponseDto;
7372
8097
  };
7373
8098
  };
7374
8099
  };
7375
- '/api/v1/admin/properties': {
8100
+ '/api/v1/{region}/bean/transaction-rules/{ruleId}': {
7376
8101
  get: {
8102
+ req: TransactionRuleControllerGetDetailData;
7377
8103
  res: {
7378
8104
  /**
7379
- * Properties retrieved successfully
8105
+ * Rule details
7380
8106
  */
7381
- 200: unknown;
8107
+ 200: TransactionRuleResponseDto;
7382
8108
  /**
7383
8109
  * Unauthorized
7384
8110
  */
7385
- 401: unknown;
8111
+ 401: ApiProblemResponseDto;
7386
8112
  /**
7387
- * Forbidden - insufficient permissions
8113
+ * Forbidden - not owner of rule
7388
8114
  */
7389
- 403: unknown;
8115
+ 403: ApiProblemResponseDto;
8116
+ /**
8117
+ * Rule not found
8118
+ */
8119
+ 404: ApiProblemResponseDto;
7390
8120
  };
7391
8121
  };
7392
- };
7393
- '/api/v1/admin/properties/{key}': {
7394
- get: {
7395
- req: PropertyControllerGetByKeyData;
8122
+ put: {
8123
+ req: TransactionRuleControllerUpdateData;
7396
8124
  res: {
7397
8125
  /**
7398
- * Property retrieved successfully
8126
+ * Rule updated successfully
7399
8127
  */
7400
- 200: unknown;
8128
+ 200: TransactionRuleResponseDto;
8129
+ /**
8130
+ * Validation failed
8131
+ */
8132
+ 400: ApiProblemResponseDto;
7401
8133
  /**
7402
8134
  * Unauthorized
7403
8135
  */
7404
- 401: unknown;
8136
+ 401: ApiProblemResponseDto;
7405
8137
  /**
7406
- * Forbidden - insufficient permissions
8138
+ * Forbidden - not owner of rule
7407
8139
  */
7408
- 403: unknown;
8140
+ 403: ApiProblemResponseDto;
7409
8141
  /**
7410
- * Property not found
8142
+ * Rule not found
7411
8143
  */
7412
- 404: unknown;
8144
+ 404: ApiProblemResponseDto;
8145
+ /**
8146
+ * Resource conflict - rule is being modified by another process
8147
+ */
8148
+ 409: ApiProblemResponseDto;
7413
8149
  };
7414
8150
  };
7415
- put: {
7416
- req: PropertyControllerUpdateData;
8151
+ delete: {
8152
+ req: TransactionRuleControllerDeleteData;
7417
8153
  res: {
7418
8154
  /**
7419
- * Property updated successfully
8155
+ * Rule deleted successfully
7420
8156
  */
7421
- 200: unknown;
8157
+ 204: void;
7422
8158
  /**
7423
8159
  * Unauthorized
7424
8160
  */
7425
- 401: unknown;
8161
+ 401: ApiProblemResponseDto;
7426
8162
  /**
7427
- * Forbidden - insufficient permissions
8163
+ * Forbidden - not owner of rule
7428
8164
  */
7429
- 403: unknown;
8165
+ 403: ApiProblemResponseDto;
8166
+ /**
8167
+ * Rule not found
8168
+ */
8169
+ 404: ApiProblemResponseDto;
8170
+ /**
8171
+ * Resource conflict - rule is being modified by another process
8172
+ */
8173
+ 409: ApiProblemResponseDto;
7430
8174
  };
7431
8175
  };
7432
- delete: {
7433
- req: PropertyControllerDeleteData;
8176
+ };
8177
+ '/api/v1/{region}/bean/transaction-rules/{ruleId}/test': {
8178
+ post: {
8179
+ req: TransactionRuleControllerTestData;
7434
8180
  res: {
7435
8181
  /**
7436
- * Property deleted successfully
8182
+ * Test result
7437
8183
  */
7438
- 204: void;
8184
+ 200: TestRuleResponseDto;
7439
8185
  /**
7440
8186
  * Unauthorized
7441
8187
  */
7442
- 401: unknown;
8188
+ 401: ApiProblemResponseDto;
7443
8189
  /**
7444
- * Forbidden - insufficient permissions
8190
+ * Forbidden - not owner of rule
7445
8191
  */
7446
- 403: unknown;
8192
+ 403: ApiProblemResponseDto;
7447
8193
  /**
7448
- * Property not found
8194
+ * Rule not found
7449
8195
  */
7450
- 404: unknown;
8196
+ 404: ApiProblemResponseDto;
7451
8197
  };
7452
8198
  };
7453
8199
  };
@@ -7547,6 +8293,85 @@ type $OpenApiTs = {
7547
8293
  };
7548
8294
  };
7549
8295
  };
8296
+ '/api/v1/{region}/bean/onboarding': {
8297
+ post: {
8298
+ req: OnboardingControllerBootstrapData;
8299
+ res: {
8300
+ /**
8301
+ * Onboarding bootstrap result.
8302
+ */
8303
+ 201: unknown;
8304
+ /**
8305
+ * Invalid region/account path/duplicate paths.
8306
+ */
8307
+ 422: unknown;
8308
+ };
8309
+ };
8310
+ };
8311
+ '/api/v1/{region}/bean/reconciliations': {
8312
+ post: {
8313
+ req: ReconciliationControllerComputeData;
8314
+ res: {
8315
+ /**
8316
+ * Reconciliation preview
8317
+ */
8318
+ 200: ReconciliationComputeResultDto;
8319
+ /**
8320
+ * Account not found
8321
+ */
8322
+ 404: unknown;
8323
+ };
8324
+ };
8325
+ };
8326
+ '/api/v1/{region}/bean/reconciliations/assert': {
8327
+ post: {
8328
+ req: ReconciliationControllerAssertData;
8329
+ res: {
8330
+ /**
8331
+ * Balance assertion recorded
8332
+ */
8333
+ 201: ReconciliationRecordDto;
8334
+ /**
8335
+ * Account not found
8336
+ */
8337
+ 404: unknown;
8338
+ };
8339
+ };
8340
+ };
8341
+ '/api/v1/{region}/bean/reconciliations/pad': {
8342
+ post: {
8343
+ req: ReconciliationControllerPadData;
8344
+ res: {
8345
+ /**
8346
+ * Pad adjusting entry generated
8347
+ */
8348
+ 201: PadResultDto;
8349
+ /**
8350
+ * Book already within tolerance — no pad needed
8351
+ */
8352
+ 400: unknown;
8353
+ /**
8354
+ * Account not found
8355
+ */
8356
+ 404: unknown;
8357
+ };
8358
+ };
8359
+ };
8360
+ '/api/v1/{region}/bean/accounts/{accountId}/reconciliations': {
8361
+ get: {
8362
+ req: ReconciliationControllerHistoryData;
8363
+ res: {
8364
+ /**
8365
+ * Reconciliation history
8366
+ */
8367
+ 200: Array<ReconciliationRecordDto>;
8368
+ /**
8369
+ * Account not found
8370
+ */
8371
+ 404: unknown;
8372
+ };
8373
+ };
8374
+ };
7550
8375
  '/api/v1/{region}/bean/export/beancount': {
7551
8376
  get: {
7552
8377
  res: {
@@ -7689,83 +8514,11 @@ type $OpenApiTs = {
7689
8514
  /**
7690
8515
  * Configuration reset successfully
7691
8516
  */
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;
8517
+ 200: ImporterConfigDto;
7765
8518
  /**
7766
- * Platform not found
8519
+ * Invalid input - Unsupported importer
7767
8520
  */
7768
- 404: unknown;
8521
+ 400: ApiProblemResponseDto;
7769
8522
  };
7770
8523
  };
7771
8524
  };
@@ -7822,6 +8575,54 @@ type $OpenApiTs = {
7822
8575
  };
7823
8576
  };
7824
8577
  };
8578
+ '/api/v1/{region}/bean/external-account-links': {
8579
+ post: {
8580
+ req: ExternalAccountLinkControllerCreateData;
8581
+ res: {
8582
+ /**
8583
+ * Link created.
8584
+ */
8585
+ 201: ExternalAccountLinkResponseDto;
8586
+ /**
8587
+ * beanAccountId not owned, or an active link already exists.
8588
+ */
8589
+ 422: unknown;
8590
+ };
8591
+ };
8592
+ get: {
8593
+ req: ExternalAccountLinkControllerFindAllData;
8594
+ res: {
8595
+ /**
8596
+ * Links retrieved.
8597
+ */
8598
+ 200: ExternalAccountLinkListResponseDto;
8599
+ };
8600
+ };
8601
+ };
8602
+ '/api/v1/{region}/bean/external-account-links/{id}': {
8603
+ get: {
8604
+ req: ExternalAccountLinkControllerFindOneData;
8605
+ res: {
8606
+ /**
8607
+ * Link retrieved.
8608
+ */
8609
+ 200: ExternalAccountLinkResponseDto;
8610
+ /**
8611
+ * Link not found or not owned by the user.
8612
+ */
8613
+ 422: unknown;
8614
+ };
8615
+ };
8616
+ delete: {
8617
+ req: ExternalAccountLinkControllerRemoveData;
8618
+ res: {
8619
+ /**
8620
+ * Link soft-deleted; historical transactions are unaffected.
8621
+ */
8622
+ 204: void;
8623
+ };
8624
+ };
8625
+ };
7825
8626
  '/api/v1/{region}/bean/import/parser-telemetry': {
7826
8627
  post: {
7827
8628
  req: TelemetryControllerReportTelemetryData;
@@ -7910,185 +8711,101 @@ type $OpenApiTs = {
7910
8711
  };
7911
8712
  };
7912
8713
  };
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': {
8714
+ '/api/v1/bean/platforms': {
7982
8715
  get: {
7983
- req: HoldingPnlControllerGetHoldingPnlData;
7984
8716
  res: {
7985
8717
  /**
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
8718
+ * List of platforms with binding and account counts
7995
8719
  */
7996
- 401: unknown;
8720
+ 200: unknown;
7997
8721
  };
7998
8722
  };
7999
- };
8000
- '/api/v1/{region}/bean/prices': {
8001
8723
  post: {
8002
- req: PriceControllerCreateData;
8724
+ req: PlatformControllerCreateData;
8003
8725
  res: {
8004
8726
  /**
8005
- * Price created successfully
8006
- */
8007
- 201: PriceResponseDto;
8008
- /**
8009
- * Currency or quoteCurrency commodity not found
8727
+ * Platform created successfully
8010
8728
  */
8011
- 404: unknown;
8729
+ 201: unknown;
8012
8730
  /**
8013
- * Price already exists for this currency pair and date
8731
+ * Platform already exists
8014
8732
  */
8015
8733
  409: unknown;
8016
8734
  };
8017
8735
  };
8736
+ };
8737
+ '/api/v1/bean/platforms/list': {
8018
8738
  get: {
8019
- req: PriceControllerFindAllData;
8020
8739
  res: {
8021
8740
  /**
8022
- * Prices retrieved successfully
8741
+ * List of platforms with user binding status
8023
8742
  */
8024
- 200: PriceListResponseDto;
8743
+ 200: Array<PlatformListItemDto>;
8025
8744
  };
8026
8745
  };
8027
8746
  };
8028
- '/api/v1/{region}/bean/prices/{id}': {
8747
+ '/api/v1/bean/platforms/match': {
8029
8748
  get: {
8030
- req: PriceControllerFindOneData;
8749
+ req: PlatformControllerMatchPlatformsData;
8031
8750
  res: {
8032
8751
  /**
8033
- * Price retrieved successfully
8034
- */
8035
- 200: PriceResponseDto;
8036
- /**
8037
- * Price not found
8752
+ * Matching platforms with overall match type and truncation flag
8038
8753
  */
8039
- 404: unknown;
8754
+ 200: PlatformMatchResponseDto;
8040
8755
  };
8041
8756
  };
8757
+ };
8758
+ '/api/v1/bean/platforms/{id}': {
8042
8759
  put: {
8043
- req: PriceControllerUpdateData;
8760
+ req: PlatformControllerUpdateData;
8044
8761
  res: {
8045
8762
  /**
8046
- * Price updated successfully
8763
+ * Platform updated successfully
8047
8764
  */
8048
- 200: PriceResponseDto;
8765
+ 200: unknown;
8049
8766
  /**
8050
- * Price not found
8767
+ * Platform not found
8051
8768
  */
8052
8769
  404: unknown;
8053
- /**
8054
- * Updated price conflicts with existing price
8055
- */
8056
- 409: unknown;
8057
8770
  };
8058
8771
  };
8059
8772
  delete: {
8060
- req: PriceControllerDeleteData;
8773
+ req: PlatformControllerDeleteData;
8061
8774
  res: {
8062
8775
  /**
8063
- * Price deleted successfully
8776
+ * Platform deleted successfully
8064
8777
  */
8065
8778
  204: void;
8066
8779
  /**
8067
- * Price not found
8780
+ * Platform not found
8068
8781
  */
8069
8782
  404: unknown;
8070
8783
  };
8071
8784
  };
8072
8785
  };
8073
- '/api/v1/{region}/bean/prices/bulk': {
8074
- post: {
8075
- req: PriceControllerBulkCreateData;
8786
+ '/api/v1/{region}/dashboard/net-worth': {
8787
+ get: {
8788
+ req: DashboardControllerGetNetWorthData;
8076
8789
  res: {
8077
8790
  /**
8078
- * Prices created successfully
8791
+ * Net worth retrieved successfully
8079
8792
  */
8080
- 201: Array<PriceResponseDto>;
8793
+ 200: NetWorthResponseDto;
8794
+ /**
8795
+ * User not authenticated
8796
+ */
8797
+ 401: unknown;
8081
8798
  };
8082
8799
  };
8083
8800
  };
8084
- '/api/v1/{region}/reporting/portfolio/trends': {
8801
+ '/api/v1/{region}/dashboard/accounts': {
8085
8802
  get: {
8086
- req: ReportingControllerGetPortfolioTrendsData;
8803
+ req: DashboardControllerGetAccountsData;
8087
8804
  res: {
8088
8805
  /**
8089
- * Trends retrieved successfully
8806
+ * Accounts retrieved successfully. Response type depends on groupBy parameter.
8090
8807
  */
8091
- 200: PortfolioTrendsResponseDto;
8808
+ 200: AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
8092
8809
  /**
8093
8810
  * User not authenticated
8094
8811
  */
@@ -8096,14 +8813,18 @@ type $OpenApiTs = {
8096
8813
  };
8097
8814
  };
8098
8815
  };
8099
- '/api/v1/{region}/reporting/cash-flow/trends': {
8816
+ '/api/v1/{region}/dashboard/cash-flow': {
8100
8817
  get: {
8101
- req: ReportingControllerGetCashFlowTrendsData;
8818
+ req: DashboardControllerGetCashFlowData;
8102
8819
  res: {
8103
8820
  /**
8104
- * Cash-flow trends retrieved successfully
8821
+ * Cash flow retrieved successfully
8105
8822
  */
8106
- 200: CashFlowTrendsResponseDto;
8823
+ 200: CashFlowResponseDto;
8824
+ /**
8825
+ * Invalid period format
8826
+ */
8827
+ 400: unknown;
8107
8828
  /**
8108
8829
  * User not authenticated
8109
8830
  */
@@ -8111,16 +8832,16 @@ type $OpenApiTs = {
8111
8832
  };
8112
8833
  };
8113
8834
  };
8114
- '/api/v1/{region}/reporting/snapshots/generate': {
8115
- post: {
8116
- req: ReportingControllerGenerateSnapshotData;
8835
+ '/api/v1/{region}/dashboard/expenses': {
8836
+ get: {
8837
+ req: DashboardControllerGetExpensesData;
8117
8838
  res: {
8118
8839
  /**
8119
- * Snapshot generated successfully
8840
+ * Expenses retrieved successfully
8120
8841
  */
8121
- 200: GenerateSnapshotResponse;
8842
+ 200: ExpensesByCategoryResponseDto;
8122
8843
  /**
8123
- * Invalid date format
8844
+ * Invalid groupBy or period
8124
8845
  */
8125
8846
  400: unknown;
8126
8847
  /**
@@ -8130,26 +8851,22 @@ type $OpenApiTs = {
8130
8851
  };
8131
8852
  };
8132
8853
  };
8133
- '/api/v1/{region}/reporting/snapshots/backfill': {
8134
- post: {
8135
- req: ReportingControllerBackfillSnapshotsData;
8854
+ '/api/v1/{region}/investment/holdings/pnl': {
8855
+ get: {
8856
+ req: HoldingPnlControllerGetHoldingPnlData;
8136
8857
  res: {
8137
8858
  /**
8138
- * Backfill completed successfully
8859
+ * Holding P&L retrieved successfully
8139
8860
  */
8140
- 200: BackfillSnapshotsResponse;
8861
+ 200: HoldingPnlResponseDto;
8141
8862
  /**
8142
- * Invalid date format or range
8863
+ * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
8143
8864
  */
8144
8865
  400: unknown;
8145
8866
  /**
8146
8867
  * User not authenticated
8147
8868
  */
8148
8869
  401: unknown;
8149
- /**
8150
- * Backfill already in progress for this user
8151
- */
8152
- 409: unknown;
8153
8870
  };
8154
8871
  };
8155
8872
  };
@@ -8174,7 +8891,7 @@ type $OpenApiTs = {
8174
8891
  /**
8175
8892
  * Login successful
8176
8893
  */
8177
- 200: unknown;
8894
+ 200: AnonymousLoginResponseDto;
8178
8895
  /**
8179
8896
  * Invalid access token
8180
8897
  */
@@ -8321,6 +9038,32 @@ type $OpenApiTs = {
8321
9038
  };
8322
9039
  };
8323
9040
  };
9041
+ '/api/v1/market/symbols/search': {
9042
+ get: {
9043
+ req: SymbolControllerSearchData;
9044
+ res: {
9045
+ /**
9046
+ * Ranked search results
9047
+ */
9048
+ 200: Array<SymbolSearchResultDto>;
9049
+ };
9050
+ };
9051
+ };
9052
+ '/api/v1/market/symbols/{symbol}/quote': {
9053
+ get: {
9054
+ req: SymbolControllerGetQuoteData;
9055
+ res: {
9056
+ /**
9057
+ * Symbol quote
9058
+ */
9059
+ 200: SymbolQuoteDto;
9060
+ /**
9061
+ * Symbol not found in the openbb catalog
9062
+ */
9063
+ 404: unknown;
9064
+ };
9065
+ };
9066
+ };
8324
9067
  };
8325
9068
 
8326
9069
  declare class BeanAccountsService {
@@ -8342,7 +9085,7 @@ declare class BeanAccountsService {
8342
9085
  * @param data.type Filter by account type
8343
9086
  * @param data.status Filter by status
8344
9087
  * @param data.isCustom Filter by custom (user-created) accounts only
8345
- * @param data.search Search term for path or i18nKey
9088
+ * @param data.search Search term for account path
8346
9089
  * @param data.limit Maximum number of results
8347
9090
  * @param data.offset Number of results to skip
8348
9091
  * @returns AccountListResponseDto Accounts retrieved successfully
@@ -8372,7 +9115,7 @@ declare class BeanAccountsService {
8372
9115
  static accountControllerUpdate(data: AccountControllerUpdateData): CancelablePromise<AccountControllerUpdateResponse>;
8373
9116
  /**
8374
9117
  * Delete account
8375
- * Deletes an account (only if no transactions)
9118
+ * Deletes an account (only if no active transactions; voided/superseded residual postings are cleaned up)
8376
9119
  * @param data The data for the request.
8377
9120
  * @param data.id Account UUID
8378
9121
  * @param data.region Region code for tenant context
@@ -8402,6 +9145,17 @@ declare class BeanAccountsService {
8402
9145
  * @throws ApiError
8403
9146
  */
8404
9147
  static accountControllerReopen(data: AccountControllerReopenData): CancelablePromise<AccountControllerReopenResponse>;
9148
+ /**
9149
+ * Post an opening-balance transaction
9150
+ * 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.
9151
+ * @param data The data for the request.
9152
+ * @param data.id Account UUID
9153
+ * @param data.region Region code for tenant context
9154
+ * @param data.requestBody
9155
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
9156
+ * @throws ApiError
9157
+ */
9158
+ static accountControllerAddOpeningBalance(data: AccountControllerAddOpeningBalanceData): CancelablePromise<AccountControllerAddOpeningBalanceResponse>;
8405
9159
  }
8406
9160
  declare class BeanTransactionsService {
8407
9161
  /**
@@ -8503,7 +9257,7 @@ declare class BeanBalancesService {
8503
9257
  * Query account balance
8504
9258
  * Calculate account balance at a specific date for a single currency
8505
9259
  * @param data The data for the request.
8506
- * @param data.account Account name (e.g., "Assets:Bank:Checking")
9260
+ * @param data.account Account name (e.g., "Assets:Checking")
8507
9261
  * @param data.region Region code for tenant context
8508
9262
  * @param data.date Date to calculate balance at (ISO 8601 format)
8509
9263
  * @param data.currency Currency to query (e.g., "USD", "CNY")
@@ -8733,4 +9487,4 @@ type OpenAPIConfig = {
8733
9487
  };
8734
9488
  declare const OpenAPI: OpenAPIConfig;
8735
9489
 
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 };
9490
+ 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 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 };